{"version":3,"file":"forum.js.map","sourceRoot":"","sources":["webpack://@flarum/core/./src/common/utils/arrayFlatPolyfill.ts","webpack://@flarum/core/../../../node_modules/bootstrap/js/affix.js","webpack://@flarum/core/../../../node_modules/bootstrap/js/dropdown.js","webpack://@flarum/core/../../../node_modules/bootstrap/js/tooltip.js","webpack://@flarum/core/../../../node_modules/bootstrap/js/transition.js","webpack://@flarum/core/../../../node_modules/color-thief-browser/dist/color-thief.min.js","webpack://@flarum/core/../../../node_modules/dayjs/dayjs.min.js","webpack://@flarum/core/../../../node_modules/dayjs/plugin/localizedFormat.js","webpack://@flarum/core/../../../node_modules/dayjs/plugin/relativeTime.js","webpack://@flarum/core/../../../node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://@flarum/core/../../../node_modules/jquery.hotkeys/jquery.hotkeys.js","webpack://@flarum/core/../../../node_modules/jquery/dist/jquery.js","webpack://@flarum/core/../../../node_modules/mithril/api/mount-redraw.js","webpack://@flarum/core/../../../node_modules/mithril/api/router.js","webpack://@flarum/core/../../../node_modules/mithril/hyperscript.js","webpack://@flarum/core/../../../node_modules/mithril/index.js","webpack://@flarum/core/../../../node_modules/mithril/mount-redraw.js","webpack://@flarum/core/../../../node_modules/mithril/pathname/assign.js","webpack://@flarum/core/../../../node_modules/mithril/pathname/build.js","webpack://@flarum/core/../../../node_modules/mithril/pathname/compileTemplate.js","webpack://@flarum/core/../../../node_modules/mithril/pathname/parse.js","webpack://@flarum/core/../../../node_modules/mithril/promise/polyfill.js","webpack://@flarum/core/../../../node_modules/mithril/promise/promise.js","webpack://@flarum/core/../../../node_modules/mithril/querystring/build.js","webpack://@flarum/core/../../../node_modules/mithril/querystring/parse.js","webpack://@flarum/core/../../../node_modules/mithril/render.js","webpack://@flarum/core/../../../node_modules/mithril/render/fragment.js","webpack://@flarum/core/../../../node_modules/mithril/render/hyperscript.js","webpack://@flarum/core/../../../node_modules/mithril/render/hyperscriptVnode.js","webpack://@flarum/core/../../../node_modules/mithril/render/render.js","webpack://@flarum/core/../../../node_modules/mithril/render/trust.js","webpack://@flarum/core/../../../node_modules/mithril/render/vnode.js","webpack://@flarum/core/../../../node_modules/mithril/request.js","webpack://@flarum/core/../../../node_modules/mithril/request/request.js","webpack://@flarum/core/../../../node_modules/mithril/route.js","webpack://@flarum/core/../../../node_modules/mithril/stream.js","webpack://@flarum/core/../../../node_modules/mithril/stream/stream.js","webpack://@flarum/core/../../../node_modules/punycode/punycode.es6.js","webpack://@flarum/core/../../../node_modules/textarea-caret/index.js","webpack://@flarum/core/../../../node_modules/jquery/dist/jquery-exposed.js","webpack://@flarum/core/../../../node_modules/color-thief-browser/dist/color-thief.min-exposed.js","webpack://@flarum/core/../../../node_modules/dayjs/dayjs.min-exposed.js","webpack://@flarum/core/../../../node_modules/mithril/index-exposed.js","webpack://@flarum/core/../../../node_modules/punycode/punycode.es6-exposed.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/createClass.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/defineProperty.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/inherits.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/typeof.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/regenerator/index.js","webpack://@flarum/core/webpack/bootstrap","webpack://@flarum/core/webpack/runtime/compat get default export","webpack://@flarum/core/webpack/runtime/define property getters","webpack://@flarum/core/webpack/runtime/global","webpack://@flarum/core/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/core/webpack/runtime/make namespace object","webpack://@flarum/core/./src/common/utils/bidi.js","webpack://@flarum/core/./src/common/utils/patchMithril.js","webpack://@flarum/core/./src/common/app.ts","webpack://@flarum/core/./src/common/index.ts","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/core/./src/common/utils/setRouteWithForcedRefresh.ts","webpack://@flarum/core/./src/forum/utils/History.ts","webpack://@flarum/core/./src/forum/utils/Pane.js","webpack://@flarum/core/./src/common/Component.ts","webpack://@flarum/core/./src/common/utils/subclassOf.js","webpack://@flarum/core/./src/common/states/PageState.js","webpack://@flarum/core/./src/common/components/Page.tsx","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/core/./src/common/utils/isObject.ts","webpack://@flarum/core/./src/common/utils/ItemList.ts","webpack://@flarum/core/./src/common/components/Separator.js","webpack://@flarum/core/../../../node_modules/clsx/dist/clsx.m.js","webpack://@flarum/core/./src/common/utils/classList.ts","webpack://@flarum/core/./src/common/helpers/listItems.tsx","webpack://@flarum/core/./src/forum/components/DiscussionHero.js","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/core/./src/common/utils/extract.ts","webpack://@flarum/core/./src/common/utils/string.ts","webpack://@flarum/core/./src/common/components/Link.js","webpack://@flarum/core/./src/common/helpers/avatar.tsx","webpack://@flarum/core/./src/common/helpers/highlight.tsx","webpack://@flarum/core/./src/common/helpers/icon.tsx","webpack://@flarum/core/./src/common/utils/humanTime.ts","webpack://@flarum/core/./src/common/utils/extractText.ts","webpack://@flarum/core/./src/common/utils/abbreviateNumber.ts","webpack://@flarum/core/./src/common/components/Dropdown.tsx","webpack://@flarum/core/./src/common/helpers/humanTime.tsx","webpack://@flarum/core/./src/forum/components/TerminalPost.js","webpack://@flarum/core/./src/common/utils/SubtreeRetainer.ts","webpack://@flarum/core/./src/common/components/LoadingIndicator.tsx","webpack://@flarum/core/./src/common/components/ConfirmDocumentUnload.js","webpack://@flarum/core/./src/common/helpers/fireDebugWarning.ts","webpack://@flarum/core/./src/common/components/Button.tsx","webpack://@flarum/core/./src/common/utils/insertText.ts","webpack://@flarum/core/./src/common/utils/BasicEditorDriver.ts","webpack://@flarum/core/./src/common/components/Tooltip.tsx","webpack://@flarum/core/./src/common/components/TextEditor.js","webpack://@flarum/core/./src/forum/components/ComposerBody.js","webpack://@flarum/core/./src/forum/components/ReplyComposer.js","webpack://@flarum/core/./src/common/components/Alert.tsx","webpack://@flarum/core/./src/common/components/Modal.tsx","webpack://@flarum/core/./src/common/utils/Stream.ts","webpack://@flarum/core/./src/forum/components/ForgotPasswordModal.tsx","webpack://@flarum/core/./src/forum/components/LogInButtons.js","webpack://@flarum/core/./src/forum/components/SignUpModal.tsx","webpack://@flarum/core/./src/forum/components/LogInModal.tsx","webpack://@flarum/core/./src/forum/components/RenameDiscussionModal.tsx","webpack://@flarum/core/./src/forum/utils/DiscussionControls.js","webpack://@flarum/core/./src/forum/utils/slidable.js","webpack://@flarum/core/./src/common/utils/escapeRegExp.ts","webpack://@flarum/core/./src/forum/components/DiscussionListItem.tsx","webpack://@flarum/core/./src/common/components/Placeholder.js","webpack://@flarum/core/./src/forum/components/DiscussionList.js","webpack://@flarum/core/./src/forum/components/DiscussionListPane.js","webpack://@flarum/core/./src/common/utils/ScrollListener.js","webpack://@flarum/core/./src/forum/components/LoadingPost.js","webpack://@flarum/core/./src/common/helpers/username.tsx","webpack://@flarum/core/./src/forum/components/ComposerPostPreview.js","webpack://@flarum/core/./src/forum/components/ReplyPlaceholder.js","webpack://@flarum/core/./src/forum/components/PostStream.js","webpack://@flarum/core/./src/common/utils/formatNumber.ts","webpack://@flarum/core/./src/forum/components/PostStreamScrubber.js","webpack://@flarum/core/./src/common/components/SplitDropdown.tsx","webpack://@flarum/core/../throttle.js","webpack://@flarum/core/../debounce.js","webpack://@flarum/core/./src/common/utils/anchorScroll.js","webpack://@flarum/core/./src/forum/states/PostStreamState.ts","webpack://@flarum/core/./src/forum/components/DiscussionPage.tsx","webpack://@flarum/core/./src/forum/components/HeaderPrimary.js","webpack://@flarum/core/./src/common/components/LinkButton.js","webpack://@flarum/core/./src/forum/components/SessionDropdown.tsx","webpack://@flarum/core/./src/common/components/SelectDropdown.tsx","webpack://@flarum/core/./src/common/Model.ts","webpack://@flarum/core/./src/common/utils/computed.ts","webpack://@flarum/core/./src/common/utils/isDark.ts","webpack://@flarum/core/./src/common/helpers/textContrastClass.ts","webpack://@flarum/core/./src/common/utils/KeyboardNavigatable.ts","webpack://@flarum/core/./src/common/components/Badge.tsx","webpack://@flarum/core/./src/common/models/Discussion.tsx","webpack://@flarum/core/./src/forum/components/NotificationList.js","webpack://@flarum/core/./src/forum/components/NotificationsDropdown.tsx","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@flarum/core/./src/forum/components/DiscussionsSearchSource.tsx","webpack://@flarum/core/./src/forum/components/UsersSearchSource.tsx","webpack://@flarum/core/./src/forum/components/Search.tsx","webpack://@flarum/core/./src/forum/components/HeaderSecondary.js","webpack://@flarum/core/./src/forum/components/ComposerButton.js","webpack://@flarum/core/./src/forum/states/ComposerState.js","webpack://@flarum/core/./src/forum/components/Composer.js","webpack://@flarum/core/./src/forum/components/Notification.tsx","webpack://@flarum/core/./src/forum/components/DiscussionRenamedNotification.tsx","webpack://@flarum/core/./src/forum/components/EditPostComposer.js","webpack://@flarum/core/./src/forum/utils/PostControls.js","webpack://@flarum/core/./src/forum/components/Post.tsx","webpack://@flarum/core/./src/common/components/GroupBadge.tsx","webpack://@flarum/core/./src/common/models/Group.ts","webpack://@flarum/core/./src/common/components/EditUserModal.tsx","webpack://@flarum/core/./src/forum/components/AffixedSidebar.js","webpack://@flarum/core/./src/forum/components/UserPage.tsx","webpack://@flarum/core/./src/forum/utils/UserControls.js","webpack://@flarum/core/./src/forum/components/AvatarEditor.js","webpack://@flarum/core/./src/forum/components/UserCard.js","webpack://@flarum/core/./src/common/helpers/userOnline.tsx","webpack://@flarum/core/./src/forum/components/PostUser.js","webpack://@flarum/core/./src/common/helpers/fullTime.tsx","webpack://@flarum/core/./src/forum/components/PostMeta.js","webpack://@flarum/core/./src/forum/components/PostEdited.js","webpack://@flarum/core/./src/forum/components/CommentPost.js","webpack://@flarum/core/./src/forum/components/EventPost.js","webpack://@flarum/core/./src/forum/components/DiscussionRenamedPost.js","webpack://@flarum/core/./src/forum/components/WelcomeHero.tsx","webpack://@flarum/core/./src/forum/components/DiscussionComposer.js","webpack://@flarum/core/./src/forum/components/IndexPage.tsx","webpack://@flarum/core/./src/forum/components/PostsUserPage.tsx","webpack://@flarum/core/./src/common/states/PaginatedListState.ts","webpack://@flarum/core/./src/common/utils/EventEmitter.ts","webpack://@flarum/core/./src/forum/states/DiscussionListState.ts","webpack://@flarum/core/./src/forum/components/DiscussionsUserPage.tsx","webpack://@flarum/core/./src/common/utils/withAttr.ts","webpack://@flarum/core/./src/common/components/Checkbox.tsx","webpack://@flarum/core/./src/common/components/Switch.tsx","webpack://@flarum/core/./src/common/components/FieldSet.js","webpack://@flarum/core/./src/forum/components/NotificationGrid.js","webpack://@flarum/core/./src/forum/components/ChangePasswordModal.tsx","webpack://@flarum/core/./src/forum/components/ChangeEmailModal.tsx","webpack://@flarum/core/./src/forum/components/SettingsPage.tsx","webpack://@flarum/core/./src/forum/components/NotificationsPage.tsx","webpack://@flarum/core/./src/common/resolvers/DefaultResolver.ts","webpack://@flarum/core/./src/forum/resolvers/DiscussionPageResolver.ts","webpack://@flarum/core/./src/common/components/LabelValue.tsx","webpack://@flarum/core/./src/forum/components/AccessTokensList.tsx","webpack://@flarum/core/./src/forum/components/NewAccessTokenModal.tsx","webpack://@flarum/core/./src/forum/states/UserSecurityPageState.ts","webpack://@flarum/core/./src/forum/components/UserSecurityPage.tsx","webpack://@flarum/core/./src/forum/routes.ts","webpack://@flarum/core/./src/forum/utils/alertEmailConfirmation.js","webpack://@flarum/core/../src/index.js","webpack://@flarum/core/../index.js","webpack://@flarum/core/./src/common/utils/focusTrap.ts","webpack://@flarum/core/../../../node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://@flarum/core/../source/pluralTypeHandler.js","webpack://@flarum/core/./src/common/components/ModalManager.tsx","webpack://@flarum/core/./src/common/components/AlertManager.tsx","webpack://@flarum/core/./src/common/components/RequestErrorModal.tsx","webpack://@flarum/core/array-utils.js","webpack://@flarum/core/function-utils.js","webpack://@flarum/core/../source/utilities.js","webpack://@flarum/core/../source/selectTypeHandler.js","webpack://@flarum/core/../source/defaultRichHandler.js","webpack://@flarum/core/../source/RichMessageFormatter.js","webpack://@flarum/core/../source/MessageFormatter.js","webpack://@flarum/core/../source/mithrilRichHandler.js","webpack://@flarum/core/./src/common/Translator.tsx","webpack://@flarum/core/./src/common/Store.ts","webpack://@flarum/core/./src/common/Session.ts","webpack://@flarum/core/./src/common/utils/Drawer.js","webpack://@flarum/core/./src/common/utils/mapRoutes.ts","webpack://@flarum/core/./src/common/utils/RequestError.ts","webpack://@flarum/core/./src/common/utils/liveHumanTimes.ts","webpack://@flarum/core/./src/common/extend.ts","webpack://@flarum/core/./src/common/models/Forum.ts","webpack://@flarum/core/./src/common/utils/stringToColor.ts","webpack://@flarum/core/./src/common/models/User.tsx","webpack://@flarum/core/./src/common/models/Post.ts","webpack://@flarum/core/./src/common/models/Notification.ts","webpack://@flarum/core/./src/common/states/ModalManagerState.ts","webpack://@flarum/core/./src/common/states/AlertManagerState.ts","webpack://@flarum/core/./src/common/models/AccessToken.ts","webpack://@flarum/core/./src/common/Application.tsx","webpack://@flarum/core/./src/common/helpers/fireApplicationError.ts","webpack://@flarum/core/./src/common/components/Navigation.tsx","webpack://@flarum/core/./src/forum/states/NotificationListState.ts","webpack://@flarum/core/./src/forum/states/SearchState.ts","webpack://@flarum/core/./src/forum/states/GlobalSearchState.ts","webpack://@flarum/core/./src/forum/utils/isSafariMobile.ts","webpack://@flarum/core/./src/forum/ForumApplication.tsx","webpack://@flarum/core/./src/forum/app.ts","webpack://@flarum/core/./src/common/extenders/Model.ts","webpack://@flarum/core/./src/common/extenders/PostTypes.ts","webpack://@flarum/core/./src/common/extenders/Routes.ts","webpack://@flarum/core/./src/common/extenders/Store.ts","webpack://@flarum/core/./src/common/extenders/index.ts","webpack://@flarum/core/./src/common/utils/evented.js","webpack://@flarum/core/./src/common/utils/styleSelectedText.ts","webpack://@flarum/core/./src/common/utils/proxifyCompat.ts","webpack://@flarum/core/../../../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js","webpack://@flarum/core/./src/common/components/Select.js","webpack://@flarum/core/./src/common/components/ColorPreviewInput.tsx","webpack://@flarum/core/./src/common/components/TextEditorButton.js","webpack://@flarum/core/./src/common/compat.ts","webpack://@flarum/core/./src/common/utils/mixin.js","webpack://@flarum/core/./src/common/Fragment.ts","webpack://@flarum/core/./src/common/helpers/punctuateSeries.js","webpack://@flarum/core/./src/forum/components/LogInButton.js","webpack://@flarum/core/./src/forum/components/PostPreview.js","webpack://@flarum/core/./src/forum/compat.ts","webpack://@flarum/core/./src/forum/index.ts","webpack://@flarum/flags/webpack/bootstrap","webpack://@flarum/flags/webpack/runtime/compat get default export","webpack://@flarum/flags/webpack/runtime/define property getters","webpack://@flarum/flags/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/flags/webpack/runtime/make namespace object","webpack://@flarum/flags/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/flags/./src/forum/states/FlagListState.js","webpack://@flarum/flags/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/flags/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/flags/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/flags/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/withAttr']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/flags/./src/forum/components/FlagPostModal.js","webpack://@flarum/flags/./src/forum/addFlagControl.js","webpack://@flarum/flags/external root \"flarum.core.compat['forum/components/HeaderSecondary']\"","webpack://@flarum/flags/external root \"flarum.core.compat['forum/components/NotificationsDropdown']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/flags/./src/forum/components/FlagList.js","webpack://@flarum/flags/./src/forum/components/FlagsDropdown.js","webpack://@flarum/flags/./src/forum/addFlagsDropdown.js","webpack://@flarum/flags/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/utils/humanTime']\"","webpack://@flarum/flags/./src/forum/addFlagsToPosts.js","webpack://@flarum/flags/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/flags/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/flags/external root \"flarum.core.compat['components/Page']\"","webpack://@flarum/flags/./src/forum/components/FlagsPage.js","webpack://@flarum/flags/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/flags/./src/forum/models/Flag.ts","webpack://@flarum/flags/./src/forum/extend.ts","webpack://@flarum/flags/./src/forum/compat.js","webpack://@flarum/flags/external assign \"flarum.core\"","webpack://@flarum/flags/./src/forum/index.ts","webpack://@flarum/tags/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/app']\"","webpack://@flarum/tags/./src/common/states/TagListState.ts","webpack://@flarum/tags/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Separator']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/tags/./src/common/helpers/tagIcon.js","webpack://@flarum/tags/./src/forum/components/TagLinkButton.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Page']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/textContrastClass']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extract']\"","webpack://@flarum/tags/./src/common/helpers/tagLabel.js","webpack://@flarum/tags/./src/common/utils/sortTags.tsx","webpack://@flarum/tags/./src/forum/components/TagsPage.js","webpack://@flarum/tags/./src/forum/addTagList.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/tags/./src/forum/components/TagHero.js","webpack://@flarum/tags/./src/forum/addTagFilter.tsx","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionHero']\"","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/tags/./src/common/helpers/tagsLabel.js","webpack://@flarum/tags/./src/forum/addTagLabels.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/tags/./src/forum/utils/getSelectableTags.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/tags/./src/forum/components/ToggleButton.js","webpack://@flarum/tags/./src/common/components/TagSelectionModal.tsx","webpack://@flarum/tags/./src/forum/components/TagDiscussionModal.tsx","webpack://@flarum/tags/./src/forum/addTagControl.js","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@flarum/tags/./src/forum/addTagComposer.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/tags/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/tags/./src/forum/components/DiscussionTaggedPost.js","webpack://@flarum/tags/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@flarum/tags/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/tags/./src/common/models/Tag.ts","webpack://@flarum/tags/./src/common/extend.ts","webpack://@flarum/tags/./src/forum/extend.ts","webpack://@flarum/tags/./src/common/compat.js","webpack://@flarum/tags/./src/forum/compat.js","webpack://@flarum/tags/external assign \"flarum.core\"","webpack://@flarum/tags/./src/forum/index.ts","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/helpers/typeof.js","webpack://@flarum/tags/../../../node_modules/@babel/runtime/regenerator/index.js","webpack://@flarum/tags/webpack/bootstrap","webpack://@flarum/tags/webpack/runtime/compat get default export","webpack://@flarum/tags/webpack/runtime/define property getters","webpack://@flarum/tags/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/tags/webpack/runtime/make namespace object","webpack://@flarum/approval/webpack/bootstrap","webpack://@flarum/approval/webpack/runtime/compat get default export","webpack://@flarum/approval/webpack/runtime/define property getters","webpack://@flarum/approval/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/approval/webpack/runtime/make namespace object","webpack://@flarum/approval/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/approval/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/approval/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/approval/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/approval/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/approval/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@flarum/approval/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@flarum/approval/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/approval/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/approval/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@flarum/approval/./src/forum/index.js","webpack://@flarum/suspend/../../../node_modules/dayjs/dayjs.min.js","webpack://@flarum/suspend/../../../node_modules/dayjs/plugin/utc.js","webpack://@flarum/suspend/webpack/bootstrap","webpack://@flarum/suspend/webpack/runtime/compat get default export","webpack://@flarum/suspend/webpack/runtime/define property getters","webpack://@flarum/suspend/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/suspend/webpack/runtime/make namespace object","webpack://@flarum/suspend/external root \"flarum.core.compat['extend']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['app']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['utils/UserControls']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['components/Button']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['components/Badge']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['models/User']\"","webpack://@flarum/suspend/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/suspend/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/suspend/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['components/Modal']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['utils/Stream']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['utils/withAttr']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/suspend/./src/forum/helpers/suspensionHelper.ts","webpack://@flarum/suspend/./src/forum/components/SuspendUserModal.js","webpack://@flarum/suspend/external root \"flarum.core.compat['components/Notification']\"","webpack://@flarum/suspend/./src/forum/components/UserSuspendedNotification.js","webpack://@flarum/suspend/./src/forum/components/UserUnsuspendedNotification.js","webpack://@flarum/suspend/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['common/helpers/fullTime']\"","webpack://@flarum/suspend/./src/forum/components/SuspensionInfoModal.js","webpack://@flarum/suspend/./src/forum/checkForSuspension.js","webpack://@flarum/suspend/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['common/models/User']\"","webpack://@flarum/suspend/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/suspend/./src/forum/extend.ts","webpack://@flarum/suspend/./src/forum/compat.js","webpack://@flarum/suspend/external assign \"flarum.core\"","webpack://@flarum/suspend/./src/forum/index.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/typeof.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/regenerator/index.js","webpack://@flarum/mentions/webpack/bootstrap","webpack://@flarum/mentions/webpack/runtime/compat get default export","webpack://@flarum/mentions/webpack/runtime/define property getters","webpack://@flarum/mentions/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/mentions/webpack/runtime/make namespace object","webpack://@flarum/mentions/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/textContrastClass']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/PostPreview']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/states/PaginatedListState']\"","webpack://@flarum/mentions/./src/forum/state/MentionedByModalState.ts","webpack://@flarum/mentions/./src/forum/components/MentionedByModal.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/EditPostComposer']\"","webpack://@flarum/mentions/./src/forum/utils/reply.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Fragment']\"","webpack://@flarum/mentions/./src/forum/fragments/PostQuoteButton.js","webpack://@flarum/mentions/./src/forum/utils/selectedText.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/TextEditor']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/TextEditorButton']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/mentions/./src/forum/fragments/AutocompleteDropdown.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@flarum/mentions/../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/mentions/./src/forum/components/MentionsDropdownItem.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/throttleDebounce']\"","webpack://@flarum/mentions/./src/forum/mentionables/MentionableModels.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/mentions/./src/forum/components/PostMentionedNotification.js","webpack://@flarum/mentions/./src/forum/components/UserMentionedNotification.js","webpack://@flarum/mentions/./src/forum/components/GroupMentionedNotification.js","webpack://@flarum/mentions/./src/forum/mentionables/formats/MentionFormat.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/helpers/highlight']\"","webpack://@flarum/mentions/./src/forum/mentionables/MentionableModel.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/mentions/./src/forum/utils/getCleanDisplayName.js","webpack://@flarum/mentions/./src/forum/mentionables/UserMention.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/ReplyComposer']\"","webpack://@flarum/mentions/./src/forum/mentionables/PostMention.tsx","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Group']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/mentions/./src/forum/mentionables/GroupMention.tsx","webpack://@flarum/mentions/./src/forum/mentionables/formats/AtMentionFormat.ts","webpack://@flarum/mentions/./src/forum/mentionables/TagMention.tsx","webpack://@flarum/mentions/./src/forum/mentionables/formats/HashMentionFormat.ts","webpack://@flarum/mentions/./src/forum/mentionables/formats/MentionFormats.ts","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/User']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/mentions/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/mentions/./src/forum/components/MentionsUserPage.js","webpack://@flarum/mentions/./src/forum/extend.ts","webpack://@flarum/mentions/./src/forum/utils/textFormatter.js","webpack://@flarum/mentions/./src/forum/compat.js","webpack://@flarum/mentions/./src/forum/utils/getMentionText.js","webpack://@flarum/mentions/./src/forum/extenders/Mentionables.ts","webpack://@flarum/mentions/external assign \"flarum.core\"","webpack://@flarum/mentions/./src/forum/index.js","webpack://@flarum/mentions/./src/forum/addComposerAutocomplete.js","webpack://@flarum/mentions/./src/forum/addPostMentionPreviews.js","webpack://@flarum/mentions/./src/forum/addMentionedByList.js","webpack://@flarum/mentions/./src/forum/addPostReplyAction.js","webpack://@flarum/mentions/./src/forum/addPostQuoteButton.js","webpack://@flarum/subscriptions/webpack/bootstrap","webpack://@flarum/subscriptions/webpack/runtime/compat get default export","webpack://@flarum/subscriptions/webpack/runtime/define property getters","webpack://@flarum/subscriptions/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/subscriptions/webpack/runtime/make namespace object","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/Model']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/subscriptions/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/subscriptions/./src/forum/components/SubscriptionMenuItem.js","webpack://@flarum/subscriptions/./src/forum/components/SubscriptionMenu.js","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@flarum/subscriptions/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/subscriptions/./src/forum/components/NewPostNotification.js","webpack://@flarum/subscriptions/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/subscriptions/./src/forum/extend.ts","webpack://@flarum/subscriptions/./src/forum/index.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionBadge.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionControls.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionFilter.js","webpack://@flarum/subscriptions/./src/forum/addSubscriptionSettings.tsx","webpack://@flarum/likes/webpack/bootstrap","webpack://@flarum/likes/webpack/runtime/compat get default export","webpack://@flarum/likes/webpack/runtime/define property getters","webpack://@flarum/likes/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/likes/webpack/runtime/make namespace object","webpack://@flarum/likes/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Link']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@flarum/likes/../../../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@flarum/likes/external root \"flarum.core.compat['common/states/PaginatedListState']\"","webpack://@flarum/likes/./src/forum/states/PostLikesModalState.ts","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@flarum/likes/./src/forum/components/PostLikesModal.tsx","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/likes/./src/forum/components/PostLikedNotification.js","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/likes/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/likes/external root \"flarum.core.compat['forum/components/PostsUserPage']\"","webpack://@flarum/likes/./src/forum/components/LikesUserPage.tsx","webpack://@flarum/likes/./src/forum/extend.ts","webpack://@flarum/likes/./src/forum/index.js","webpack://@flarum/likes/./src/forum/addLikeAction.js","webpack://@flarum/likes/./src/forum/addLikesList.js","webpack://@flarum/likes/./src/forum/addLikesTabToUserProfile.tsx","webpack://@afrux/forum-widgets-core/webpack/bootstrap","webpack://@afrux/forum-widgets-core/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/forum-widgets-core/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/forum-widgets-core/./src/common/utils/sortWidgets.ts","webpack://@afrux/forum-widgets-core/external \"flarum.core.compat['common/Component']\"","webpack://@afrux/forum-widgets-core/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@afrux/forum-widgets-core/external \"flarum.core.compat['common/utils/classList']\"","webpack://@afrux/forum-widgets-core/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@afrux/forum-widgets-core/./src/common/WidgetManager.ts","webpack://@afrux/forum-widgets-core/external \"flarum.core\"","webpack://@afrux/forum-widgets-core/./src/common/extend/Widgets.ts","webpack://@afrux/forum-widgets-core/./src/common/components/Widget.tsx","webpack://@afrux/forum-widgets-core/./src/common/compat.ts","webpack://@afrux/forum-widgets-core/external \"flarum.core.compat['common/extend']\"","webpack://@afrux/forum-widgets-core/external \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@afrux/forum-widgets-core/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@afrux/forum-widgets-core/./src/forum/components/EndWidgetSection.tsx","webpack://@afrux/forum-widgets-core/./src/forum/components/StartTopWidgetSection.tsx","webpack://@afrux/forum-widgets-core/./src/forum/components/StartBottomWidgetSection.tsx","webpack://@afrux/forum-widgets-core/./src/forum/components/TopWidgetSection.tsx","webpack://@afrux/forum-widgets-core/./src/forum/components/BottomWidgetSection.tsx","webpack://@afrux/forum-widgets-core/./src/forum/compat.ts","webpack://@afrux/forum-widgets-core/./src/forum/index.tsx","webpack://@fof/user-directory/webpack/bootstrap","webpack://@fof/user-directory/webpack/runtime/compat get default export","webpack://@fof/user-directory/webpack/runtime/define property getters","webpack://@fof/user-directory/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/user-directory/webpack/runtime/make namespace object","webpack://@fof/user-directory/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/UsersSearchSource']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@fof/user-directory/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/user-directory/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/user-directory/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/Select']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/SelectDropdown']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/Placeholder']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/utils/humanTime']\"","webpack://@fof/user-directory/./src/forum/components/SmallUserCard.js","webpack://@fof/user-directory/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/user-directory/./src/forum/components/UserDirectoryUserCard.js","webpack://@fof/user-directory/./src/forum/components/UserDirectoryListItem.js","webpack://@fof/user-directory/./src/forum/components/UserDirectoryList.js","webpack://@fof/user-directory/./src/common/utils/SortMap.js","webpack://@fof/user-directory/./src/forum/states/UserDirectoryState.js","webpack://@fof/user-directory/./src/forum/components/CheckableButton.js","webpack://@fof/user-directory/external root \"flarum.core.compat['common/utils/withAttr']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@fof/user-directory/external root \"flarum.core.compat['utils/ItemList']\"","webpack://@fof/user-directory/./src/forum/searchTypes/AbstractType.js","webpack://@fof/user-directory/./src/forum/searchTypes/TextFilter.js","webpack://@fof/user-directory/external root \"flarum.core.compat['common/models/Group']\"","webpack://@fof/user-directory/./src/forum/searchTypes/GroupFilter.js","webpack://@fof/user-directory/./src/forum/components/SearchField.js","webpack://@fof/user-directory/external root \"flarum.core.compat['common/components/Separator']\"","webpack://@fof/user-directory/./src/forum/components/UserDirectoryPage.js","webpack://@fof/user-directory/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/user-directory/./src/forum/models/Text.ts","webpack://@fof/user-directory/./src/forum/components/index.js","webpack://@fof/user-directory/./src/forum/searchTypes/index.js","webpack://@fof/user-directory/./src/forum/index.js","webpack://@fof/follow-tags/webpack/bootstrap","webpack://@fof/follow-tags/webpack/runtime/compat get default export","webpack://@fof/follow-tags/webpack/runtime/define property getters","webpack://@fof/follow-tags/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/follow-tags/webpack/runtime/make namespace object","webpack://@fof/follow-tags/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/follow-tags/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/follow-tags/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/follow-tags/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/app']\"","webpack://@fof/follow-tags/./src/common/utils/followingPageOptions.js","webpack://@fof/follow-tags/./src/forum/utils/getDefaultFollowingFiltering.js","webpack://@fof/follow-tags/./src/forum/utils/isFollowingPage.ts","webpack://@fof/follow-tags/./src/common/index.ts","webpack://@fof/follow-tags/./src/forum/utils/index.ts","webpack://@fof/follow-tags/./src/forum/utils/subscriptionOptions.ts","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/follow-tags/./src/forum/components/SubscriptionOptionItem.tsx","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/follow-tags/./src/forum/components/SubscriptionModal.tsx","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@fof/follow-tags/./src/forum/components/SubscriptionStateButton.js","webpack://@fof/follow-tags/./src/forum/addSubscriptionControls.js","webpack://@fof/follow-tags/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@fof/follow-tags/./src/forum/components/FollowingPageFilterDropdown.js","webpack://@fof/follow-tags/./src/forum/addFollowedTagsDiscussions.js","webpack://@fof/follow-tags/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@fof/follow-tags/./src/forum/components/NewDiscussionNotification.js","webpack://@fof/follow-tags/./src/forum/icons.js","webpack://@fof/follow-tags/./src/forum/components/NewPostNotification.js","webpack://@fof/follow-tags/./src/forum/components/NewDiscussionTagNotification.js","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/components/FieldSet']\"","webpack://@fof/follow-tags/external root \"flarum.core.compat['common/components/Select']\"","webpack://@fof/follow-tags/./src/forum/addPreferences.js","webpack://@fof/follow-tags/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@fof/follow-tags/./src/forum/components/index.ts","webpack://@fof/follow-tags/./src/forum/index.ts","webpack://@fof/follow-tags/./src/forum/addDiscussionBadge.js","webpack://@fof/follow-tags/./src/forum/extendNotificationGrid.ts","webpack://@flarum/nicknames/webpack/bootstrap","webpack://@flarum/nicknames/webpack/runtime/compat get default export","webpack://@flarum/nicknames/webpack/runtime/define property getters","webpack://@flarum/nicknames/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/nicknames/webpack/runtime/make namespace object","webpack://@flarum/nicknames/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/components/EditUserModal']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['forum/components/SignUpModal']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@flarum/nicknames/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@flarum/nicknames/./src/forum/components/NicknameModal.js","webpack://@flarum/nicknames/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/nicknames/external root \"flarum.core.compat['common/models/User']\"","webpack://@flarum/nicknames/./src/forum/extend.ts","webpack://@flarum/nicknames/./src/forum/index.js","webpack://@fof/pages/webpack/bootstrap","webpack://@fof/pages/webpack/runtime/compat get default export","webpack://@fof/pages/webpack/runtime/define property getters","webpack://@fof/pages/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/pages/webpack/runtime/make namespace object","webpack://@fof/pages/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/pages/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/pages/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/app']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/components/Link']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@fof/pages/./src/forum/components/PageHero.js","webpack://@fof/pages/./src/forum/components/PagePage.js","webpack://@fof/pages/./src/forum/components/HomePage.js","webpack://@fof/pages/external root \"flarum.core.compat['app']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/utils/string']\"","webpack://@fof/pages/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/pages/./src/common/models/Page.js","webpack://@fof/pages/./src/forum/index.js","webpack://@v17development/flarum-user-badges/webpack/bootstrap","webpack://@v17development/flarum-user-badges/webpack/runtime/compat get default export","webpack://@v17development/flarum-user-badges/webpack/runtime/define property getters","webpack://@v17development/flarum-user-badges/webpack/runtime/hasOwnProperty shorthand","webpack://@v17development/flarum-user-badges/webpack/runtime/make namespace object","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['common/app']\"","webpack://@v17development/flarum-user-badges/./src/common/index.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['extend']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['Model']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['models/User']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/UserPage']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['utils/UserControls']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/LinkButton']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/Button']\"","webpack://@v17development/flarum-user-badges/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@v17development/flarum-user-badges/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['utils/mixin']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/Modal']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['helpers/fullTime']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['utils/ItemList']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/Select']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['utils/Stream']\"","webpack://@v17development/flarum-user-badges/./src/forum/components/GiveBadgeModal.js","webpack://@v17development/flarum-user-badges/./src/forum/components/BadgeModal.js","webpack://@v17development/flarum-user-badges/./src/common/models/Badge.js","webpack://@v17development/flarum-user-badges/./src/common/models/BadgeCategory.js","webpack://@v17development/flarum-user-badges/./src/common/models/UserBadge.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/LoadingIndicator']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['common/Component']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@v17development/flarum-user-badges/./src/common/components/UserBadge.js","webpack://@v17development/flarum-user-badges/./src/forum/utils/categorizeUserBadges.js","webpack://@v17development/flarum-user-badges/./src/forum/components/UserBadgeList.js","webpack://@v17development/flarum-user-badges/./src/forum/components/BadgesProfilePage.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/Page']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/IndexPage']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/Link']\"","webpack://@v17development/flarum-user-badges/./src/forum/components/BadgeCategoryList/TableView.js","webpack://@v17development/flarum-user-badges/./src/forum/components/BadgeCategoryList/BlockListView.js","webpack://@v17development/flarum-user-badges/./src/forum/components/BadgesOverviewPage.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['helpers/avatar']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['helpers/humanTime']\"","webpack://@v17development/flarum-user-badges/./src/forum/components/BadgeUserList.js","webpack://@v17development/flarum-user-badges/./src/forum/components/BadgeItemPage.js","webpack://@v17development/flarum-user-badges/./src/forum/addSidebarNav.js","webpack://@v17development/flarum-user-badges/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['common/states/PaginatedListState']\"","webpack://@v17development/flarum-user-badges/./src/forum/states/UserBadgeListState.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@v17development/flarum-user-badges/./src/forum/notification/BadgeReceivedNotification.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['forum/app']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['common/extend']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['common/components/Link']\"","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['components/Switch']\"","webpack://@v17development/flarum-user-badges/./src/forum/components/SelectUserCardBadgesModal.js","webpack://@v17development/flarum-user-badges/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@v17development/flarum-user-badges/./src/forum/index.js","webpack://@v17development/flarum-user-badges/./src/forum/addBadgeListUserCard.js","webpack://@the-turk/flarum-nodp/webpack/bootstrap","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['forum/app']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['common/extend']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['components/EditPostComposer']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['common/components/Alert']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['utils/DiscussionControls']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['components/LogInModal']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['Model']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['components/ReplyComposer']\"","webpack://@the-turk/flarum-nodp/external \"flarum.core.compat['models/User']\"","webpack://@the-turk/flarum-nodp/./src/forum/index.js","webpack://@sycho/flarum-profile-cover/webpack/bootstrap","webpack://@sycho/flarum-profile-cover/webpack/runtime/compat get default export","webpack://@sycho/flarum-profile-cover/webpack/runtime/define property getters","webpack://@sycho/flarum-profile-cover/webpack/runtime/hasOwnProperty shorthand","webpack://@sycho/flarum-profile-cover/webpack/runtime/make namespace object","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['forum/app']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['extend']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['models/User']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['components/UserCard']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['utils/UserControls']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['components/Button']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['Model']\"","webpack://@sycho/flarum-profile-cover/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['components/Modal']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['utils/ItemList']\"","webpack://@sycho/flarum-profile-cover/external root \"flarum.core.compat['components/LoadingIndicator']\"","webpack://@sycho/flarum-profile-cover/./src/common/formatBytes.js","webpack://@sycho/flarum-profile-cover/./src/forum/components/CoverEditorModal.js","webpack://@sycho/flarum-profile-cover/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-profile-cover/./src/forum/index.js","webpack://@sycho/flarum-uikit/webpack/bootstrap","webpack://@sycho/flarum-uikit/./forum.js","webpack://@sycho/flarum-uikit/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@sycho/flarum-uikit/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-uikit/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-uikit/./src/common/compat.ts","webpack://@sycho/flarum-uikit/./src/common/components/Input.js","webpack://@sycho/flarum-uikit/./src/common/components/Label.js","webpack://@sycho/flarum-uikit/./src/common/components/LabelGroup.js","webpack://@sycho/flarum-uikit/./src/common/components/ProgressBar.js","webpack://@sycho/flarum-uikit/./src/forum/compat.ts","webpack://@sycho/flarum-uikit/./src/forum/components/DiscussionSearch.tsx","webpack://@sycho/flarum-uikit/./src/forum/components/DiscussionSearchSource.tsx","webpack://@sycho/flarum-uikit/./src/forum/index.ts","webpack://@sycho/flarum-uikit/external \"flarum.core\"","webpack://@sycho/flarum-uikit/external \"flarum.core.compat['Component']\"","webpack://@sycho/flarum-uikit/external \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-uikit/external \"flarum.core.compat['common/helpers/highlight']\"","webpack://@sycho/flarum-uikit/external \"flarum.core.compat['common/utils/ItemList']\"","webpack://@sycho/flarum-uikit/external \"flarum.core.compat['forum/app']\"","webpack://@sycho/flarum-uikit/external \"flarum.core.compat['forum/components/Search']\"","webpack://@sycho/flarum-uikit/external \"flarum.core.compat['helpers/icon']\"","webpack://@sycho/flarum-move-posts/webpack/bootstrap","webpack://@sycho/flarum-move-posts/webpack/runtime/compat get default export","webpack://@sycho/flarum-move-posts/webpack/runtime/define property getters","webpack://@sycho/flarum-move-posts/webpack/runtime/hasOwnProperty shorthand","webpack://@sycho/flarum-move-posts/webpack/runtime/make namespace object","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/extend']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/app']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/components/Button']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/Model']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@sycho/flarum-move-posts/./src/forum/states/DiscussionPageState.ts","webpack://@sycho/flarum-move-posts/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@sycho/flarum-move-posts/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['uikit/forum/DiscussionSearch']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@sycho/flarum-move-posts/./src/forum/components/MovePostsModal.tsx","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['common/components/Link']\"","webpack://@sycho/flarum-move-posts/./src/forum/components/PostMovedPost.tsx","webpack://@sycho/flarum-move-posts/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@sycho/flarum-move-posts/./src/forum/components/PostMovedNotification.tsx","webpack://@sycho/flarum-move-posts/./src/forum/index.tsx","webpack://@rob006/flarum-ext-last-post-avatar/webpack/bootstrap","webpack://@rob006/flarum-ext-last-post-avatar/webpack/runtime/compat get default export","webpack://@rob006/flarum-ext-last-post-avatar/webpack/runtime/define property getters","webpack://@rob006/flarum-ext-last-post-avatar/webpack/runtime/hasOwnProperty shorthand","webpack://@rob006/flarum-ext-last-post-avatar/webpack/runtime/make namespace object","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['common/app']\"","webpack://@rob006/flarum-ext-last-post-avatar/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@rob006/flarum-ext-last-post-avatar/./src/common/index.ts","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['forum/app']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['common/extend']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['forum/components/TerminalPost']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['common/components/Link']\"","webpack://@rob006/flarum-ext-last-post-avatar/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@rob006/flarum-ext-last-post-avatar/./src/forum/index.tsx","webpack://@rob006/flarum-ext-last-post-avatar/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@michaelbelgium/flarum-profile-views/webpack/bootstrap","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['Model']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['extend']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['models/User']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['components/UserPage']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['components/UserCard']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['components/FieldSet']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['helpers/icon']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['helpers/avatar']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['utils/string']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['utils/ItemList']\"","webpack://@michaelbelgium/flarum-profile-views/external \"flarum.core.compat['utils/humanTime']\"","webpack://@michaelbelgium/flarum-profile-views/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@michaelbelgium/flarum-profile-views/./src/ProfileView.js","webpack://@michaelbelgium/flarum-profile-views/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@michaelbelgium/flarum-profile-views/./src/forum/index.js","webpack://@michaelbelgium/flarum-discussion-views/webpack/bootstrap","webpack://@michaelbelgium/flarum-discussion-views/webpack/runtime/compat get default export","webpack://@michaelbelgium/flarum-discussion-views/webpack/runtime/define property getters","webpack://@michaelbelgium/flarum-discussion-views/webpack/runtime/hasOwnProperty shorthand","webpack://@michaelbelgium/flarum-discussion-views/webpack/runtime/make namespace object","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['app']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['extend']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['states/DiscussionListState']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['Model']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['models/Discussion']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/DiscussionListItem']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/DiscussionList']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['utils/abbreviateNumber']\"","webpack://@michaelbelgium/flarum-discussion-views/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@michaelbelgium/flarum-discussion-views/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/models/DiscussionView.js","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/Button']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['utils/DiscussionControls']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/Modal']\"","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/components/ResetDiscussionViewsModal.js","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['helpers/username']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['helpers/icon']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['helpers/punctuateSeries']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['helpers/avatar']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['utils/ItemList']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['utils/humanTime']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/CommentPost']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/Link']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/DiscussionPage']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['components/FieldSet']\"","webpack://@michaelbelgium/flarum-discussion-views/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/components/PostDiscussionViewsModal.js","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/index.js","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/components/AddPopularSort.js","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/components/AddViewsToModelAndDisplay.js","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/components/AddModerationControl.js","webpack://@michaelbelgium/flarum-discussion-views/./src/forum/components/AddLists.js","webpack://@litalino/flarum-more-bbcode/webpack/bootstrap","webpack://@litalino/flarum-more-bbcode/webpack/runtime/compat get default export","webpack://@litalino/flarum-more-bbcode/webpack/runtime/define property getters","webpack://@litalino/flarum-more-bbcode/webpack/runtime/hasOwnProperty shorthand","webpack://@litalino/flarum-more-bbcode/webpack/runtime/make namespace object","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/app']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['extend']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['components/TextEditor']\"","webpack://@litalino/flarum-more-bbcode/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@litalino/flarum-more-bbcode/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/extend']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/Component']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/components/Button']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['forum/components/LogInModal']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['forum/components/PostStream']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['forum/components/ComposerPostPreview']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/utils/BasicEditorDriver']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/utils/styleSelectedText']\"","webpack://@litalino/flarum-more-bbcode/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@litalino/flarum-more-bbcode/./src/forum/MarkdownButton.js","webpack://@litalino/flarum-more-bbcode/./src/forum/TextEditorButton.js","webpack://@litalino/flarum-more-bbcode/./src/forum/index.js","webpack://@litalino/flarum-more-bbcode/./src/forum/addTextEditorButton.js","webpack://@litalino/flarum-adblock/webpack/bootstrap","webpack://@litalino/flarum-adblock/webpack/runtime/compat get default export","webpack://@litalino/flarum-adblock/webpack/runtime/define property getters","webpack://@litalino/flarum-adblock/webpack/runtime/hasOwnProperty shorthand","webpack://@litalino/flarum-adblock/webpack/runtime/make namespace object","webpack://@litalino/flarum-adblock/external root \"flarum.core.compat['extend']\"","webpack://@litalino/flarum-adblock/external root \"flarum.core.compat['app']\"","webpack://@litalino/flarum-adblock/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@litalino/flarum-adblock/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@litalino/flarum-adblock/./src/forum/index.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/af.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ar-dz.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ar-kw.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ar-ly.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ar-ma.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ar-sa.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ar-tn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ar.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/az.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/be.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/bg.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/bm.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/bn-bd.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/bn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/bo.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/br.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/bs.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ca.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/cs.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/cv.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/cy.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/da.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/de-at.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/de-ch.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/de.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/dv.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/el.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-au.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-ca.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-gb.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-ie.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-il.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-in.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-nz.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/en-sg.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/eo.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/es-do.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/es-mx.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/es-us.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/es.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/et.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/eu.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fa.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fi.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fil.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fo.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fr-ca.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fr-ch.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fr.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/fy.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ga.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/gd.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/gl.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/gom-deva.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/gom-latn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/gu.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/he.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/hi.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/hr.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/hu.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/hy-am.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/id.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/is.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/it-ch.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/it.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ja.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/jv.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ka.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/kk.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/km.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/kn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ko.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ku.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ky.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/lb.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/lo.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/lt.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/lv.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/me.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/mi.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/mk.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ml.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/mn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/mr.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ms-my.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ms.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/mt.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/my.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/nb.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ne.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/nl-be.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/nl.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/nn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/oc-lnc.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/pa-in.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/pl.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/pt-br.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/pt.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ro.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ru.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sd.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/se.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/si.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sk.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sl.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sq.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sr-cyrl.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sr.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ss.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sv.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/sw.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ta.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/te.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tet.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tg.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/th.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tk.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tl-ph.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tlh.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tr.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tzl.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tzm-latn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/tzm.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ug-cn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/uk.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ur.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/uz-latn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/uz.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/vi.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/x-pseudo.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/yo.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/zh-cn.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/zh-hk.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/zh-mo.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/zh-tw.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/moment.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://@justoverclock/flarum-ext-welcomebox/webpack/bootstrap","webpack://@justoverclock/flarum-ext-welcomebox/webpack/runtime/compat get default export","webpack://@justoverclock/flarum-ext-welcomebox/webpack/runtime/define property getters","webpack://@justoverclock/flarum-ext-welcomebox/webpack/runtime/hasOwnProperty shorthand","webpack://@justoverclock/flarum-ext-welcomebox/webpack/runtime/make namespace object","webpack://@justoverclock/flarum-ext-welcomebox/webpack/runtime/node module decorator","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['extend']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['app']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['components/IndexPage']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['utils/formatNumber']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['helpers/listItems']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['components/AvatarEditor']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['components/SignUpModal']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['common/components/Button']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@justoverclock/flarum-ext-welcomebox/external root \"flarum.core.compat['forum/app']\"","webpack://@justoverclock/flarum-ext-welcomebox/./src/common/components/WelcomeBoxWidget.js","webpack://@justoverclock/flarum-ext-welcomebox/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@justoverclock/flarum-ext-welcomebox/./src/forum/index.js","webpack://@justoverclock/flarum-ext-welcomebox/./src/common/registerWidget.js","webpack://@justoverclock/last-users-posts/webpack/bootstrap","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['forum/app']\"","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['common/utils/string']\"","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['common/components/Link']\"","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['common/helpers/avatar']\"","webpack://@justoverclock/last-users-posts/external \"flarum.core.compat['common/components/Tooltip']\"","webpack://@justoverclock/last-users-posts/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@justoverclock/last-users-posts/./src/common/components/LastUsersPosts.js","webpack://@justoverclock/last-users-posts/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@justoverclock/last-users-posts/./src/common/registerWidget.js","webpack://@justoverclock/last-users-posts/./src/forum/index.js","webpack://@justoverclock/flarum-ext-hashtag/webpack/bootstrap","webpack://@justoverclock/flarum-ext-hashtag/external \"flarum.core.compat['forum/app']\"","webpack://@justoverclock/flarum-ext-hashtag/external \"flarum.core.compat['common/extend']\"","webpack://@justoverclock/flarum-ext-hashtag/external \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@justoverclock/flarum-ext-hashtag/./src/forum/ReplaceHashTag.js","webpack://@justoverclock/flarum-ext-hashtag/./src/forum/index.js","webpack://@justoverclock/discussion-hero-showtags/webpack/bootstrap","webpack://@justoverclock/discussion-hero-showtags/external \"flarum.core.compat['forum/app']\"","webpack://@justoverclock/discussion-hero-showtags/external \"flarum.core.compat['common/extend']\"","webpack://@justoverclock/discussion-hero-showtags/external \"flarum.core.compat['forum/components/DiscussionHero']\"","webpack://@justoverclock/discussion-hero-showtags/external \"flarum.core.compat['tags/helpers/tagsLabel']\"","webpack://@justoverclock/discussion-hero-showtags/./src/forum/index.js","webpack://@irmmr/flarum-rtl-ext/webpack/bootstrap","webpack://@irmmr/flarum-rtl-ext/external \"flarum.core.compat['app']\"","webpack://@irmmr/flarum-rtl-ext/external \"flarum.core.compat['components/DiscussionListPane']\"","webpack://@irmmr/flarum-rtl-ext/external \"flarum.core.compat['components/DiscussionPage']\"","webpack://@irmmr/flarum-rtl-ext/external \"flarum.core.compat['extend']\"","webpack://@irmmr/flarum-rtl-ext/external \"flarum.core.compat['common/components/Navigation']\"","webpack://@irmmr/flarum-rtl-ext/./src/forum/changePaneShowX.js","webpack://@irmmr/flarum-rtl-ext/./src/forum/index.js","webpack://@irmmr/flarum-rtl-ext/./src/forum/changeNavBackBtn.js","webpack://@ianm/follow-users/./node_modules/@babel/runtime/regenerator/index.js","webpack://@ianm/follow-users/./node_modules/css-what/lib/index.js","webpack://@ianm/follow-users/./node_modules/css-what/lib/parse.js","webpack://@ianm/follow-users/./node_modules/css-what/lib/stringify.js","webpack://@ianm/follow-users/./node_modules/regenerator-runtime/runtime.js","webpack://@ianm/follow-users/webpack/bootstrap","webpack://@ianm/follow-users/webpack/runtime/compat get default export","webpack://@ianm/follow-users/webpack/runtime/define property getters","webpack://@ianm/follow-users/webpack/runtime/hasOwnProperty shorthand","webpack://@ianm/follow-users/webpack/runtime/make namespace object","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/app']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/extend']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@ianm/follow-users/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/utils/UserControls']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/Button']\"","webpack://@ianm/follow-users/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@ianm/follow-users/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@ianm/follow-users/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/models/User']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/Select']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/app']\"","webpack://@ianm/follow-users/./src/common/FollowLevels.js","webpack://@ianm/follow-users/./src/forum/components/SelectFollowLevelModal.js","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@ianm/follow-users/./src/forum/util/findVdomChild.ts","webpack://@ianm/follow-users/./src/forum/addFollowControls.js","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@ianm/follow-users/./src/forum/components/NewDiscussionNotification.js","webpack://@ianm/follow-users/./src/forum/components/NewPostNotification.js","webpack://@ianm/follow-users/./src/forum/components/NewFollowerNotification.js","webpack://@ianm/follow-users/./src/forum/components/NewUnfollowerNotification.js","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@ianm/follow-users/external assign \"flarum.extensions['fof-follow-tags']\"","webpack://@ianm/follow-users/external assign \"flarum.extensions['fof-user-directory']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@ianm/follow-users/./src/common/helpers/followingPageOptions.js","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/Separator']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/extenders']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/Placeholder']\"","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/Component']\"","webpack://@ianm/follow-users/./src/forum/components/FollowedUserListItem.js","webpack://@ianm/follow-users/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@ianm/follow-users/./src/forum/components/ProfilePage.js","webpack://@ianm/follow-users/./src/forum/extend.ts","webpack://@ianm/follow-users/./src/forum/index.js","webpack://@ianm/follow-users/./src/forum/addProfilePage.js","webpack://@ianm/follow-users/./src/forum/addFollowBadge.js","webpack://@ianm/follow-users/./src/forum/addPrivacySetting.js","webpack://@ianm/follow-users/./src/forum/addFollowingUsers.js","webpack://@ianm/follow-users/./src/forum/addUserCardStats.tsx","webpack://@fof/username-request/webpack/bootstrap","webpack://@fof/username-request/webpack/runtime/compat get default export","webpack://@fof/username-request/webpack/runtime/define property getters","webpack://@fof/username-request/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/username-request/webpack/runtime/make namespace object","webpack://@fof/username-request/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/username-request/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/username-request/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/username-request/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/utils/mixin']\"","webpack://@fof/username-request/./src/forum/models/UsernameRequest.js","webpack://@fof/username-request/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/username-request/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/username-request/./src/forum/components/RequestModal.js","webpack://@fof/username-request/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@fof/username-request/external root \"flarum.core.compat['common/utils/withAttr']\"","webpack://@fof/username-request/./src/forum/components/ActionModal.js","webpack://@fof/username-request/./src/forum/components/RequestsList.js","webpack://@fof/username-request/./src/forum/components/RequestsPage.js","webpack://@fof/username-request/external root \"flarum.core.compat['forum/components/HeaderSecondary']\"","webpack://@fof/username-request/external root \"flarum.core.compat['forum/components/NotificationsDropdown']\"","webpack://@fof/username-request/./src/forum/components/RequestsDropdown.js","webpack://@fof/username-request/./src/forum/components/ResultsModal.js","webpack://@fof/username-request/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@fof/username-request/./src/forum/components/ProfilePage.js","webpack://@fof/username-request/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@fof/username-request/./src/forum/states/RequestsListState.js","webpack://@fof/username-request/./src/forum/index.js","webpack://@fof/username-request/./src/forum/addRequestSetting.js","webpack://@fof/username-request/./src/forum/addRequestDropdown.js","webpack://@fof/username-request/./src/forum/checkForApproval.js","webpack://@fof/username-request/./src/forum/addProfilePage.js","webpack://@fof/user-bio/./node_modules/autolink-js/autolink-min.js","webpack://@fof/user-bio/webpack/bootstrap","webpack://@fof/user-bio/webpack/runtime/compat get default export","webpack://@fof/user-bio/webpack/runtime/define property getters","webpack://@fof/user-bio/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/user-bio/webpack/runtime/make namespace object","webpack://@fof/user-bio/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/user-bio/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/user-bio/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/user-bio/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@fof/user-bio/./src/forum/components/UserBio.js","webpack://@fof/user-bio/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/user-bio/./src/forum/components/index.js","webpack://@fof/user-bio/./src/forum/index.js","webpack://@fof/upload/./node_modules/@babel/runtime/regenerator/index.js","webpack://@fof/upload/./node_modules/regenerator-runtime/runtime.js","webpack://@fof/upload/webpack/bootstrap","webpack://@fof/upload/webpack/runtime/compat get default export","webpack://@fof/upload/webpack/runtime/define property getters","webpack://@fof/upload/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/upload/webpack/runtime/make namespace object","webpack://@fof/upload/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/upload/external root \"flarum.core.compat['forum/components/Post']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/components/TextEditor']\"","webpack://@fof/upload/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/upload/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/upload/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/upload/./src/forum/components/UploadButton.js","webpack://@fof/upload/./src/forum/components/DragAndDrop.js","webpack://@fof/upload/./src/forum/components/PasteClipboard.js","webpack://@fof/upload/./src/forum/handler/Uploader.js","webpack://@fof/upload/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/app']\"","webpack://@fof/upload/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@fof/upload/./src/common/mimeToIcon.ts","webpack://@fof/upload/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@fof/upload/./src/common/components/DisplayFile.tsx","webpack://@fof/upload/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@fof/upload/./src/common/components/AbstractFIleList.tsx","webpack://@fof/upload/./src/common/components/UserFileList.tsx","webpack://@fof/upload/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@fof/upload/./src/common/components/UploadSharedFileModal.tsx","webpack://@fof/upload/./src/common/components/SharedFileList.tsx","webpack://@fof/upload/./src/common/states/FileListState.ts","webpack://@fof/upload/./src/forum/components/FileManagerModal.js","webpack://@fof/upload/./src/forum/components/FileManagerButton.tsx","webpack://@fof/upload/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@fof/upload/external root \"flarum.core.compat['common/extenders']\"","webpack://@fof/upload/./src/common/models/File.ts","webpack://@fof/upload/./src/common/extend.ts","webpack://@fof/upload/./src/forum/components/UploadsUserPage.tsx","webpack://@fof/upload/./src/forum/extend.ts","webpack://@fof/upload/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/upload/./src/common/components/UploadedFile.tsx","webpack://@fof/upload/./src/forum/components/index.ts","webpack://@fof/upload/./src/common/components/index.ts","webpack://@fof/upload/./src/forum/index.js","webpack://@fof/upload/./src/forum/addUploadButton.js","webpack://@fof/upload/./src/forum/downloadButtonInteraction.js","webpack://@fof/upload/./src/forum/addUserPageButton.js","webpack://@fof/terms/webpack/bootstrap","webpack://@fof/terms/webpack/runtime/compat get default export","webpack://@fof/terms/webpack/runtime/define property getters","webpack://@fof/terms/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/terms/webpack/runtime/make namespace object","webpack://@fof/terms/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/terms/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/terms/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/terms/external root \"flarum.core.compat['common/utils/computed']\"","webpack://@fof/terms/./src/common/models/Policy.js","webpack://@fof/terms/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/IndexPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/terms/./src/common/helpers/sortByAttribute.js","webpack://@fof/terms/./src/forum/components/AcceptPoliciesModal.js","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/SignUpModal']\"","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@fof/terms/./src/forum/components/UpdateAlert.js","webpack://@fof/terms/./src/forum/addUpdateAlert.js","webpack://@fof/terms/external root \"flarum.core.compat['forum/utils/UserControls']\"","webpack://@fof/terms/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@fof/terms/./src/forum/components/UserPoliciesStateModal.js","webpack://@fof/terms/./src/forum/components/index.js","webpack://@fof/terms/./src/common/models/index.js","webpack://@fof/terms/./src/common/helpers/index.js","webpack://@fof/terms/./src/forum/index.js","webpack://@fof/terms/./src/forum/addAcceptModal.js","webpack://@fof/terms/./src/forum/addFieldsToRegister.js","webpack://@fof/terms/./src/forum/addUserPoliciesStateControl.js","webpack://@fof/subscribed/webpack/bootstrap","webpack://@fof/subscribed/webpack/runtime/compat get default export","webpack://@fof/subscribed/webpack/runtime/define property getters","webpack://@fof/subscribed/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/subscribed/webpack/runtime/make namespace object","webpack://@fof/subscribed/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/subscribed/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/subscribed/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@fof/subscribed/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/subscribed/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/subscribed/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@fof/subscribed/./src/forum/notifications/DiscussionCreatedNotification.js","webpack://@fof/subscribed/external root \"flarum.core.compat['common/utils/string']\"","webpack://@fof/subscribed/./src/forum/notifications/PostCreatedNotification.js","webpack://@fof/subscribed/./src/forum/notifications/UserCreatedNotification.js","webpack://@fof/subscribed/./src/forum/notifications/PostUnapprovedNotification.js","webpack://@fof/subscribed/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/subscribed/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/subscribed/./src/forum/notifications/PostFlaggedNotification.js","webpack://@fof/subscribed/./src/forum/index.ts","webpack://@fof/socialprofile/webpack/bootstrap","webpack://@fof/socialprofile/webpack/runtime/compat get default export","webpack://@fof/socialprofile/webpack/runtime/define property getters","webpack://@fof/socialprofile/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/socialprofile/webpack/runtime/make namespace object","webpack://@fof/socialprofile/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/socialprofile/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/socialprofile/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/utils/withAttr']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/components/Dropdown']\"","webpack://@fof/socialprofile/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/socialprofile/./src/forum/components/IconSelectorComponent.js","webpack://@fof/socialprofile/./src/forum/components/WebsiteInputComponent.js","webpack://@fof/socialprofile/./src/forum/helpers/isValidUrl.js","webpack://@fof/socialprofile/./src/forum/helpers/extractUriHost.js","webpack://@fof/socialprofile/./src/forum/components/SocialButtonsModal.js","webpack://@fof/socialprofile/./src/forum/index.js","webpack://@fof/share-social/webpack/bootstrap","webpack://@fof/share-social/webpack/runtime/compat get default export","webpack://@fof/share-social/webpack/runtime/define property getters","webpack://@fof/share-social/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/share-social/webpack/runtime/make namespace object","webpack://@fof/share-social/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/share-social/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/components/SplitDropdown']\"","webpack://@fof/share-social/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/share-social/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/share-social/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/share-social/external root \"flarum.core.compat['common/utils/string']\"","webpack://@fof/share-social/./src/forum/util/share.js","webpack://@fof/share-social/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://@fof/share-social/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://@fof/share-social/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://@fof/share-social/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://@fof/share-social/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://@fof/share-social/./node_modules/escape-goat/index.js","webpack://@fof/share-social/./node_modules/pupa/index.js","webpack://@fof/share-social/./src/forum/util/networks.js","webpack://@fof/share-social/./src/forum/components/ShareModal.js","webpack://@fof/share-social/./src/forum/index.js","webpack://@fof/recaptcha/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@fof/recaptcha/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@fof/recaptcha/./node_modules/@babel/runtime/regenerator/index.js","webpack://@fof/recaptcha/webpack/bootstrap","webpack://@fof/recaptcha/webpack/runtime/compat get default export","webpack://@fof/recaptcha/webpack/runtime/define property getters","webpack://@fof/recaptcha/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/recaptcha/webpack/runtime/make namespace object","webpack://@fof/recaptcha/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/recaptcha/external root \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@fof/recaptcha/external root \"flarum.core.compat['forum/components/ReplyComposer']\"","webpack://@fof/recaptcha/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/recaptcha/external root \"flarum.core.compat['common/app']\"","webpack://@fof/recaptcha/./src/common/states/RecaptchaState.js","webpack://@fof/recaptcha/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/recaptcha/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@fof/recaptcha/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/recaptcha/./node_modules/external-load/index.js","webpack://@fof/recaptcha/./src/common/components/Recaptcha.js","webpack://@fof/recaptcha/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/recaptcha/./src/forum/extendComposer.ts","webpack://@fof/recaptcha/external root \"flarum.core.compat['forum/components/ForgotPasswordModal']\"","webpack://@fof/recaptcha/external root \"flarum.core.compat['forum/components/LogInModal']\"","webpack://@fof/recaptcha/external root \"flarum.core.compat['forum/components/SignUpModal']\"","webpack://@fof/recaptcha/./src/forum/extendAuthModals.tsx","webpack://@fof/recaptcha/./src/forum/index.ts","webpack://@fof/profile-image-crop/webpack/runtime/create fake namespace object","webpack://@fof/profile-image-crop/webpack/runtime/load script","webpack://@fof/profile-image-crop/./node_modules/@babel/runtime/regenerator/index.js","webpack://@fof/profile-image-crop/./node_modules/regenerator-runtime/runtime.js","webpack://@fof/profile-image-crop/webpack/bootstrap","webpack://@fof/profile-image-crop/webpack/runtime/compat get default export","webpack://@fof/profile-image-crop/webpack/runtime/define property getters","webpack://@fof/profile-image-crop/webpack/runtime/ensure chunk","webpack://@fof/profile-image-crop/webpack/runtime/get javascript chunk filename","webpack://@fof/profile-image-crop/webpack/runtime/global","webpack://@fof/profile-image-crop/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/profile-image-crop/webpack/runtime/make namespace object","webpack://@fof/profile-image-crop/webpack/runtime/publicPath","webpack://@fof/profile-image-crop/webpack/runtime/jsonp chunk loading","webpack://@fof/profile-image-crop/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/profile-image-crop/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/profile-image-crop/external root \"flarum.core.compat['forum/components/AvatarEditor']\"","webpack://@fof/profile-image-crop/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@fof/profile-image-crop/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/profile-image-crop/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/profile-image-crop/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/profile-image-crop/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/profile-image-crop/./node_modules/blob-util/dist/blob-util.es.js","webpack://@fof/profile-image-crop/./src/forum/external/modules.js","webpack://@fof/profile-image-crop/./src/forum/components/ProfileImageCropModal.js","webpack://@fof/profile-image-crop/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/profile-image-crop/./src/forum/index.js","webpack://@fof/nightmode/webpack/bootstrap","webpack://@fof/nightmode/webpack/runtime/compat get default export","webpack://@fof/nightmode/webpack/runtime/define property getters","webpack://@fof/nightmode/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/nightmode/webpack/runtime/make namespace object","webpack://@fof/nightmode/external root \"flarum.core.compat['common/app']\"","webpack://@fof/nightmode/./src/common/Themes.js","webpack://@fof/nightmode/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/nightmode/./node_modules/es-cookie/src/es-cookie.js","webpack://@fof/nightmode/./src/forum/helpers/perDeviceSetting.js","webpack://@fof/nightmode/./src/forum/fixInvalidThemeSetting.js","webpack://@fof/nightmode/./src/forum/getTheme.js","webpack://@fof/nightmode/./src/common/setSelectedTheme.js","webpack://@fof/nightmode/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['forum/components/SessionDropdown']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['forum/components/HeaderSecondary']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['common/components/Select']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['common/components/FieldSet']\"","webpack://@fof/nightmode/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@fof/nightmode/./src/forum/helpers/switchTheme.js","webpack://@fof/nightmode/./src/forum/addSettingsItems.js","webpack://@fof/nightmode/./src/forum/index.ts","webpack://@fof/links/webpack/bootstrap","webpack://@fof/links/webpack/runtime/compat get default export","webpack://@fof/links/webpack/runtime/define property getters","webpack://@fof/links/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/links/webpack/runtime/make namespace object","webpack://@fof/links/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/links/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/links/external root \"flarum.core.compat['common/components/HeaderPrimary']\"","webpack://@fof/links/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/links/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/links/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/links/external root \"flarum.core.compat['common/utils/mixin']\"","webpack://@fof/links/./src/common/models/Link.js","webpack://@fof/links/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@fof/links/external root \"flarum.core.compat['common/components/Link']\"","webpack://@fof/links/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@fof/links/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/links/external root \"flarum.core.compat['common/components/Separator']\"","webpack://@fof/links/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/links/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/links/./src/forum/components/LinkItem.tsx","webpack://@fof/links/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/links/external root \"flarum.core.compat['common/components/SplitDropdown']\"","webpack://@fof/links/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/links/./src/common/utils/sortLinks.js","webpack://@fof/links/./src/forum/components/LinkDropdown.js","webpack://@fof/links/./src/forum/components/index.js","webpack://@fof/links/./src/common/utils/index.js","webpack://@fof/links/./src/common/models/index.js","webpack://@fof/links/./src/forum/index.js","webpack://@fof/ignore-users/webpack/bootstrap","webpack://@fof/ignore-users/webpack/runtime/compat get default export","webpack://@fof/ignore-users/webpack/runtime/define property getters","webpack://@fof/ignore-users/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/ignore-users/webpack/runtime/make namespace object","webpack://@fof/ignore-users/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['forum/utils/UserControls']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['forum/components/UserPage']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/extenders']\"","webpack://@fof/ignore-users/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/components/Placeholder']\"","webpack://@fof/ignore-users/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/ignore-users/./src/forum/components/ProfilePage.js","webpack://@fof/ignore-users/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/ignore-users/./src/forum/extend.ts","webpack://@fof/ignore-users/./src/forum/index.ts","webpack://@fof/ignore-users/./src/forum/addIgnoreUserControlButton.js","webpack://@fof/ignore-users/./src/forum/addHideIgnoredPost.js","webpack://@fof/ignore-users/./src/forum/addProfilePage.js","webpack://@fof/ignore-users/./src/forum/addIgnoredUserBadge.js","webpack://@fof/frontpage/webpack/bootstrap","webpack://@fof/frontpage/webpack/runtime/compat get default export","webpack://@fof/frontpage/webpack/runtime/define property getters","webpack://@fof/frontpage/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/frontpage/webpack/runtime/make namespace object","webpack://@fof/frontpage/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/frontpage/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/frontpage/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@fof/frontpage/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@fof/frontpage/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/frontpage/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/frontpage/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/frontpage/./src/forum/addFrontPage.js","webpack://@fof/frontpage/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/frontpage/./src/forum/addStickyBadge.js","webpack://@fof/frontpage/./src/forum/index.ts","webpack://@fof/frontpage/./src/forum/addFrontSort.js","webpack://@fof/drafts/./node_modules/dayjs/dayjs.min.js","webpack://@fof/drafts/external assign \"flarum.extensions['fof-byobu']\"","webpack://@fof/drafts/webpack/bootstrap","webpack://@fof/drafts/webpack/runtime/compat get default export","webpack://@fof/drafts/webpack/runtime/define property getters","webpack://@fof/drafts/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/drafts/webpack/runtime/make namespace object","webpack://@fof/drafts/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/drafts/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/drafts/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/drafts/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/utils/mixin']\"","webpack://@fof/drafts/./src/forum/utils/fillRelationship.js","webpack://@fof/drafts/./src/forum/models/Draft.js","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/utils/string']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@fof/drafts/./src/forum/components/DraftsListItem.tsx","webpack://@fof/drafts/./src/forum/components/DraftsList.js","webpack://@fof/drafts/./src/forum/components/DraftsPage.js","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/HeaderSecondary']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/NotificationsDropdown']\"","webpack://@fof/drafts/./src/forum/components/DraftsDropdown.js","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/FieldSet']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/SettingsPage']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@fof/drafts/external root \"flarum.core.compat['forum/components/Composer']\"","webpack://@fof/drafts/external root \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@fof/drafts/external root \"flarum.core.compat['forum/components/ReplyComposer']\"","webpack://@fof/drafts/external root \"flarum.core.compat['forum/states/ComposerState']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@fof/drafts/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/drafts/./src/forum/components/ScheduleDraftModal.js","webpack://@fof/drafts/./src/forum/states/DraftsListState.js","webpack://@fof/drafts/./src/forum/utils/deepEqual.js","webpack://@fof/drafts/./src/forum/components/index.js","webpack://@fof/drafts/./src/forum/models/index.js","webpack://@fof/drafts/./src/forum/states/index.js","webpack://@fof/drafts/./src/forum/utils/index.js","webpack://@fof/drafts/./src/forum/index.js","webpack://@fof/drafts/./src/forum/addDraftsDropdown.js","webpack://@fof/drafts/./src/forum/addPreferences.js","webpack://@fof/discussion-thumbnail/./node_modules/call-bind/callBound.js","webpack://@fof/discussion-thumbnail/./node_modules/call-bind/index.js","webpack://@fof/discussion-thumbnail/./node_modules/define-properties/index.js","webpack://@fof/discussion-thumbnail/./node_modules/function-bind/implementation.js","webpack://@fof/discussion-thumbnail/./node_modules/function-bind/index.js","webpack://@fof/discussion-thumbnail/./node_modules/get-intrinsic/index.js","webpack://@fof/discussion-thumbnail/./node_modules/has-symbols/index.js","webpack://@fof/discussion-thumbnail/./node_modules/has-symbols/shams.js","webpack://@fof/discussion-thumbnail/./node_modules/has/src/index.js","webpack://@fof/discussion-thumbnail/./node_modules/intersection-observer/intersection-observer.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_Hash.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_ListCache.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_Map.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_MapCache.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_Symbol.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_arrayMap.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_assocIndexOf.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_baseGet.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_baseGetTag.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_baseIsNative.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_baseToString.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_castPath.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_coreJsData.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_freeGlobal.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_getMapData.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_getNative.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_getRawTag.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_getValue.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_hashClear.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_hashDelete.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_hashGet.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_hashHas.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_hashSet.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_isKey.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_isKeyable.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_isMasked.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_listCacheClear.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_listCacheDelete.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_listCacheGet.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_listCacheHas.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_listCacheSet.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_mapCacheClear.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_mapCacheDelete.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_mapCacheGet.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_mapCacheHas.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_mapCacheSet.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_memoizeCapped.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_nativeCreate.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_objectToString.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_root.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_stringToPath.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_toKey.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/_toSource.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/eq.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/get.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/isArray.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/isFunction.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/isObject.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/isObjectLike.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/isSymbol.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/memoize.js","webpack://@fof/discussion-thumbnail/./node_modules/lodash/toString.js","webpack://@fof/discussion-thumbnail/./node_modules/object-keys/implementation.js","webpack://@fof/discussion-thumbnail/./node_modules/object-keys/index.js","webpack://@fof/discussion-thumbnail/./node_modules/object-keys/isArguments.js","webpack://@fof/discussion-thumbnail/./node_modules/object.assign/auto.js","webpack://@fof/discussion-thumbnail/./node_modules/object.assign/implementation.js","webpack://@fof/discussion-thumbnail/./node_modules/object.assign/polyfill.js","webpack://@fof/discussion-thumbnail/./node_modules/object.assign/shim.js","webpack://@fof/discussion-thumbnail/webpack/bootstrap","webpack://@fof/discussion-thumbnail/webpack/runtime/compat get default export","webpack://@fof/discussion-thumbnail/webpack/runtime/define property getters","webpack://@fof/discussion-thumbnail/webpack/runtime/global","webpack://@fof/discussion-thumbnail/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/discussion-thumbnail/webpack/runtime/make namespace object","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@fof/discussion-thumbnail/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/discussion-thumbnail/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['common/Component']\"","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@fof/discussion-thumbnail/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@fof/discussion-thumbnail/./src/forum/components/DiscussionThumbnail.js","webpack://@fof/discussion-thumbnail/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/discussion-thumbnail/./src/forum/index.js","webpack://@fof/cookie-consent/./node_modules/cookieconsent/build/cookieconsent.min.js","webpack://@fof/cookie-consent/webpack/bootstrap","webpack://@fof/cookie-consent/webpack/runtime/compat get default export","webpack://@fof/cookie-consent/webpack/runtime/define property getters","webpack://@fof/cookie-consent/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/cookie-consent/webpack/runtime/make namespace object","webpack://@fof/cookie-consent/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/cookie-consent/./src/forum/index.js","webpack://@fof/ban-ips/webpack/bootstrap","webpack://@fof/ban-ips/webpack/runtime/compat get default export","webpack://@fof/ban-ips/webpack/runtime/define property getters","webpack://@fof/ban-ips/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/ban-ips/webpack/runtime/make namespace object","webpack://@fof/ban-ips/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['forum/utils/PostControls']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['forum/utils/UserControls']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/ban-ips/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/ban-ips/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/app']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/components/Alert']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/helpers/punctuateSeries']\"","webpack://@fof/ban-ips/./src/common/components/BanIPModal.js","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@fof/ban-ips/./src/common/components/UnbanIPModal.js","webpack://@fof/ban-ips/./src/forum/addBanIPControl.js","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/utils/mixin']\"","webpack://@fof/ban-ips/./src/common/models/BannedIP.js","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/ban-ips/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@fof/ban-ips/./src/forum/addBannedBadge.js","webpack://@fof/ban-ips/./src/common/compat.js","webpack://@fof/ban-ips/external assign \"flarum.core\"","webpack://@fof/ban-ips/./src/forum/index.js","webpack://@fof/anti-spam/webpack/bootstrap","webpack://@fof/anti-spam/webpack/runtime/compat get default export","webpack://@fof/anti-spam/webpack/runtime/define property getters","webpack://@fof/anti-spam/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/anti-spam/webpack/runtime/make namespace object","webpack://@fof/anti-spam/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/anti-spam/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/anti-spam/external root \"flarum.core.compat['common/components/Button']\"","webpack://@fof/anti-spam/external root \"flarum.core.compat['forum/utils/UserControls']\"","webpack://@fof/anti-spam/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@fof/anti-spam/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/anti-spam/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/anti-spam/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@fof/anti-spam/./src/forum/components/HandleSpammerModal.tsx","webpack://@fof/anti-spam/external root \"flarum.core.compat['common/extenders']\"","webpack://@fof/anti-spam/external root \"flarum.core.compat['common/models/User']\"","webpack://@fof/anti-spam/external root \"flarum.core.compat['common/Model']\"","webpack://@fof/anti-spam/./src/common/models/BlockedRegistration.tsx","webpack://@fof/anti-spam/./src/common/extend.ts","webpack://@fof/anti-spam/./src/forum/extend.ts","webpack://@fof/anti-spam/./src/forum/index.ts","webpack://@fof/anti-spam/./src/forum/extenders/addSpamblockControls.tsx","webpack://@fof/analytics/webpack/bootstrap","webpack://@fof/analytics/webpack/runtime/compat get default export","webpack://@fof/analytics/webpack/runtime/define property getters","webpack://@fof/analytics/webpack/runtime/hasOwnProperty shorthand","webpack://@fof/analytics/webpack/runtime/make namespace object","webpack://@fof/analytics/external root \"flarum.core.compat['common/extend']\"","webpack://@fof/analytics/external root \"flarum.core.compat['forum/app']\"","webpack://@fof/analytics/external root \"flarum.core.compat['common/components/Page']\"","webpack://@fof/analytics/./src/forum/index.js","webpack://@flarum/sticky/webpack/bootstrap","webpack://@flarum/sticky/webpack/runtime/compat get default export","webpack://@flarum/sticky/webpack/runtime/define property getters","webpack://@flarum/sticky/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/sticky/webpack/runtime/make namespace object","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/utils/string']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@flarum/sticky/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/sticky/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/sticky/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/sticky/./src/forum/components/DiscussionStickiedPost.js","webpack://@flarum/sticky/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/sticky/./src/forum/extend.ts","webpack://@flarum/sticky/./src/forum/index.js","webpack://@flarum/sticky/./src/forum/addStickyBadge.js","webpack://@flarum/sticky/./src/forum/addStickyControl.js","webpack://@flarum/sticky/./src/forum/addStickyExcerpt.js","webpack://@flarum/sticky/./src/forum/addStickyClass.js","webpack://@flarum/markdown/webpack/bootstrap","webpack://@flarum/markdown/webpack/runtime/compat get default export","webpack://@flarum/markdown/webpack/runtime/define property getters","webpack://@flarum/markdown/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/markdown/webpack/runtime/make namespace object","webpack://@flarum/markdown/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/markdown/external root \"flarum.core.compat['common/app']\"","webpack://@flarum/markdown/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/markdown/external root \"flarum.core.compat['common/components/TextEditor']\"","webpack://@flarum/markdown/external root \"flarum.core.compat['common/utils/BasicEditorDriver']\"","webpack://@flarum/markdown/external root \"flarum.core.compat['common/utils/styleSelectedText']\"","webpack://@flarum/markdown/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/markdown/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/markdown/external root \"flarum.core.compat['common/Component']\"","webpack://@flarum/markdown/./src/common/components/MarkdownToolbar.js","webpack://@flarum/markdown/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@flarum/markdown/external root \"flarum.core.compat['common/components/Tooltip']\"","webpack://@flarum/markdown/./src/common/components/MarkdownButton.js","webpack://@flarum/markdown/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@flarum/markdown/./src/common/index.js","webpack://@flarum/markdown/./src/forum/index.js","webpack://@flarum/lock/webpack/bootstrap","webpack://@flarum/lock/webpack/runtime/compat get default export","webpack://@flarum/lock/webpack/runtime/define property getters","webpack://@flarum/lock/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/lock/webpack/runtime/make namespace object","webpack://@flarum/lock/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/NotificationGrid']\"","webpack://@flarum/lock/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/lock/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/Notification']\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedNotification.js","webpack://@flarum/lock/external root \"flarum.core.compat['common/models/Discussion']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/components/Badge']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/components/Button']\"","webpack://@flarum/lock/external root \"flarum.core.compat['common/extenders']\"","webpack://@flarum/lock/external root \"flarum.core.compat['forum/components/EventPost']\"","webpack://@flarum/lock/./src/forum/components/DiscussionLockedPost.js","webpack://@flarum/lock/./src/forum/extend.ts","webpack://@flarum/lock/./src/forum/index.js","webpack://@flarum/lock/./src/forum/addLockBadge.js","webpack://@flarum/lock/./src/forum/addLockControl.js","webpack://@flarum/emoji/webpack/bootstrap","webpack://@flarum/emoji/webpack/runtime/compat get default export","webpack://@flarum/emoji/webpack/runtime/define property getters","webpack://@flarum/emoji/webpack/runtime/hasOwnProperty shorthand","webpack://@flarum/emoji/webpack/runtime/make namespace object","webpack://@flarum/emoji/external root \"flarum.core.compat['forum/app']\"","webpack://@flarum/emoji/external root \"flarum.core.compat['common/extend']\"","webpack://@flarum/emoji/external root \"flarum.core.compat['common/components/TextEditor']\"","webpack://@flarum/emoji/external root \"flarum.core.compat['common/components/TextEditorButton']\"","webpack://@flarum/emoji/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@flarum/emoji/../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@flarum/emoji/external root \"flarum.core.compat['common/Fragment']\"","webpack://@flarum/emoji/./src/forum/fragments/AutocompleteDropdown.js","webpack://@flarum/emoji/../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@flarum/emoji/../../../node_modules/twemoji/dist/twemoji.esm.js","webpack://@flarum/emoji/./src/forum/helpers/getEmojiIconCode.js","webpack://@flarum/emoji/./src/forum/cdn.js","webpack://@flarum/emoji/external root \"flarum.core.compat['common/models/Post']\"","webpack://@flarum/emoji/./src/forum/renderEmoji.js","webpack://@flarum/emoji/./src/forum/index.js","webpack://@flarum/emoji/./src/forum/addComposerAutocomplete.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/dayjs.min.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/az.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/de.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/es.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/fa.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/fi.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/fr.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/hi.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/hu.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/it.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/ja.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/lt.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/ml.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/nl.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/pt-br.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/pt.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/ro.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/ru.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/si.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/sk.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/sv.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/ta.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/te.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/th.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/tr.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/uz.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/vi.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/zh-cn.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/zh-hk.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/locale/zh-tw.js","webpack://@datlechin/flarum-birthdays/./node_modules/dayjs/plugin/localizedFormat.js","webpack://@datlechin/flarum-birthdays/webpack/bootstrap","webpack://@datlechin/flarum-birthdays/webpack/runtime/compat get default export","webpack://@datlechin/flarum-birthdays/webpack/runtime/define property getters","webpack://@datlechin/flarum-birthdays/webpack/runtime/hasOwnProperty shorthand","webpack://@datlechin/flarum-birthdays/webpack/runtime/make namespace object","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['forum/app']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/extend']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/models/User']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/Model']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['forum/components/SignUpModal']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/EditUserModal']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/Button']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['forum/components/SettingsPage']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/FieldSet']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/utils/Stream']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@datlechin/flarum-birthdays/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@datlechin/flarum-birthdays/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@datlechin/flarum-birthdays/./src/forum/components/ChangeBirthdayModal.js","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/Page']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@datlechin/flarum-birthdays/external root \"flarum.core.compat['common/components/Link']\"","webpack://@datlechin/flarum-birthdays/./src/forum/components/BirthdaysPage.js","webpack://@datlechin/flarum-birthdays/./src/forum/index.js","webpack://@datlechin/flarum-birthdays/./src/forum/helpers/calculateAge.js","webpack://@datitisev/flarum-post-galleries/webpack/runtime/load script","webpack://@datitisev/flarum-post-galleries/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@datitisev/flarum-post-galleries/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@datitisev/flarum-post-galleries/./node_modules/@babel/runtime/regenerator/index.js","webpack://@datitisev/flarum-post-galleries/webpack/bootstrap","webpack://@datitisev/flarum-post-galleries/webpack/runtime/compat get default export","webpack://@datitisev/flarum-post-galleries/webpack/runtime/define property getters","webpack://@datitisev/flarum-post-galleries/webpack/runtime/ensure chunk","webpack://@datitisev/flarum-post-galleries/webpack/runtime/get javascript chunk filename","webpack://@datitisev/flarum-post-galleries/webpack/runtime/global","webpack://@datitisev/flarum-post-galleries/webpack/runtime/hasOwnProperty shorthand","webpack://@datitisev/flarum-post-galleries/webpack/runtime/make namespace object","webpack://@datitisev/flarum-post-galleries/webpack/runtime/publicPath","webpack://@datitisev/flarum-post-galleries/webpack/runtime/jsonp chunk loading","webpack://@datitisev/flarum-post-galleries/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@datitisev/flarum-post-galleries/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://@datitisev/flarum-post-galleries/external root \"flarum.core.compat['forum/app']\"","webpack://@datitisev/flarum-post-galleries/external root \"flarum.core.compat['common/extend']\"","webpack://@datitisev/flarum-post-galleries/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@datitisev/flarum-post-galleries/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@datitisev/flarum-post-galleries/external root \"flarum.core.compat['forum/components/ComposerPostPreview']\"","webpack://@datitisev/flarum-post-galleries/external root \"flarum.core.compat['forum/components/ReplyPlaceholder']\"","webpack://@datitisev/flarum-post-galleries/./src/forum/index.ts","webpack://@datitisev/flarum-post-galleries/./src/forum/Swiper.js","webpack://@clarkwinkelmann/predefined-avatars/webpack/bootstrap","webpack://@clarkwinkelmann/predefined-avatars/webpack/runtime/compat get default export","webpack://@clarkwinkelmann/predefined-avatars/webpack/runtime/define property getters","webpack://@clarkwinkelmann/predefined-avatars/webpack/runtime/hasOwnProperty shorthand","webpack://@clarkwinkelmann/predefined-avatars/webpack/runtime/make namespace object","webpack://@clarkwinkelmann/predefined-avatars/external root \"flarum.core.compat['forum/app']\"","webpack://@clarkwinkelmann/predefined-avatars/external root \"flarum.core.compat['common/extend']\"","webpack://@clarkwinkelmann/predefined-avatars/external root \"flarum.core.compat['forum/components/AvatarEditor']\"","webpack://@clarkwinkelmann/predefined-avatars/external root \"flarum.core.compat['common/components/Button']\"","webpack://@clarkwinkelmann/predefined-avatars/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@clarkwinkelmann/predefined-avatars/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@clarkwinkelmann/predefined-avatars/./src/forum/components/AvatarModal.ts","webpack://@clarkwinkelmann/predefined-avatars/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@clarkwinkelmann/predefined-avatars/./src/forum/index.ts","webpack://@clarkwinkelmann/mailing/webpack/bootstrap","webpack://@clarkwinkelmann/mailing/webpack/runtime/compat get default export","webpack://@clarkwinkelmann/mailing/webpack/runtime/define property getters","webpack://@clarkwinkelmann/mailing/webpack/runtime/hasOwnProperty shorthand","webpack://@clarkwinkelmann/mailing/webpack/runtime/make namespace object","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['forum/app']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/extend']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/components/Button']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['forum/utils/UserControls']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['forum/components/SessionDropdown']\"","webpack://@clarkwinkelmann/mailing/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@clarkwinkelmann/mailing/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/components/Modal']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/components/Switch']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/models/Group']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/utils/KeyboardNavigatable']\"","webpack://@clarkwinkelmann/mailing/./src/forum/components/SentModal.ts","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/Model']\"","webpack://@clarkwinkelmann/mailing/./src/forum/models/Email.ts","webpack://@clarkwinkelmann/mailing/./src/forum/components/EmailUserModal.ts","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/extenders']\"","webpack://@clarkwinkelmann/mailing/external root \"flarum.core.compat['common/models/Forum']\"","webpack://@clarkwinkelmann/mailing/./src/forum/extend.ts","webpack://@clarkwinkelmann/mailing/./src/forum/index.ts","webpack://@clarkwinkelmann/mailing/./src/forum/addMailingLinks.ts","webpack://@clarkwinkelmann/likes-received/webpack/bootstrap","webpack://@clarkwinkelmann/likes-received/webpack/runtime/compat get default export","webpack://@clarkwinkelmann/likes-received/webpack/runtime/define property getters","webpack://@clarkwinkelmann/likes-received/webpack/runtime/hasOwnProperty shorthand","webpack://@clarkwinkelmann/likes-received/webpack/runtime/make namespace object","webpack://@clarkwinkelmann/likes-received/external root \"flarum.core.compat['common/extend']\"","webpack://@clarkwinkelmann/likes-received/external root \"flarum.core.compat['forum/app']\"","webpack://@clarkwinkelmann/likes-received/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@clarkwinkelmann/likes-received/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@clarkwinkelmann/likes-received/./src/forum/index.ts","webpack://@clarkwinkelmann/emojionearea/webpack/bootstrap","webpack://@clarkwinkelmann/emojionearea/external \"flarum.core.compat['forum/app']\"","webpack://@clarkwinkelmann/emojionearea/external \"flarum.core.compat['common/components/TextEditor']\"","webpack://@clarkwinkelmann/emojionearea/external \"flarum.core.compat['common/extend']\"","webpack://@clarkwinkelmann/emojionearea/external \"flarum.core.compat['common/components/Button']\"","webpack://@clarkwinkelmann/emojionearea/./src/forum/index.js","webpack://@askvortsov/flarum-categories/webpack/bootstrap","webpack://@askvortsov/flarum-categories/webpack/runtime/compat get default export","webpack://@askvortsov/flarum-categories/webpack/runtime/define property getters","webpack://@askvortsov/flarum-categories/webpack/runtime/hasOwnProperty shorthand","webpack://@askvortsov/flarum-categories/webpack/runtime/make namespace object","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/extend']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/Model']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['tags/models/Tag']\"","webpack://@askvortsov/flarum-categories/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@askvortsov/flarum-categories/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['forum/app']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/components/Page']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/utils/classList']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['tags/utils/sortTags']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['tags/helpers/tagLabel']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/Component']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/components/Link']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@askvortsov/flarum-categories/./src/forum/components/StatWidget.tsx","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/helpers/username']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/helpers/humanTime']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['common/utils/string']\"","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@askvortsov/flarum-categories/./src/forum/components/LastDiscussionWidget.tsx","webpack://@askvortsov/flarum-categories/./src/forum/components/Category.tsx","webpack://@askvortsov/flarum-categories/./src/forum/components/CategoriesPage.tsx","webpack://@askvortsov/flarum-categories/external root \"flarum.core.compat['tags/forum/components/TagsPage']\"","webpack://@askvortsov/flarum-categories/./src/forum/index.js","webpack://@afrux/news-widget/webpack/bootstrap","webpack://@afrux/news-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets']\"","webpack://@afrux/news-widget/external \"flarum.core.compat['common/app']\"","webpack://@afrux/news-widget/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@afrux/news-widget/external \"flarum.core.compat['common/utils/classList']\"","webpack://@afrux/news-widget/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@afrux/news-widget/external \"flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget']\"","webpack://@afrux/news-widget/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/news-widget/./src/common/components/NewsWidget.tsx","webpack://@afrux/news-widget/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/news-widget/./src/common/registerWidget.ts","webpack://@afrux/news-widget/./src/forum/index.ts","webpack://@afrux/flarum-theme-base/webpack/bootstrap","webpack://@afrux/flarum-theme-base/webpack/runtime/compat get default export","webpack://@afrux/flarum-theme-base/webpack/runtime/define property getters","webpack://@afrux/flarum-theme-base/webpack/runtime/hasOwnProperty shorthand","webpack://@afrux/flarum-theme-base/webpack/runtime/make namespace object","webpack://@afrux/flarum-theme-base/external root \"flarum.core.compat['common/extend']\"","webpack://@afrux/flarum-theme-base/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@afrux/flarum-theme-base/external root \"flarum.core.compat['common/Component']\"","webpack://@afrux/flarum-theme-base/external root \"flarum.core.compat['common/components/Link']\"","webpack://@afrux/flarum-theme-base/./src/forum/components/Footer.js","webpack://@afrux/flarum-theme-base/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@afrux/flarum-theme-base/external root \"flarum.core.compat['forum/ForumApplication']\"","webpack://@afrux/flarum-theme-base/external root \"flarum.core.compat['forum/components/WelcomeHero']\"","webpack://@afrux/flarum-theme-base/./src/forum/compat.js","webpack://@afrux/flarum-theme-base/external assign \"flarum.core\"","webpack://@afrux/flarum-theme-base/./src/forum/index.js","webpack://@afrux/asirem/webpack/bootstrap","webpack://@afrux/asirem/webpack/runtime/compat get default export","webpack://@afrux/asirem/webpack/runtime/define property getters","webpack://@afrux/asirem/webpack/runtime/hasOwnProperty shorthand","webpack://@afrux/asirem/webpack/runtime/make namespace object","webpack://@afrux/asirem/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@afrux/asirem/external root \"flarum.core.compat['common/extend']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['tags/components/TagsPage']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['components/IndexPage']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['components/Link']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['components/LoadingIndicator']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['helpers/listItems']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['helpers/humanTime']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['tags/common/helpers/tagIcon']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['tags/common/helpers/tagLabel']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['tags/common/utils/sortTags']\"","webpack://@afrux/asirem/./src/forum/components/TagsPage.js","webpack://@afrux/asirem/external root \"flarum.core.compat['utils/string']\"","webpack://@afrux/asirem/external root \"flarum.core.compat['extensions/afrux-theme-base/forum/components/Footer']\"","webpack://@afrux/asirem/./src/forum/index.js","webpack://@acpl/mobile-tab/webpack/bootstrap","webpack://@acpl/mobile-tab/webpack/runtime/compat get default export","webpack://@acpl/mobile-tab/webpack/runtime/define property getters","webpack://@acpl/mobile-tab/webpack/runtime/hasOwnProperty shorthand","webpack://@acpl/mobile-tab/webpack/runtime/make namespace object","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['forum/app']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/extend']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/Application']\"","webpack://@acpl/mobile-tab/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@acpl/mobile-tab/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/Component']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/components/Button']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['forum/components/LogInModal']\"","webpack://@acpl/mobile-tab/./src/forum/components/MobileTabItem.tsx","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['forum/components/SessionDropdown']\"","webpack://@acpl/mobile-tab/external root \"flarum.core.compat['common/helpers/avatar']\"","webpack://@acpl/mobile-tab/./src/forum/components/MobileTabSessionDropdown.tsx","webpack://@acpl/mobile-tab/./src/forum/components/MobileTab.tsx","webpack://@acpl/mobile-tab/./src/forum/components/index.ts","webpack://@acpl/mobile-tab/./src/forum/index.ts"],"names":["Array","prototype","flat","depth","reduce","call","this","acc","val","concat","isArray","$","Affix","element","options","extend","DEFAULTS","target","document","find","$target","on","proxy","checkPosition","checkPositionWithEventLoop","$element","affixed","unpin","pinnedOffset","Plugin","option","each","$this","data","VERSION","RESET","offset","window","getState","scrollHeight","height","offsetTop","offsetBottom","scrollTop","position","targetHeight","top","initializing","colliderTop","getPinnedOffset","removeClass","addClass","setTimeout","is","bottom","Math","max","body","affix","css","affixType","e","Event","trigger","isDefaultPrevented","replace","old","fn","Constructor","noConflict","$spy","jQuery","toggle","Dropdown","getParent","selector","attr","test","$parent","length","parent","clearMenus","which","remove","relatedTarget","hasClass","type","tagName","contains","isActive","documentElement","closest","createElement","insertAfter","toggleClass","keydown","preventDefault","stopPropagation","$items","index","eq","dropdown","DISALLOWED_ATTRIBUTES","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeName","toLowerCase","inArray","Boolean","nodeValue","match","regExp","filter","value","RegExp","i","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","implementation","createHTMLDocument","createdDocument","innerHTML","whitelistKeys","map","el","elements","len","elName","attributeList","attributes","whitelistedAttributes","j","len2","removeAttribute","parentNode","removeChild","Tooltip","enabled","timeout","hoverState","inState","init","TRANSITION_DURATION","animation","placement","template","title","delay","html","container","viewport","padding","sanitize","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","getOptions","$viewport","isFunction","click","hover","focus","constructor","Error","triggers","split","eventIn","eventOut","enter","leave","_options","fixTitle","getDefaults","dataAttributes","dataAttr","hasOwnProperty","show","hide","getDelegateOptions","defaults","key","obj","self","currentTarget","tip","clearTimeout","isInStateTrue","hasContent","inDom","ownerDocument","that","$tip","tipId","getUID","setContent","autoToken","autoPlace","detach","left","display","appendTo","pos","getPosition","actualWidth","offsetWidth","actualHeight","offsetHeight","orgPlacement","viewportDim","right","width","calculatedOffset","getCalculatedOffset","applyPlacement","complete","prevHoverState","support","transition","one","emulateTransitionEnd","marginTop","parseInt","marginLeft","isNaN","setOffset","using","props","round","delta","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","dimension","arrow","getTitle","text","callback","removeAttr","$e","isBody","elRect","getBoundingClientRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","random","getElementById","$arrow","enable","disable","toggleEnabled","destroy","off","removeData","tooltip","duration","called","$el","end","transEndEventNames","WebkitTransition","MozTransition","OTransition","name","undefined","style","transitionEnd","event","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","apply","arguments","CanvasImage","canvas","context","getContext","appendChild","drawImage","clear","clearRect","update","putImageData","getPixelCount","getImageData","removeCanvas","ColorThief","getColor","getPalette","c","d","f","g","k","m","n","push","MMCQ","quantize","palette","pv","slice","naturalOrder","sum","sort","peek","pop","size","debug","h","r1","r2","g1","g2","b1","b2","histo","vboxes","vbox","count","volume","forEach","copy","min","_volume","_count_set","_count","avg","_avg","gval","bval","color","nearest","sqrt","pow","forcebw","module","exports","r","y","M","weekdays","months","ordinal","t","String","join","v","z","utcOffset","abs","floor","date","year","month","clone","add","ceil","w","D","ms","Q","_","S","args","O","locale","$L","utc","$u","x","$x","$offset","parse","$d","Date","NaN","substring","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","$locale","weekStart","$set","daysInMonth","get","Number","subtract","format","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","Z","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","T","$i","isDayjs","en","Ls","LTS","LT","L","LL","LLL","LLLL","formats","toUpperCase","future","past","yy","fromToBase","relativeTime","thresholds","rounding","to","from","toNow","fromNow","globalThis","Function","global","keyHandler","keys","origHandler","hotkeys","filterInputAcceptingElements","textInputTypes","filterContentEditable","filterTextInputs","textAcceptingInputTypes","specialKeys","character","fromCharCode","modif","possible","specialKey","metaKey","ctrlKey","indexOf","shiftNums","version","factory","noGlobal","arr","getProto","Object","getPrototypeOf","array","class2type","hasOwn","fnToString","ObjectFunctionString","nodeType","item","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","node","doc","script","getAttribute","setAttribute","head","toType","isArrayLike","jquery","toArray","num","pushStack","elems","ret","merge","prevObject","elem","first","last","even","grep","_elem","odd","splice","copyIsArray","deep","isPlainObject","expando","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","second","invert","matches","callbackExpect","arg","guid","Symbol","iterator","_i","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","dir","next","childNodes","els","seed","nid","groups","newSelector","newContext","exec","id","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","querySelectorAll","qsaError","cache","cacheLength","shift","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","cur","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","addEventListener","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","has","targets","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","JSON","getData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","values","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","cloneNode","noCloneChecked","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","types","origFn","leverageNative","notAsync","saved","isTrigger","stopImmediatePropagation","handleObjIn","eventHandle","events","handlers","namespaces","origType","elemData","create","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","enumerable","originalEvent","writable","load","noBubble","beforeunload","returnValue","defaultPrevented","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","detail","eventPhase","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","append","prepend","insertBefore","before","after","replaceWith","replaceChild","prependTo","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","rboxStyle","rtrimCSS","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","parseFloat","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","cssProps","capName","vendorPropName","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","origName","setProperty","isFinite","scrollboxSizeBuggy","margin","border","suffix","expand","expanded","parts","propHooks","run","percent","eased","step","fx","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","classNames","curValue","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","params","animated","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","fnOver","fnOut","holdReady","hold","parseJSON","isNumeric","trim","_jQuery","_$","Vnode","require","render","subscriptions","rendering","pending","sync","redraw","mount","component","Promise","buildPathname","parsePathname","compileTemplate","assign","sentinel","$window","mountRedraw","fireAsync","setPath","path","history","replaceState","route","pushState","currentPath","lastUpdate","currentResolver","SKIP","defaultRoute","routes","onremove","SyntaxError","callAsync","setImmediate","scheduled","defaultData","some","ReferenceError","resolveRoute","search","pathname","decodeURIComponent","loop","payload","matchedRoute","localComp","comp","onmatch","onbeforeupdate","oncreate","vnode","Link","onclick","oninit","onupdate","onbeforeremove","child","handleEvent","hyperscript","trust","request","parseQueryString","buildQueryString","PromisePolyfill","queryIndex","hashIndex","queryEnd","pathEnd","query","resolved","variadic","newQueryIndex","newHashIndex","newQueryEnd","newPathEnd","querystring","templateData","templateKeys","regexp","executor","resolvers","rejectors","resolveCurrent","rejectCurrent","instance","_instance","shouldAbsorb","execute","retry","executeOnce","runs","onRejection","resolveNext","rejectNext","reason","all","total","consume","race","destructure","charAt","entries","counters","entry","levels","cursor","level","nextLevel","isNumber","desc","getOwnPropertyDescriptor","hyperscriptVnode","normalizeChildren","selectorParser","selectorCache","isEmpty","compileSelector","classes","attrValue","execSelector","newAttrs","currentRedraw","$doc","nameSpace","svg","math","getNameSpace","xmlns","checkState","callHook","createNodes","vnodes","ns","createNode","initLifecycle","dom","insertNode","createText","createHTML","domSize","createFragment","createElementNS","setAttr","setAttrs","maybeSetContentEditable","normalized","setLateSelectAttrs","$$reentrantLock$$","normalize","initComponent","createComponent","possibleParents","updateNodes","removeNodes","isOldKeyed","isKeyed","oldStart","oe","ve","topSibling","oldEnd","updateNode","getNextSibling","moveNodes","lisIndices","originalNextSibling","vnodesLength","oldIndices","getKeyMap","oldIndex","il","lisTemp","makeLisIndices","commonLength","removeNode","oldTag","force","shouldNotUpdate","updateLifecycle","updateText","removeHTML","updateHTML","updateFragment","updateAttrs","updateElement","updateComponent","frag","moveChildToFrag","contenteditable","contentEditable","stateResult","attrsResult","mask","reallyRemove","isLifecycleMethod","isFormAttribute","updateEvent","setAttributeNS","updateStyle","hasPropertyKey","nsLastIndex","uppercaseRegex","capital","normalizeKey","removeProperty","EventDict","ev","prevRedraw","oncompletion","callbackCount","PromiseProxy","makeRequest","background","hasHeader","__proto__","replacedAbort","assumeJSON","FormData","extract","aborted","user","deserialize","withCredentials","config","stringify","callbackKey","Stream","lift","streams","scan","origin","stream","combine","scanMerge","changed","warnedHalt","dependentStreams","dependentFns","_changing","_state","createEnd","_parents","_unregisterChild","_map","ignoreInitial","s1","s2","childIndex","every","mappers","endStream","mapper","log","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","RangeError","mapDomain","encoded","ucs2decode","output","counter","ucs2encode","fromCodePoint","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","decode","codePoint","inputLength","bias","basic","lastIndexOf","oldi","baseMinusT","out","encode","basicLength","handledCPCount","handledCPCountPlusOne","q","qMinusT","toUnicode","toASCII","isBrowser","isFirefox","mozInnerScreenX","getCaretCoordinates","querySelector","currentStyle","isInput","whiteSpace","wordWrap","lineHeight","coordinates","offsetLeft","backgroundColor","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","arr2","__esModule","_defineProperties","descriptor","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","subClass","superClass","_s","_e","_arr","_n","_d","_typeof","assertThisInitialized","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","doneResult","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","iter","skipTempReset","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","_setPrototypeOf","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayLikeToArray","minLen","runtime","regeneratorRuntime","accidentalStrictMode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","bidi","multi","onchange","selectedOptions","oninput","ctrl","patchMithril","defaultMithril","modifiedMithril","Proxy","Reflect","app","dayjs","localizedFormat","tooltipGen","_assertThisInitialized","_inheritsLoose","_extends","setRouteWithForcedRefresh","newOptions","caller","includes","History","getCurrent","getPrevious","secondTop","canGoBack","back","home","backUrl","Pane","pinnedKey","pinned","localStorage","getItem","showing","hideTimeout","onmouseleave","togglePinned","setItem","Component","componentAttrs","initAttrs","subclassOf","B","PageState","Page","bodyClass","scrollTopOnCreate","useBrowserScrollRestoration","previous","routeName","drawer","modal","close","scrollRestoration","_createClass","isObject","Item","priority","ItemList","_items","getPriority","setPriority","otherList","keepPrimitives","createItemContentProxy","toObject","itemName","property","receiver","Separator","isListItem","isVnode","isSeparator","listItems","rawItems","customTag","items","prevItem","newItems","Tag","itemClassName","classList","DiscussionHero","discussion","badges","_objectWithoutPropertiesLoose","excluded","sourceKeys","SluggingMode","external","avatar","loading","hasTitle","avatarUrl","alt","slug","mode","ALPHANUMERIC","UTF8","getPlainContent","removeSelectors","innerText","ucfirst","substr","camelCaseToSnakeCase","str","generateRandomString","Uint8Array","crypto","getRandomValues","dec","padStart","highlight","phrase","highlighted","icon","fontClass","humanTime","extractText","vdom","abbreviateNumber","number","translator","trans","toFixed","buttonClassName","menuClassName","label","caretIcon","accessibleToggleLabel","renderItems","lazyDraw","getButton","getMenu","onshow","$menu","isRight","windowSrollTop","windowHeight","windowScrollLeft","windowWidth","onhide","getButtonContent","datetime","full","ago","humanTimeUtil","pubdate","TerminalPost","lastPost","replyCount","SubtreeRetainer","callbacks","needsRebuild","invalidate","LoadingIndicator","containerClassName","completeClassName","completeContainerClassName","role","containerAttrs","ConfirmDocumentUnload","boundHandler","fireDebugWarning","forum","attribute","fireDeprecationWarning","githubId","removedFrom","repo","Button","ariaLabel","iconName","_class","buttonAttrs","hasIcon","canInsertText","insertText","textarea","selectionStart","selectionEnd","originalSelectionStart","execCommand","endsWith","dispatchEvent","CustomEvent","setSelectionRange","BasicEditorDriver","build","placeholder","callInputListeners","inputListeners","listener","onkeyup","keyHandlers","onsubmit","moveCursorTo","getSelectionRange","getLastNChars","insertAtCursor","insertAt","insertBetween","cursorPos","replaceBeforeCursor","relCoords","childDomNode","oldText","oldVisibility","shouldRecreateTooltip","shouldChangeTooltipVisibility","tooltipVisible","showOnFocus","ignoreTitleWarning","realText","getRealText","checkDomNodeChanged","recreateTooltip","createTooltip","updateVisibility","domNode","isSameNode","TextEditor","controlItems","toolbarItems","composer","editor","buildEditor","newDisabled","buildEditorParams","submitLabel","preview","ComposerBody","confirmExit","preventClosingWhen","hasChanges","fields","originalContent","headerItems","jumpToPreview","loaded","minimizeComposerIfFullScreen","ReplyComposer","relationships","save","post","goToNumber","alert","viewButton","controls","Alert","dismissible","ondismiss","dismissControl","iconHelper","Modal","alertAttrs","missingMethods","animateShow","onready","dismissibleOptions","viaCloseButton","animateHide","pointer","isDismissible","isDismissibleViaCloseButton","viaEscKey","isDismissibleViaEscKey","viaBackdropClick","isDismissibleViaBackdropClick","ForgotPasswordModal","email","emailLabel","requestParams","errorHandler","LogInButtons","SignUpModal","footer","isProvided","field","provided","usernameLabel","passwordLabel","autocomplete","logIn","identification","LogInModal","submitData","reload","authData","remember","identificationLabel","forgotPassword","signUp","loginParams","RenameDiscussionModal","currentTitle","newTitle","section","userControls","DiscussionPage","canReply","replyAction","moderationControls","canRename","renameAction","destructiveControls","isHidden","canHide","restoreAction","canDelete","deleteAction","hideAction","goToLast","forceRefresh","pushData","hiddenAt","hiddenUser","confirm","slidable","$underneathLeft","$underneathRight","startX","startY","couldBeSliding","isSliding","animatePos","newPos","newX","newY","$underneath","side","activate","specialChars","escapeRegExp","DiscussionListItem","subtree","highlightRegExp","freshness","elementAttrs","Slidable","DiscussionControls","controlsView","slidableUnderneathView","contentView","isUnread","markAsRead","isRead","unread","read","authorAvatarView","badgesView","mainView","replyCountItem","createdAt","jumpTo","getJumpTo","infoItems","mostRelevantPost","lastPostNumber","lastReadPostNumber","slidableInstance","showFirstPost","showRepliesCount","firstPost","excerpt","contentPlain","unreadCount","Placeholder","DiscussionList","getParams","isLoading","isInitialLoading","isLoadingNext","hasNext","loadNext","pageSize","isSearchResults","getPages","pg","pageNum","itemNum","hotEdge","DiscussionListPane","hasItems","enoughSpace","$list","pane","$discussion","listTop","listBottom","outerHeight","discussionTop","discussionBottom","ScrollListener","ticking","passive","LoadingPost","ComposerPostPreview","surround","updatePreview","isVisible","s9e","TextFormatter","updateInterval","setInterval","clearInterval","ReplyPlaceholder","anchorPreview","anchorToBottom","PostStream","scrollListener","onscroll","lastTime","viewingEnd","posts","postIds","postFadeIn","visibleStart","PostComponent","dt","period","visibleEnd","endItems","pagesLoading","triggerScroll","calculatePositionTimeout","needsScroll","targetPost","scrollToNumber","animateScroll","scrollToIndex","reply","paused","updateScrubber","loadPostsIfNeeded","calculatePosition","getMarginTop","viewportHeight","viewportTop","$item","loadPrevious","indexFromViewPort","visibleTop","visiblePost","description","startNumber","endNumber","onPositionChange","headerId","scrollToItem","flashItem","$container","itemTop","itemBottom","scrollBottom","updateScrubberHeight","forceUpdateScrubber","loadPromise","itemOffset","$placeholder","formatNumber","Intl","NumberFormat","PostStreamScrubber","updateScrubberValues","fromScroll","forceHeightChange","viewing","formattedCount","unreadPercent","styleUnread","newStyle","oldStyle","goToFirst","onresize","resize","dragging","mouseStart","indexStart","onmousedown","onmousemove","onmouseup","percentPerPost","$scrubber","sanitizeIndex","heights","adjustingHeight","animationPromises","part","$part","scrubber","scrollbar","deltaIndex","newIndex","intIndex","goToIndex","$scrollbar","offsetPercent","offsetIndex","minPercentVisible","percentPerVisiblePost","SplitDropdown","getFirstChild","noTrailing","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","wrapper","arguments_","elapsed","cancel","atBegin","throttle","anchorScroll","relativeScroll","PostStreamState","includedPosts","loadPageTimeouts","_loadNext","_loadPrevious","loadRange","noAnimation","resultPromise","loadNearNumber","loadNearIndex","page","near","loadCount","twoPagesAway","loadPage","backwards","loadIds","canEdit","newPosts","pageContent","loadingItems","sidebar","sidebarItems","hero","mainContent","positionChanged","preloadedDiscussion","bySlug","included","discussionId","rawNearParam","nearParam","HeaderPrimary","LinkButton","SessionDropdown","SelectDropdown","activeChild","defaultLabel","Model","store","exists","getIdentifier","relationship","pushAttributes","model","oldData","copyData","meta","apiEndpoint","pushPayload","rawRelationship","transform","hasOne","relationshipData","hasMany","transformDate","computedValue","compute","dependentValues","recompute","isDark","hexcolor","hexnumbers","textContrastClass","Keys","Badge","iconChild","badgeAttrs","badgeNode","Discussion","lastPostedAt","lastPostedUser","commentCount","lastReadAt","session","removePost","markedAllAsReadAt","link","NotificationList","markAllAsRead","deleteAll","discussions","notification","subject","notifications","group","NotificationComponent","$notifications","$scrollParent","inPanel","boundScrollHandler","scrollHandler","scrollParent","atBottom","clientHeight","NotificationsDropdown","newNotifications","getNewCount","getUnreadCount","menuClick","goToRoute","KeyboardNavigatable","Map","whenCallback","onUp","ArrowUp","onDown","ArrowDown","onSelect","ignoreTabPress","Tab","Enter","onTab","onCancel","Escape","onRemove","Backspace","KeyboardEvent","HTMLInputElement","bindTo","navigate","keyCallback","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","DiscussionsSearchSource","limit","include","UsersSearchResults","localeCompare","Search","searchState","sources","loadingSources","navigator","searchTimeout","updateMaxHeightHandler","currentSearch","getInitialSearch","sourceItems","searchLabel","shouldShowResults","getValue","shouldShowClearButton","focused","setValue","onfocus","onblur","updateMaxHeight","maxHeight","innerHeight","setIndex","getCurrentNumericIndex","selectableItems","$input","selectResult","isCached","MIN_SEARCH_LEN","selectedUrl","UsersSearchSource","$dropdown","fixedIndex","dropdownScroll","dropdownTop","dropdownBottom","HeaderSecondary","locales","cookie","ComposerButton","ComposerState","Position","HIDDEN","componentClass","preventExit","onExit","NORMAL","FULLSCREEN","minimize","MINIMIZED","fullScreen","exitFullScreen","bodyMatches","isFullScreen","composingReplyTo","minimumHeight","maximumHeight","computedHeight","Composer","prevPosition","normal","minimized","showIfMinimized","configHandle","updateHeight","animatePositionChange","initializeHeight","mousedown","heightStart","deltaPixels","changeHeight","updateBodyPadding","$flexible","headerHeight","paddingBottom","footerHeight","animateHeightChange","$composer","oldHeight","newHeight","showBackdrop","$backdrop","hideBackdrop","scrollElement","topOfViewport","defaultHeight","Notification","fromUser","unreadNotificationCount","DiscussionRenamedNotification","postNumber","EditPostComposer","editedContent","editAction","Post","PostControls","footerItems","actionItems","$actions","$controls","existing","GroupBadge","nameSingular","Group","namePlural","ADMINISTRATOR_ID","GUEST_ID","MEMBER_ID","EditUserModal","isEmailConfirmed","setPassword","userGroups","canEditCredentials","nonAdminEditingAdmin","userIsAdmin","canEditGroups","AffixedSidebar","boundOnresize","$sidebar","$header","$footer","$affixElement","UserPage","UserCard","editable","controlsButtonClassName","loadUser","lowercaseUsername","joinTime","navItems","isActor","discussionCount","showDeletionAlert","AvatarEditor","isDraggedOver","quickUpload","ondragover","enableDragover","ondragenter","ondragleave","disableDragover","ondragend","ondrop","dropUpload","openPicker","upload","dataTransfer","files","failure","avatarColor","UserControls","lastSeenAt","online","isOnline","userOnline","PostUser","cardVisible","showCard","hideCard","oncardshow","oncardhide","fullTime","PostMeta","permalink","getPermalink","touch","ipAddress","PostEdited","editedUser","editedInfo","editedAt","CommentPost","revealContent","isEditing","contentHtml","refreshContent","renderFailed","isEdited","editing","toggleContent","EventPost","usernameHelper","descriptionData","descriptionKey","DiscussionRenamedPost","renamed","oldTitle","new","LOCAL_STORAGE_KEY","WelcomeHero","DiscussionComposer","titlePlaceholder","onkeydown","IndexPage","lastDiscussion","viewItems","setTitle","oldHeroHeight","heroHeight","indexTop","indexBottom","discussionOffset","canStartDiscussion","newDiscussionAction","sortMap","sortOptions","sortId","providesInitialSearch","PostsUserPage","moreResults","loadLimit","loadMore","refresh","loadResults","parseResults","author","PaginatedListState","pages","initialLoading","loadingPrev","loadingNext","loadPrev","getLocation","getPrevPageNumber","getNextPageNumber","links","hasPrev","reqParams","refreshParams","newParams","paramsChanged","isLoadingPrev","getAllItems","EventEmitter","emit","globalEventEmitter","DiscussionListState","extraDiscussions","eventEmitter","deleteDiscussion","preloadedDiscussions","relevance","latest","newest","oldest","removeDiscussion","addDiscussion","DiscussionsUserPage","cb","Checkbox","withAttr","getDisplay","Switch","FieldSet","NotificationGrid","methods","notificationMethods","notificationTypes","preferences","toggleMethod","toggleType","preferenceKey","ChangePasswordModal","requestBody","ChangeEmailModal","requestAttributes","SettingsPage","discloseOnlineLoading","settingsItems","sectionItems","accountItems","notificationsItems","privacyItems","discloseOnline","savePreferences","NotificationsPage","DefaultResolver","makeKey","makeAttrs","requestedPath","DiscussionPageResolver","canonicalizeDiscussionSlug","scrollToPostNumber","LabelValue","AccessTokensList","showingTokens","tokenView","isCurrent","tokenViewItems","tokenInfoItems","tokenActionItems","device","generateTokenTitle","lastActivityAt","lastIpAddress","deleteKey","developer_token","displayKey","revokeButton","revoke","ondelete","tokenValueDisplay","obfuscatedName","fill","NewAccessTokenModal","titleInput","titleLabel","onsuccess","UserSecurityPageState","loadingTerminateSessions","loadingGlobalLogout","hasLoadedTokens","getTokens","setTokens","pushToken","removeToken","getSessionTokens","isSessionToken","getDeveloperTokens","getOtherSessionTokens","hasOtherActiveSessions","removeOtherSessionTokens","UserSecurityPage","routeUsername","loadTokens","developerTokensItems","sessionsItems","globalLogout","hideTokens","terminateAllOthersButton","terminateAllOtherSessions","resolverClass","alertEmailConfirmation","ResendButton","ContainedAlert","candidateSelectors","candidateSelector","NoElement","Element","getCandidates","includeContainer","candidates","getCandidatesIteratively","elementsToCheck","assigned","assignedElements","nestedCandidates","flatten","shadowRoot","getShadowRoot","validShadowRoot","shadowRootFilter","getTabindex","isScope","isContentEditable","sortOrderedTabbables","documentOrder","isZeroArea","isNodeMatchingSelectorFocusable","isHiddenInput","_ref","displayCheck","nodeUnderDetails","parentElement","nodeRootHost","nodeIsAttached","originalNode","rootNode","assignedSlot","isDetailsWithSummary","isDisabledFromFieldset","isNodeMatchingSelectorTabbable","isRadio","radioSet","radioScope","form","queryRadios","CSS","getCheckedRadio","isTabbableRadio","isNonTabbableRadio","isValidShadowRootTabbable","shadowHostNode","sortByOrder","regularTabbables","orderedTabbables","candidateTabindex","sortable","tabbable","isTabbable","focusableCandidateSelector","isFocusable","trapQueue","activeFocusTraps","activateTrap","trap","activeTrap","pause","trapIndex","deactivateTrap","unpause","findIndex","valueOrHandler","getActualTarget","composedPath","createFocusTrap","userOptions","returnFocusOnDeactivate","escapeDeactivates","delayInitialFocus","containers","containerGroups","tabbableGroups","nodeFocusedBeforeActivation","mostRecentlyFocusedNode","delayInitialFocusTimer","getOption","configOverrideOptions","optionName","configOptionName","findContainerIndex","tabbableNodes","getNodeForOption","optionValue","getInitialFocusNode","firstTabbableGroup","firstTabbableNode","updateTabbableNodes","tabbableOptions","focusableNodes","lastTabbableNode","nextTabbableNode","nodeIdx","tryFocus","preventScroll","isSelectableInput","getReturnFocusNode","previousActiveElement","checkPointerDown","clickOutsideDeactivates","deactivate","returnFocus","allowOutsideClick","checkFocusIn","targetContained","Document","checkKey","isEscapeEvent","isTabEvent","destinationNode","containerIndex","containerGroup","startOfGroupIndex","destinationGroupIndex","lastOfGroupIndex","checkTab","checkClick","addListeners","capture","removeListeners","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","finishDeactivation","updateContainerElements","containerElements","elementsAsArray","_createFocusTrap","hasPassiveEvents","passiveTestOptions","pluralFormatter","isIosDevice","platform","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPosition","previousBodyPaddingRight","allowTouchMove","rawEvent","clearAllBodyScrollLocks","targetElement","ontouchstart","ontouchmove","restorePositionSetting","paddingRight","ModalManager","focusTrap","lastSetFocusTrap","modalClosing","keyUpListener","modalList","handlePossibleBackdropClick","backdropShown","ontransitionend","onBackdropTransitionEnd","handleEscPress","isModalOpen","dialogKey","activeDialogElement","_toConsumableArray","_window","scrollY","scrollX","bottomBarHeight","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","clientWidth","computedBodyPaddingRight","setOverflowHidden","isTargetElementTotallyScrolled","handleScroll","disableBodyScroll","activeDialogManagerElement","readyCallback","closedCallback","dismissibleState","propertyName","AlertManager","activeAlerts","getActiveAlerts","urgent","dismiss","RequestErrorModal","formattedError","accumulator","memoize","parseCases","isWhitespace","cases","currTermStart","latestTerm","inTerm","caseBody","branchEndIndex","findClosingBracket","fromIndex","char","splitFormattedArgument","block","separator","indexOfDelimiter","tail","keyCounter","OTHER","replaceNumberSign","numBraces","numberValues","keyParam","pluralTypeHandler","intValue","startsWith","keywordPossibilities","resolvedOptions","PluralRules","pluralKeyword","keyword","selectTypeHandler","replaceRichTags","dontUnescapeIndices","onTagClose","segment","currTagIsClosing","currTag","currTagStart","break","endingLocation","findClosingTag","entireTagInSegment","segmentIndex","segmentContainingClosingTag","tagContents","segmentStart","segmentEnd","processedSegment","newSegmentIndex","traverseMessageTags","unEscapeHtml","startIndex","startSegmentIndex","exit","startI","startJ","inTag","instructions","sanitizeValues","recSanitizeArr","defaultRichHandler","RichMessageFormatter","typeHandlers","richHandler","_classCallCheck","_this","cleanedValues","formatted","sym","fakeValues","fromEntries","_ref2","formattedFake","replaceFake","originalTemplateSegmentIndices","MessageFormatter","_defineProperty","blockStartIndex","blockEndIndex","_splitFormattedArgume2","typeHandler","mithrilRichHandler","Translator","translations","formatter","formatterTypeHandlers","setLocale","getLocale","addTranslations","plural","preprocessParameters","parameters","translation","rich","payloadIsPlural","Store","models","pushObject","allowUnregistered","curr","createRecord","idOrParams","getBy","records","Session","csrfToken","login","logout","Drawer","appElement","resizeHandler","isOpen","drawerAvailableMediaQuery","matchMedia","removeListener","$drawer","addListener","mapRoutes","basePath","resolver","RequestError","updateHumanTimes","liveHumanTimes","override","newMethod","Forum","stringToColor","rgb","hsvToRgb","User","isAdmin","newNotificationCount","calculateAvatarColor","Image","colorThief","crossOrigin","newPreferences","ModalManagerState","stackModal","invalidModalWarning","AlertManagerState","alertId","arg1","arg2","arg3","AccessToken","userId","Application","initializers","forums","users","booted","alerts","_title","_titleCount","requestErrorAlert","initialRoute","boot","caughtInitializationErrors","initializer","extension","userTitle","consoleTitle","groupEnd","resources","bootExtensions","extensions","Infinity","appEl","appHeaderEl","preloadedApiDocument","apiDocument","screen","updateTitle","setTitleCount","titleCount","onHomepage","pageTitle","forumName","pageNumber","parser","transformRequestOptions","flarumOptions","modifyText","tmpOptions","originalExtract","requestErrorCatch","customErrorHandler","formattedErrors","decodeURI","requestWasCrossOrigin","isDebug","showDebug","requestErrorDefaultHandler","URL","baseURI","queryString","Navigation","onmouseenter","getBackButton","getPaneButton","getDrawerButton","NotificationListState","SearchState","cachedSearches","Set","GlobalSearchState","initialValueSet","currPageProvidesSearch","intializeValue","clearInitialSearch","stickyParams","changeSort","isSafariMobile","vendor","userAgent","ForumApplication","notificationComponents","discussionRenamed","postComponents","comment","makeRouteHelpers","defaultAction","viewingDiscussion","authenticationComplete","loggedIn","ActualModel","PostTypes","Routes","helpers","helper","deprecatedNotice","deprecationIssueId","getHandlers","blockPrefix","blockSuffix","multiline","replaceNext","prefixSpace","scanFor","surroundWithNewlines","orderedList","unorderedList","trimFirst","isMultipleLines","repeat","newlinesToSurroundSelectedText","newlinesToAppend","newlinesToPrepend","beforeSelection","afterSelection","breaksBefore","breaksAfter","newlinesBeforeSelection","newlinesAfterSelection","undoOrderedListStyle","lines","orderedListRegex","shouldUndoOrderedList","line","processed","undoUnorderedListStyle","shouldUndoUnorderedList","makePrefix","proxifyCompat","compat","strings","regex","fileExt","Select","wrapperAttrs","wrapperClassName","wrapperClass","domAttrs","ColorPreviewInput","TextEditorButton","originalView","tooltipText","extenders","evented","Parent","Mixed","mixins","styleArgs","noInitialSelection","lineLength","expandSelectionToLine","selectedText","undoResultOpositeList","undoResult","pristineText","clearExistingListStyle","prefixedLines","totalPrefixLength","previousValue","_currentValue","currentIndex","totalPrefixLengthOpositeList","listStyle","prefixToUse","suffixToUse","multilineStyle","originalSelectionEnd","wordSelectionStart","breakpoint","wordSelectionEnd","expandedSelectionStart","expandedSelectionEnd","beginsWithPrefix","endsWithSuffix","expandSelectedText","hasReplaceNext","ref","replacementText","whitespaceEdges","leadingWhitespace","trailingWhitespace","blockStyle","ThrottleDebounce","FocusTrap","Fragment","originalOnCreate","humanTimeHelper","third","LogInButton","PostPreview","compatObj","flarum","core","FlagListState","flags","newFlagCount","FlagPostModal","reasonDetail","flagReasons","guidelinesUrl","canFlag","FlagList","FlagsDropdown","nextPost","dismissFlag","flagReason","flagActionItems","FlagsPage","Flag","Extend","addFlagsToPosts","addFlagControl","addFlagsDropdown","flagsCompat","TagListState","loadedIncludes","unloadedIncludes","tagIcon","useColor","TagLinkButton","isChild","tags","tagLabel","tagText","sortTags","aPos","bPos","aParent","bParent","TagsPage","preloaded","tagList","contentItems","cloud","tagTileListView","cloudView","tagTileView","lastPostedDiscussion","colored","currentTag","addTag","more","TagHero","findTag","sensitivity","currentActiveTag","currentTagLoading","newDiscussion","tagsLabel","otherAttrs","getSelectableTags","canAddToDiscussion","ToggleButton","isToggled","TagSelectionModal","bypassReqs","indexTag","canSelect","allowResetting","limits","secondary","catchInvalidLimits","selectableTags","selectedTags","primaryCount","secondaryCount","getFilteredTags","inputWidth","getInstruction","removeTag","meetsRequirements","onmouseover","toggleTag","allowBypassing","requireParentTag","isPrimary","onDeselect","selectedTag","TagDiscussionModal","suppliedOnsubmit","canTag","chooseTags","chosenTags","chosenPrimaryTags","chosenSecondaryTags","minPrimaryTags","minSecondaryTags","maxPrimaryTags","maxSecondaryTags","DiscussionTaggedPost","oldTags","newTags","diffTags","tags1","tags2","tagsAdded","tagsRemoved","backgroundUrl","backgroundMode","defaultSort","isRestricted","commonExtend","addTagFilter","addTagControl","addTagList","addTagLabels","addTagComposer","tagsCompat","isApproved","canApprove","local","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","isPermanentSuspensionDate","SuspendUserModal","suspendedUntil","suspendReason","suspendMessage","daysRemaining","formItems","radioItems","rows","UserSuspendedNotification","timeReadable","UserUnsuspendedNotification","SuspensionInfoModal","timespan","isSuspended","alreadyDisplayed","removeItem","checkForSuspension","canSuspend","suspendCompat","MentionedByModalState","MentionedByModal","mentionedPost","insertMention","quote","mention","replacement","cursorPosition","preceding","precedingNewlines","PostQuoteButton","hideHandler","showStart","showEnd","outerWidth","getSelection","isCollapsed","range","getRangeAt","commonAncestorContainer","cloneContents","AutocompleteDropdown","keyWasJustPressed","keyWasJustPressedTimeout","rangedIndex","MentionsDropdownItem","mentionable","MentionableModels","dropdownItemAttrs","mentionables","typed","searched","typedLower","initialResults","makeSuggestion","suggestion","buildSuggestions","suggestions","maxStoreMatchedResults","dropdownItem","PostMentionedNotification","replyNumber","UserMentionedNotification","GroupMentionedNotification","MentionFormat","instances","extendable","makeMentionables","Mentionable","getMentionable","MentionableModel","getDeletedUserText","getCleanDisplayName","useDisplayName","UserMention","cleanText","PostMention","composerAttrs","composerPost","userMentionable","GroupMention","groupName","canMentionGroups","AtMentionFormat","queryFromTyped","matchTyped","safe","TagMention","HashMentionFormat","MentionFormats","symbol","MentionsUserPage","mentioned","filterUserMentions","hasAttribute","postFilterUserMentions","filterPostMentions","postFilterPostMentions","filterGroupMentions","postFilterGroupMentions","filterTagMentions","postFilterTagMentions","postId","textFormatter","mentionFormats","addPreviews","oldPostContentHtml","parentPost","$parentPost","$preview","getPostElement","showPreview","$post","positionPreview","previewHeight","showPost","hidePreview","addPostMentionPreviews","replies","mentionedBy","mentionedByCount","repliers","overLimit","names","punctuateSeries","addMentionedByList","$postBody","rects","firstRect","lastRect","$editor","relMentionStart","absMentionStart","lastChunk","activeFormat","mentionsCompat","SubscriptionMenuItem","SubscriptionMenu","subscription","buttonLabel","buttonIcon","buttonClass","notifyEmail","notifyAlert","shouldShowTooltip","saveSubscription","NewPostNotification","badge","states","none","follow","ignore","onFollowing","followAfterReply","followAfterReplyLoading","PostLikesModalState","PostLikesModal","liked","PostLikedNotification","LikesUserPage","likedBy","canLike","likes","isLiked","like","likesCount","installedModules","modules","sortWidgets","widgets","WidgetManager","widget","getbyId","getWidgetInstances","withHidden","setConfig","Widgets","Widget","header","EndWidgetSection","StartTopWidgetSection","StartBottomWidgetSection","TopWidgetSection","scrollEnd","isSmallScreen","scrollWidth","BottomWidgetSection","customCompat","SmallUserCard","_UserCard","UserDirectoryUserCard","UserDirectoryListItem","_Component","_this$attrs","useSmallCards","UserDirectoryList","SortMap","username_az","username_za","most_discussions","least_discussions","UserDirectoryState","qBuilder","_proto","sortKey","default","hasUsers","_this2","preloadedUsers","_this$users","CheckableButton","_Button","AbstractType","resourceType","renderKind","resource","renderLabel","applyFilter","initializeFromParams","TextFilter","_AbstractType","word","GroupFilter","qWithSpacesAround","queryGroups","queryGroup","SearchField","searchIndex","allSuggestions","applyFiltering","appliedFilters","availableFilters","filterTypes","_this$appliedFilters","recipient","searchResultKind","recipientLabel","performNewSearch","filterForResource","clearSuggestions","_this3","_this4","UserDirectoryPage","_Page","_this$params","_this$params$q","idSegments","matchAll","enabledGroupFilters","enabledSpecialGroupFilters","changeParams","groupItems","moreQ","groupsQ","routeParams","Text","_Model","_len","components","searchTypes","linkGroupMentions","fof_user_directory","followingPageOptions","getDefaultFollowingFiltering","preference","followTagsPageDefault","utils","isFollowingPage","subscriptionOptions","labelKey","SubscriptionOptionItem","isSelected","SubscriptionModal","canShowTooltip","formOptionItems","subscriptionOptionItems","requestData","res","SubscriptionStateButton","FollowingPageFilterDropdown","followTags","NewDiscussionNotification","lurk","icons","NewDiscussionTagNotification","newPostInTag","newDiscussionInTag","newDiscussionTag","NicknameModal","nickname","canEditNickname","NickNameModal","required","Uint32Array","PageHero","PagePage","isHtml","HomePage","_PagePage","editTime","homePage","GiveBadgeModal","selectedBadge","userHasBadge","categories","uncategorizedBadges","category","checkUserHasBadge","class","foundBadge","userBadges","userBadge","BadgeModal","userBadgeData","handleErrors","assignedAt","earnedAmount","mixin","order","iconColor","labelColor","BadgeCategory","isEnabled","isTable","UserBadge","inUserCard","forceVisibility","isPartlyHidden","borderColor","categorizeUserBadges","uncategorized","sortedCategories","UserBadgeList","BadgesProfilePage","TableView","BlockListView","BadgesOverviewPage","BadgeUserList","badgeId","BadgeItemPage","found","userBadgeListState","addSidebarNav","UserBadgeListState","BadgeReceivedNotification","SelectUserCardBadgesModal","selectedBadges","userCardBadges","badgeCategories","badgeReceived","visibleBadges","canDoublePost","timeLimit","isExpired","isDoublePosting","formatBytes","bytes","decimals","dm","CoverEditorModal","_Modal","maxSize","cover","cover_thumbnail","backgroundImage","fieldsItems","showAlert","coverUrl","thumbnailUrl","canSetProfileCover","Input","ProgressBar","Label","LabelGroup","parentClassName","iconValue","mini","fancy","alternate","getProgress","DiscussionSearch","DiscussionSearchSource","DiscussionPageState","selectedPostsToMove","MovePostsModal","newDiscussionTitle","targetDiscussionId","readonly","for","emulate","sourceDiscussionId","PostMovedPost","target_discussion","targetDiscussionTitle","PostMovedNotification","isFirstMoved","operation","MyTerminalPost","showAvatar","isPrivateDiscussion","findByClassName","replaceAvatar","avatarPosition","ProfileView","visitedAt","viewer","viewedUser","userprofileview","profileViews","latestProfileViews","viewcount","lastViewed","views","userName","toLocaleString","DiscussionView","ResetDiscussionViewsModal","currentViewsCount","viewCount","resetViews","PostDiscussionViewsModal","uniqueViews","popular","unpopular","canViewNumber","canReset","viewList","listitem","MarkdownButton","hotkey","markdownToolbarItems","oldFunc","modifierKey","bold","italic","strikethrough","unordered_list","ordered_list","spoiler","center","justify","dropcap","ileft","iright","pleft","pright","details","down","audio","clip","tab","iframe","bar","makeShortcut","applyStyle","editorDriver","styleSelectedText","makeApplyStyle","textEditor","heading","image_add","text_add","size_18","size_20","size_22","size_24","size_26","size_28","size_30","size_32","size_34","size_36","size_38","size_40","color_grey","color_green","color_blue","color_purple","color_yellow","color_orange","color_red","color_silver","color_pink","color_brown","color_white","color_black","_this5","warning","asuccess","ainfo","abasic","acustom","bcustom","bwarning","bsuccess","berror","bnotice","cwarning","cnotice","cerror","csuccess","dnotice","derror","dwarning","dsuccess","_this6","black","blue","red","_this7","img_left","img_center","img_right","_this8","ins","del","var","acronym","float_left","float_right","gdocs","gdoc","responseXML","styleString","extraDocStyles","populateGDocs","createTabs","$inputs","_this9","XF","samViewCountMethod","samServerTime","samItem","samCodeUnit","samBannerUnit","adBlock_div","adBlock_url","adBlock_img","adBlock_alt","my_div","tag_div","text_content","text_content_sup","adBlock_notice_content_sup","adBlock_action","adBlock_supportUsTitle","adBlock_supportUsMessage","adBlock_supportRedirectUrl","adBlock_notice_element","adBlock_notice_method","adBlock_notice_content","adBlockAction","supportUsTitle","supportUsMessage","supportRedirectUrl","adBlockNotice","hasContentHeight","ad","adminActions","ignoreContent","adsenseUnit","googleTagUnit","ignoredHeight","create_adblock_Cookie","days","setTime","expires","toGMTString","samCoreLoaded","adUnits","backup","adsBlocked","canDisplayNotice","dismissCookieTime","nameEQ","ca","read_adblock_Cookie","notice","notice_text","outerText","pUrl","rUrl","$overlay","getOverlayHtml","Overlay","backdropClose","keyboard","escapeClose","initDetection","moment","defineLocale","meridiemParse","isPM","hours","minutes","isLower","longDateFormat","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","dayOfMonthOrdinalParse","week","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","forms","standalone","isFormat","day","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","narrow","abbr","eraYearOrdinalRegex","eraYearOrdinalParse","$0","$1","$2","isUpper","eifelerRegelAppliesToNumber","units","translateSingular","relativeTimeWithSingular","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","numberNoun","hundred","ten","numberAsNoun","hm","processHoursFunction","nominative","accusative","genitive","hookCallback","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isDate","arrLen","createUTC","strict","createLocalOrUTC","getParsingFlags","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","deprecationHandler","argLen","deprecations","deprecateSimple","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","formatMoment","expandFormat","makeFormatFunction","replaceLongDateFormatTokens","lastIndex","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","regexEscape","p1","p2","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","setMonth","dayOfMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","daysInYear","parseTwoDigitYear","getSetYear","createDate","setFullYear","createUTCDate","setUTCFullYear","firstWeekOffset","fwd","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","seconds","kInput","_isPm","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","localeFamilies","commonPrefix","arr1","minl","normalizeLocale","loadLocale","oldLocale","isLocaleNameSane","_abbr","aliasedRequire","getSetGlobalLocale","_config","parentLocale","chooseLocale","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","untruncateYear","yearStr","configFromRFC2822","parsedArray","monthStr","dayStr","hourStr","minuteStr","secondStr","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","calculateOffset","setUTCMinutes","configFromArray","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekYear","weekdayOverflow","curWeek","GG","W","E","createLocal","_week","gg","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","isPm","meridiemFixWrap","erasConvertYear","prepareConfig","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromStringAndArray","createFromInputFallback","configFromString","dayOrDate","millisecond","configFromObject","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","years","quarters","quarter","weeks","isoWeek","milliseconds","unitHasDecimal","orderLen","isDurationValid","_milliseconds","_days","_months","_bubble","isDuration","absRound","sign","offsetFromString","chunkOffset","cloneWithOffset","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","diffRes","parseIso","positiveMomentsDifference","inp","createAdder","direction","addSubtract","isAdding","invalid","isString","isMomentInput","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","propertyLen","isMomentInputObject","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","setWeekAll","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","isoWeekYear","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","preParsePostFormat","isCalendarSpec","sod","calendarFormat","asFloat","zoneDelta","startOfDate","isoWeekday","inputString","humanize","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","prioritizedLen","keepOffset","zone","creationData","eraName","eraNarrow","eraAbbr","eraYear","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","dates","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","_relativeTime","pastFuture","_eras","_monthsShort","_monthsParseExact","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","_fullWeekdaysParse","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","substituteTimeAgo","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","posNegDuration","relativeTime$1","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","webpackContext","req","webpackContextResolve","nmd","paths","WelcomeBoxWidget","_Widget","userLang","useWidget","isGuestBoxHidden","SettingsLink","ImgAvatar","isUnique","isLoginAvailable","SignupComponent","EventsWidget","limitPost","Charlength","LastUsersPosts","registerWidget","ReplaceHashTag","hotEdgeRtl","fip","discussionListPaneScrollTop","__createBinding","k2","__exportStar","__importDefault","mod","parse_1","stringify_1","__spreadArray","pack","ar","isTraversal","reName","reEscape","actionTypes","Traversals","attribSelectors","unpackPseudos","traversalNames","caseInsensitiveAttributes","stripQuotesFromPseudos","quotes","escaped","escapedWhitespace","unescapeCSS","parseSelector","subselects","selectorIndex","_b","sawWS","getName","stripWhitespace","isEscaped","slashCount","ensureNotTraversal","firstChar","endIndex","_c","name_1","action","ignoreCase","xmlMode","name_2","lowerCaseAttributeNames","possibleAction","sectionEnd","valueStart","forceIgnore","attributeSelector","name_3","quot","name_4","addToken","lowerCaseTags","equals","any","hyphen","charsToEscape","typeKey","stringifySubselector","stringifyToken","getNamespace","getNamespacedName","escapeName","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","GenStateSuspendedYield","FollowLevels","freeze","SelectFollowUserTypeModal","saving","followState","followed","_this$state$user","availableLevelOptions","_extends2","selectedLevel","onFollowLevelChange","saveFollowLevel","selectElement","_app$translator","_len2","_key2","_saveFollowLevel","_callee","newFollowState","followUsers","findFirstVdomChild","manipulationFunc","searchChildren","cssWhat","criterion","_attr","_attr2","_attr3","_attr3$split","doesChildMatchSelectors","openFollowLevelModal","_Notification","NewFollowerNotification","NewUnfollowerNotification","follow_tags","FollowedUserListItem","ProfilePage","_UserPage","followedUsers","changeUserFollowOptions","followingBlockingUser","canBeFollowed","followButton","followedUsersCount","followingCount","_this$user","blocksFollow","blocksFollowLoading","user_directory","followersUsersCount","followerCount","newFollower","newUnfollower","newDiscussionByUser","newPostByUser","UsernameRequest","_mixin","forNickname","_requestedUsername","requestedUsername","newName","RequestModal","userRequestAttr","lastRequest","translationPrefix","deleteLoading","submitLoading","deleteRequest","successAlert","currentAttr","ActionModal","approved","requestedName","requests","showModal","RequestsPage","RequestsList","RequestsDropdown","_NotificationsDropdow","ResultsModal","delete","ProfileConfigurePane","usernameHistory","oldUsername","calculateTime","setUTCSeconds","RequestsListState","approvedNickname","approvedUsername","autoLink","UserBio","bioMaxLength","bioPlaceholder","tempBio","bio","maxlength","tempSelector","subContent","bioHtml","rel","maxLines","edit","wasBlurred","shouldIgnore","UploadButton","uploader","isMediaUploadButton","buttonText","uploading","uploadButtonClicked","multiple","DragAndDrop","composerElement","supportsFileDragging","dropping","unload","isNotFile","kind","over","PasteClipboard","paste","clipboardData","getAsFile","Uploader","uploaded","setState","fileState","addBBcode","_this2$fileState","fileObj","addToList","mimeToIconMap","mimeToIcon","fileType","DisplayFile","isFileHiding","imageLoaded","fileIcon","isSelectable","handleImageError","handleImageLoad","fileSelectable","isImage","fileSelectedClass","uuid","onFileClick","draggable","baseName","displayIcon","alignItems","justifyContent","canViewInfo","viewFileInfo","transPrefix","isShared","hideTranslation","fileName","deleteTranslation","confirmDelete","onHide","_confirmDelete","onDelete","_x","AbstractFileList","inModal","restrictFileType","downloadOnClick","filesBeingHidden","selectable","loadFileList","fileCollection","_file$id","_file$id2","fileClassNames","selectedFiles","hideFile","hasMoreResults","onFileSelect","_hideFile","filePayload","t0","UserFileList","_AbstractFileList","setUser","UploadSharedFileModal","fileInput","shared","onFileChange","addFiles","newFiles","onDragOver","onDrop","onDropzoneClick","createObjectURL","_upload","formData","uploadedFiles","onUploadComplete","SharedFileList","FileListState","sharedFiles","_loadResults","_loadMore","_callee2","_context2","_results$payload","_results$payload$link","_this$files","removeFromList","hasFiles","FileManagerModal","multiSelect","dragDrop","selectedFilesLibrary","defaultFilesLibrary","sharedUploads","userFileState","sharedFileState","onUpload","_app$session$user","fileCount","hideUser","hideShared","uploadSharedFiles","showUploadModal","accessSharedFiles","fileLibraryButtonItems","userFilesContent","sharedFilesContent","setLibrary","library","itemPosition","fileId","bbcode","FileManagerButton","fileManagerButtonClicked","File","humanSize","isPrivateShared","UploadsUserPage","viewOthersMediaLibrary","UploadedFile","statusIcon","hideFileIcon","deleteOthersMediaLibrary","uploadCountCurrent","uploadCountAll","composerButtonVisiblity","f_","originalIsFullScreen","dragAndDropTarget","fofUploadDragAndDropTarget","dragAndDrop","dataset","fofUploadDownloadUuid","canUpload","hasUploads","uploadCount","Policy","update_message","terms_updated_at","form_key","AcceptPoliciesModal","policy","policies","sortByAttribute","has_update","hadToAcceptToInteract","updated","temporarilyHidden","UpdateAlert","shouldShowAlert","fofTermsPoliciesHasUpdate","addAlertToContent","originalArgs","additional","UserPoliciesStateModal","fofTermsPoliciesState","accepted_at","initialized","fofTermsPoliciesMustAccept","fofTermsPolicies","legalText","DiscussionCreatedNotification","PostCreatedNotification","UserCreatedNotification","PostUnapprovedNotification","PostFlaggedNotification","discussionCreated","postCreated","userCreated","postUnapproved","postFlagged","canSubscribeDiscussionCreated","canSubscribePostCreated","canSubscribePostUnapproved","canSubscribeUserCreated","canSubscribePostFlagged","_app$session","currentUser","IconSelectorComponent","social","ic","allowsExternal","favicon","curIcon","WebsiteInputComponent","onUrlChange","waitUntilFinished","urlInstance","isValidUrl","iconurl","extractUriHost","SocialButtonsModal","socialButtons","createButtonObject","areAnyIconsBeingFetched","addSocialButton","delSocialButton","curdel","canViewSocialProfile","canEditSocialProfile","buttonList","buttonStyle","backgroundSize","backgroundPosition","backgroundRepeat","deleting","networks","facebook","twitter","linkedin","reddit","whatsapp","telegram","vkontakte","odnoklassniki","my_mail","qq","qzone","native","share","getNativeData","networkIcons","_discussion$firstPost","shareUrl","_construct","Class","construct","sham","isNativeReflectConstruct","_wrapNativeSuper","_cache","Wrapper","_htmlEscape","MissingValueError","_Error","pupa","_temp","_ref$ignoreMissing","ignoreMissing","_ref$transform","replacer","_step","_iterator","_createForOfIteratorHelperLoose","transformedValue","doubleBraceRegex","_step$value","htmlEscape","getNetworkButton","network","_ref$isRounded","isRounded","onNetworkButtonClick","windowParams","dataKey","getNetworkButtons","def","canShare","ShareModal","shareItems","copyText","toggleCopyIcon","copyButton","isNativeShare","canNativeShare","methodName","RecaptchaState","widgetId","grecaptcha","sitekey","theme","getResponse","isInvisible","_load","js","addResources","Recaptcha","recaptcha","shouldUseCaptcha","argument1","addRecaptchaToAuthModal","dataMethod","isRecaptchaSecondStep","extendComposer","leafPrototypes","dataWebpackPrefix","chunkId","promises","needAttach","nc","onScriptComplete","doneFns","scriptUrl","importScripts","currentScript","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","dataURLToBlob","dataURL","base64","Blob","builder","BlobBuilder","MSBlobBuilder","MozBlobBuilder","WebKitBlobBuilder","getBlob","createBlob","binaryStringToArrayBuffer","atob","buf","ArrayBuffer","prepare","__webpack_public_path__","loadCropper","loadImageBlobReduce","ProfileImageCropModal","reader","FileReader","readAsDataURL","loadPicker","cropper","disableResize","noResize","disableCrop","Cropper","aspectRatio","viewMode","guides","responsive","submitBlob","getCroppedCanvas","canvasToBlob","imageBlobReduce","resizedCanvas","blob","toCanvas","toBlob","AUTO","LIGHT","DARK","DEFAULT","__assign","stringifyAttribute","stringified","setMilliseconds","domain","secure","sameSite","stringifyAttributes","KEY","cookieString","cookies_1","Themes","Cookies","fixInvalidThemeSetting","validValues","Theme","resetTheme","getTheme","IsUsingPerDeviceSettings","fofNightMode_perDevice","SelectedTheme","fofNightMode","setTheme","PerDevice","setThemeFromID","getUrls","night","setStyle","light","dark","bothStyleSheets","newLink","colorScheme","getIsLight","switchTheme","isLight","perDevice","newTheme","doesNotSupportAuto","currentTheme","setSelectedTheme","isInternal","isNewtab","useRelMe","LinkItem","_LinkButton","isLabel","labelView","linkView","LinkLabelNode","inDropdown","'['","isDropdownButton","linkAttrs","linkTarget","linkHref","iconClass","isLinkCurrentPage","linkPath","sortLinks","LinkDropdown","_SplitDropdown","hasChildren","ignoredUsers","canBeIgnored","frontpage","front","isFront","Draft","scheduledValidationError","scheduledFor","updatedAt","loadedRelationships","loadRelationships","relationshipName","fillRelationship","recipients","compileData","draft","DraftsListItem","canSchedule","scheduledDraftIcon","showComposer","deleteDraft","scheduleDraft","DraftsList","drafts","DraftsPage","DraftsDropdown","CurrentDate","CurrentTime","ScheduleDraftModal","previewFormatString","isScheduled","formattedDateTime","unschedule","getTimeOrNull","clearValidationError","DraftsListState","deepEqual","obj1","obj2","keys1","keys2","_keys","initComposerBody","deleteDraftsOnSubmit","fieldValue","draftFieldValue","equalRelationships","_draft$relationships$","_draft$relationships$2","getId","dataIds","draftIds","_relationships","afterSave","justSaved","saveDraft","draftAutosaveEnable","autosaveInterval","draftAutosaveInterval","prevented","PrivateDiscussionComposer","draftsItems","draftAutosaveEnableLoading","draftAutosaveIntervalInvalid","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","hasSymbols","toStr","origDefineProperty","supportsDescriptors","arePropertyDescriptorsSupported","predicate","defineProperties","predicates","getOwnPropertySymbols","bound","boundLength","boundArgs","Empty","$SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","DataView","encodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","URIError","WeakMap","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","getBaseIntrinsic","intrinsicName","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","origSymbol","hasSymbolSham","symObj","syms","propertyIsEnumerable","IntersectionObserverEntry","intersectionRatio","startDoc","frame","getFrameElement","registry","crossOriginUpdater","crossOriginRect","IntersectionObserver","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","boundingClientRect","intersectionRect","convertFromParentRect","observer","_checkForIntersections","_resetCrossOriginUpdater","observe","_observationTargets","_registerInstance","_monitorIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","disconnect","_unmonitorAllIntersections","takeRecords","_queuedEntries","_initThresholds","opt_threshold","_parseRootMargin","opt_rootMargin","margins","_monitoringDocuments","monitoringInterval","domObserver","addEvent","MutationObserver","childList","characterData","_monitoringUnsubscribes","rootDoc","hasDependentTargets","itemDoc","unsubscribe","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","performance","_hasCrossedThreshold","isIntersecting","_callback","rect1","rect2","getParentNode","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","isDoc","_expandRectByRootMargin","_rootMarginValues","newRect","oldRatio","newRatio","containsDeep","frameElement","ensureDOMRect","targetArea","intersectionArea","opt_options","rootMargin","opt_useCapture","detatchEvent","parentBoundingRect","parentIntersectionRect","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","getNative","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","iteratee","castPath","toKey","getRawTag","objectToString","symToStringTag","isMasked","toSource","reIsHostCtor","funcProto","objectProto","funcToString","reIsNative","arrayMap","isSymbol","symbolProto","symbolToString","baseToString","isKey","coreJsData","freeGlobal","isKeyable","__data__","baseIsNative","nativeObjectToString","unmasked","nativeCreate","reIsDeepProp","reIsPlainProp","maskSrcKey","IE_PROTO","assocIndexOf","getMapData","freeSelf","memoizeCapped","baseGet","baseGetTag","isObjectLike","memoized","Cache","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","hasAutomationEqualityBug","isArguments","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","shim","keysWorksWithArguments","callee","callBound","$push","$propIsEnumerable","originalGetSymbols","source1","objTarget","getSymbols","letters","actual","lacksProperEnumerationOrder","preventExtensions","thrower","assignHasPendingExceptions","getPolyfill","polyfill","loadedSet","DiscussionThumbnail","configImage","onLoad","lazyImage","clazz","customThumbnail","hasInitialised","interpolateString","getCookie","setCookie","setHours","deepExtend","normaliseHex","getContrast","getLuminance","isMobile","traverseDOMPath","deny","allow","OT","msT","MozT","WebkitT","hasTransition","customStyles","Popup","expiryDays","onPopupOpen","onPopupClose","onInitialise","onStatusChange","onRevokeChoice","onNoCookieLaw","messagelink","revokeBtn","compliance","layouts","layout","static","revokable","animateRevokable","showLink","dismissOnScroll","dismissOnTimeout","dismissOnWindowClick","ignoreClicksFrom","autoOpen","autoAttach","whitelistPage","blacklistPage","overrideHTML","initialise","openingTimeout","afterTransition","onButtonClick","setStatus","revokeChoice","cookieEnabled","CookiesOK","getStatus","customStyleSelector","references","popup","sheet","insertRule","dismissTimeout","onWindowScroll","onWindowClick","onMouseMove","ownerNode","toggleRevokeButton","clearStatus","hasAnswered","hasConsented","Location","services","serviceDefinitions","ipinfo","country","ipinfodb","isScript","statusMessage","countryCode","maxmind","geoip2","iso_code","currentServiceIndex","ActiveXObject","getNextService","getServiceByIdx","locate","callbackComplete","callbackError","runService","runNextServiceOnError","setupUrl","getCurrentServiceOpts","__JSONP_DATA","interpolateUrl","runServiceCallback","onServiceResult","logError","completeService","Law","regionalLaw","hasLaw","explicitAction","applyLaw","law","getCountryCode","cookieconsent","BanIPModal","address","bannedIP","banOptions","banOption","otherUsers","otherUsersBanned","usernames","htmlFor","ip","getOtherUsers","bannedIPs","banned_ip","banned_ips","isBanned","UnbanIPModal","_BanIPModal","ips","skipValidation","BannedIP","creator","deletedAt","canBanIP","extCompat","HandleSpammerModal","hardDeleteUser","hardDeleteDiscussions","hardDeletePosts","moveDiscussionsToQuarantine","reportToSfs","defaultActions","tagsEnabled","sfsEnabled","deletePosts","deleteDiscussions","deleteUser","BlockedRegistration","sfsData","provider","providerData","attemptedAt","canSpamblock","gtag","user_id","page_path","gtagpush","virtualpath","_paq","DiscussionStickiedPost","sticky","isSticky","canSticky","stickyAction","MarkdownToolbar","textareaId","setShortcutHandler","shortcutHandler","DiscussionLockedNotification","DiscussionLockedPost","isLocked","canLock","lockAction","twemoji","ext","convert","codepoint","toCodePoint","how","parseString","parseNode","defaultImageSrcGenerator","returnNull","folder","re","escaper","UFE0Fg","U200D","rescaper","shouldntBeParsed","clean","grabAllTextNodes","allText","subnode","grabTheRightIcon","rawText","attrib","attrname","iconId","unicodeSurrogates","sep","getEmojiIconCode","emoji","emojiKeys","emojiMap","relEmojiStart","absEmojiStart","cdn","similarEmoji","regTyped","maxSuggestions","findMatchingEmojis","curEmoji","oldContentHtml","emojifiedDom","emojifiedContentHtml","yearStart","numbers","ChangeBirthdayModal","birthday","BirthdaysPage","setResults","loadUsers","today","LocalizedFormat","birthdays","showDobDate","showDobYear","canEditOwnBirthday","_user$preferences","userLocale","dateNoneYearFormat","age","birthDate","calculateAge","showDobDateLoading","showDobYearLoading","swiperOptions","centeredSlides","centeredSlidesBounds","spaceBetween","zoom","pagination","navigation","nextEl","prevEl","loadedSwiperCSS","obtainSwiper","createGalleries","galleries","$elements","useZoom","_ref3","Swiper","Pagination","Zoom","images","swiperWrapper","swiperEl","_x2","destroyGalleries","gallery","registerDestroy","register","imageGallery","AvatarModal","avatars","predefinedAvatar","SentModal","recipientsCount","Email","EMAIL_REGEXP","EmailUserModal","sending","messageText","asHtml","loadingResults","searchResults","forAll","membersGroup","buildSearchResults","userDirectory","addMailingLinks","isInteger","emojioneAreaLoaded","emojioneAreaClickedOutside","emojioneArea","hidePicker","configureEmojioneArea","searchPlaceholder","buttonTitle","recentEmojis","filtersPosition","searchPosition","tones","sprite","emojibtn_click","emojioneAreaLoading","integrity","showPicker","StatWidget","LastDiscussionWidget","_discussion$lastPostN","card","Category","collapsed","compactMobileMode","tagLocked","isUnlocked","isGroupProtected","isPasswordProtected","isProtectedTagDisplayedForTagsPage","SubCategory","ParentCategory","compactMobile","categoryItems","alignStartItems","alignEndItems","iconItems","mainItems","toggleArrow","lockedItems","statItems","lastDiscussionItems","iconClasses","postCount","CategoriesPage","pageItems","containerItems","pruneIndexNav","isTagsPageVisible","isCustomTagsHidden","NewsWidget","newslines","switching","prevLine","newLineIndex","Footer","hasLinks","hasDescription","hasBottomLine","upper","lower","tagIconNode","discussionListItemContent","AsiremTagsPage","MobileTabItem","MobileTabSessionDropdown","_SessionDropdown","MobileTab","mTab"],"mappings":";uBAOKA,MAAMC,UAAgB,OACzBD,MAAMC,UAAgB,KAAI,SAASC,EAAuCC,GAExE,OAAa,MAALA,EAAAA,EAAS,GAAK,EAElBH,MAAMC,UAAUG,OAAOC,KAAKC,MAAM,SAACC,EAAKC,GAAG,OAAYD,EAAIE,OAAOT,MAAMU,QAAQF,GAAON,EAAKG,KAAKG,EAAKL,EAAQ,GAAKK,EAAI,GAAE,IAGzH,UACIF,KACV,eCRD,SAAUK,GACT,aAKA,IAAIC,EAAQ,SAARA,EAAkBC,EAASC,GAC7BR,KAAKQ,QAAUH,EAAEI,OAAO,CAAC,EAAGH,EAAMI,SAAUF,GAE5C,IAAIG,EAASX,KAAKQ,QAAQG,SAAWL,EAAMI,SAASC,OAASN,EAAEL,KAAKQ,QAAQG,QAAUN,EAAEO,UAAUC,KAAKb,KAAKQ,QAAQG,QAEpHX,KAAKc,QAAUH,EACZI,GAAG,2BAA4BV,EAAEW,MAAMhB,KAAKiB,cAAejB,OAC3De,GAAG,0BAA4BV,EAAEW,MAAMhB,KAAKkB,2BAA4BlB,OAE3EA,KAAKmB,SAAed,EAAEE,GACtBP,KAAKoB,QAAe,KACpBpB,KAAKqB,MAAe,KACpBrB,KAAKsB,aAAe,KAEpBtB,KAAKiB,eACP,EA0FA,SAASM,EAAOC,GACd,OAAOxB,KAAKyB,MAAK,WACf,IAAIC,EAAUrB,EAAEL,MACZ2B,EAAUD,EAAMC,KAAK,YACrBnB,EAA2B,iBAAVgB,GAAsBA,EAEtCG,GAAMD,EAAMC,KAAK,WAAaA,EAAO,IAAIrB,EAAMN,KAAMQ,IACrC,iBAAVgB,GAAoBG,EAAKH,IACtC,GACF,CAjGAlB,EAAMsB,QAAW,QAEjBtB,EAAMuB,MAAW,+BAEjBvB,EAAMI,SAAW,CACfoB,OAAQ,EACRnB,OAAQoB,QAGVzB,EAAMX,UAAUqC,SAAW,SAAUC,EAAcC,EAAQC,EAAWC,GACpE,IAAIC,EAAerC,KAAKc,QAAQuB,YAC5BC,EAAetC,KAAKmB,SAASW,SAC7BS,EAAevC,KAAKc,QAAQoB,SAEhC,GAAiB,MAAbC,GAAqC,OAAhBnC,KAAKoB,QAAkB,OAAOiB,EAAYF,GAAY,MAE/E,GAAoB,UAAhBnC,KAAKoB,QACP,OAAiB,MAAbe,IAA2BE,EAAYrC,KAAKqB,OAASiB,EAASE,MAAe,WACzEH,EAAYE,GAAgBN,EAAeG,IAAwB,SAG7E,IAAIK,EAAiC,MAAhBzC,KAAKoB,QACtBsB,EAAiBD,EAAeJ,EAAYC,EAASE,IAGzD,OAAiB,MAAbL,GAAqBE,GAAaF,EAAkB,MACpC,MAAhBC,GAAyBM,GAHRD,EAAeF,EAAeL,IAGUD,EAAeG,GAAsB,QAGpG,EAEA9B,EAAMX,UAAUgD,gBAAkB,WAChC,GAAI3C,KAAKsB,aAAc,OAAOtB,KAAKsB,aACnCtB,KAAKmB,SAASyB,YAAYtC,EAAMuB,OAAOgB,SAAS,SAChD,IAAIR,EAAYrC,KAAKc,QAAQuB,YACzBC,EAAYtC,KAAKmB,SAASW,SAC9B,OAAQ9B,KAAKsB,aAAegB,EAASE,IAAMH,CAC7C,EAEA/B,EAAMX,UAAUuB,2BAA6B,WAC3C4B,WAAWzC,EAAEW,MAAMhB,KAAKiB,cAAejB,MAAO,EAChD,EAEAM,EAAMX,UAAUsB,cAAgB,WAC9B,GAAKjB,KAAKmB,SAAS4B,GAAG,YAAtB,CAEA,IAAIb,EAAelC,KAAKmB,SAASe,SAC7BJ,EAAe9B,KAAKQ,QAAQsB,OAC5BK,EAAeL,EAAOU,IACtBJ,EAAeN,EAAOkB,OACtBf,EAAegB,KAAKC,IAAI7C,EAAEO,UAAUsB,SAAU7B,EAAEO,SAASuC,MAAMjB,UAE9C,iBAAVJ,IAA4BM,EAAeD,EAAYL,GAC1C,mBAAbK,IAA4BA,EAAeL,EAAOU,IAAIxC,KAAKmB,WAC3C,mBAAhBiB,IAA4BA,EAAeN,EAAOkB,OAAOhD,KAAKmB,WAEzE,IAAIiC,EAAQpD,KAAKgC,SAASC,EAAcC,EAAQC,EAAWC,GAE3D,GAAIpC,KAAKoB,SAAWgC,EAAO,CACP,MAAdpD,KAAKqB,OAAerB,KAAKmB,SAASkC,IAAI,MAAO,IAEjD,IAAIC,EAAY,SAAWF,EAAQ,IAAMA,EAAQ,IAC7CG,EAAYlD,EAAEmD,MAAMF,EAAY,aAIpC,GAFAtD,KAAKmB,SAASsC,QAAQF,GAElBA,EAAEG,qBAAsB,OAE5B1D,KAAKoB,QAAUgC,EACfpD,KAAKqB,MAAiB,UAAT+B,EAAoBpD,KAAK2C,kBAAoB,KAE1D3C,KAAKmB,SACFyB,YAAYtC,EAAMuB,OAClBgB,SAASS,GACTG,QAAQH,EAAUK,QAAQ,QAAS,WAAa,YACrD,CAEa,UAATP,GACFpD,KAAKmB,SAASW,OAAO,CACnBU,IAAKP,EAAeC,EAASE,GAnCQ,CAsC3C,EAiBA,IAAIwB,EAAMvD,EAAEwD,GAAGT,MAEf/C,EAAEwD,GAAGT,MAAoB7B,EACzBlB,EAAEwD,GAAGT,MAAMU,YAAcxD,EAMzBD,EAAEwD,GAAGT,MAAMW,WAAa,WAEtB,OADA1D,EAAEwD,GAAGT,MAAQQ,EACN5D,IACT,EAMAK,EAAE0B,QAAQhB,GAAG,QAAQ,WACnBV,EAAE,sBAAsBoB,MAAK,WAC3B,IAAIuC,EAAO3D,EAAEL,MACT2B,EAAOqC,EAAKrC,OAEhBA,EAAKG,OAASH,EAAKG,QAAU,CAAC,EAEL,MAArBH,EAAKS,eAAsBT,EAAKG,OAAOkB,OAASrB,EAAKS,cAChC,MAArBT,EAAKQ,YAAsBR,EAAKG,OAAOU,IAASb,EAAKQ,WAEzDZ,EAAOxB,KAAKiE,EAAMrC,EACpB,GACF,GAEF,CA1JC,CA0JCsC,oBC1JD,SAAU5D,GACT,aAKA,IACI6D,EAAW,2BACXC,EAAW,SAAU5D,GACvBF,EAAEE,GAASQ,GAAG,oBAAqBf,KAAKkE,OAC1C,EAIA,SAASE,EAAU1C,GACjB,IAAI2C,EAAW3C,EAAM4C,KAAK,eAErBD,IAEHA,GADAA,EAAW3C,EAAM4C,KAAK,UACC,YAAYC,KAAKF,IAAaA,EAASV,QAAQ,iBAAkB,KAG1F,IAAIa,EAAuB,MAAbH,EAAmBhE,EAAEO,UAAUC,KAAKwD,GAAY,KAE9D,OAAOG,GAAWA,EAAQC,OAASD,EAAU9C,EAAMgD,QACrD,CAEA,SAASC,EAAWpB,GACdA,GAAiB,IAAZA,EAAEqB,QACXvE,EAvBa,sBAuBDwE,SACZxE,EAAE6D,GAAQzC,MAAK,WACb,IAAIC,EAAgBrB,EAAEL,MAClBwE,EAAgBJ,EAAU1C,GAC1BoD,EAAgB,CAAEA,cAAe9E,MAEhCwE,EAAQO,SAAS,UAElBxB,GAAe,SAAVA,EAAEyB,MAAmB,kBAAkBT,KAAKhB,EAAE5C,OAAOsE,UAAY5E,EAAE6E,SAASV,EAAQ,GAAIjB,EAAE5C,UAEnG6D,EAAQf,QAAQF,EAAIlD,EAAEmD,MAAM,mBAAoBsB,IAE5CvB,EAAEG,uBAENhC,EAAM4C,KAAK,gBAAiB,SAC5BE,EAAQ5B,YAAY,QAAQa,QAAQpD,EAAEmD,MAAM,qBAAsBsB,MACpE,IACF,CAlCAX,EAASvC,QAAU,QAoCnBuC,EAASxE,UAAUuE,OAAS,SAAUX,GACpC,IAAI7B,EAAQrB,EAAEL,MAEd,IAAI0B,EAAMqB,GAAG,wBAAb,CAEA,IAAIyB,EAAWJ,EAAU1C,GACrByD,EAAWX,EAAQO,SAAS,QAIhC,GAFAJ,KAEKQ,EAAU,CACT,iBAAkBvE,SAASwE,kBAAoBZ,EAAQa,QAAQ,eAAeZ,QAEhFpE,EAAEO,SAAS0E,cAAc,QACtBzC,SAAS,qBACT0C,YAAYlF,EAAEL,OACde,GAAG,QAAS4D,GAGjB,IAAIG,EAAgB,CAAEA,cAAe9E,MAGrC,GAFAwE,EAAQf,QAAQF,EAAIlD,EAAEmD,MAAM,mBAAoBsB,IAE5CvB,EAAEG,qBAAsB,OAE5BhC,EACG+B,QAAQ,SACRa,KAAK,gBAAiB,QAEzBE,EACGgB,YAAY,QACZ/B,QAAQpD,EAAEmD,MAAM,oBAAqBsB,GAC1C,CAEA,OAAO,CA9BqC,CA+B9C,EAEAX,EAASxE,UAAU8F,QAAU,SAAUlC,GACrC,GAAK,gBAAgBgB,KAAKhB,EAAEqB,SAAU,kBAAkBL,KAAKhB,EAAE5C,OAAOsE,SAAtE,CAEA,IAAIvD,EAAQrB,EAAEL,MAKd,GAHAuD,EAAEmC,iBACFnC,EAAEoC,mBAEEjE,EAAMqB,GAAG,wBAAb,CAEA,IAAIyB,EAAWJ,EAAU1C,GACrByD,EAAWX,EAAQO,SAAS,QAEhC,IAAKI,GAAuB,IAAX5B,EAAEqB,OAAeO,GAAuB,IAAX5B,EAAEqB,MAE9C,OADe,IAAXrB,EAAEqB,OAAaJ,EAAQ3D,KAAKqD,GAAQT,QAAQ,SACzC/B,EAAM+B,QAAQ,SAGvB,IACImC,EAASpB,EAAQ3D,KAAK,8CAE1B,GAAK+E,EAAOnB,OAAZ,CAEA,IAAIoB,EAAQD,EAAOC,MAAMtC,EAAE5C,QAEZ,IAAX4C,EAAEqB,OAAeiB,EAAQ,GAAmBA,IACjC,IAAXtC,EAAEqB,OAAeiB,EAAQD,EAAOnB,OAAS,GAAGoB,KAC1CA,IAA0CA,EAAQ,GAExDD,EAAOE,GAAGD,GAAOpC,QAAQ,QARC,CAbkB,CAP0C,CA6BxF,EAgBA,IAAIG,EAAMvD,EAAEwD,GAAGkC,SAEf1F,EAAEwD,GAAGkC,SAZL,SAAgBvE,GACd,OAAOxB,KAAKyB,MAAK,WACf,IAAIC,EAAQrB,EAAEL,MACV2B,EAAQD,EAAMC,KAAK,eAElBA,GAAMD,EAAMC,KAAK,cAAgBA,EAAO,IAAIwC,EAASnE,OACrC,iBAAVwB,GAAoBG,EAAKH,GAAQzB,KAAK2B,EACnD,GACF,EAKArB,EAAEwD,GAAGkC,SAASjC,YAAcK,EAM5B9D,EAAEwD,GAAGkC,SAAShC,WAAa,WAEzB,OADA1D,EAAEwD,GAAGkC,SAAWnC,EACT5D,IACT,EAMAK,EAAEO,UACCG,GAAG,6BAA8B4D,GACjC5D,GAAG,6BAA8B,kBAAkB,SAAUwC,GAAKA,EAAEoC,iBAAkB,IACtF5E,GAAG,6BAA8BmD,EAAQC,EAASxE,UAAUuE,QAC5DnD,GAAG,+BAAgCmD,EAAQC,EAASxE,UAAU8F,SAC9D1E,GAAG,+BAAgC,iBAAkBoD,EAASxE,UAAU8F,QAE7E,CA3JC,CA2JCxB,oBC3JD,SAAU5D,GACT,aAEA,IAAI2F,EAAwB,CAAC,WAAY,YAAa,cAElDC,EAAW,CACb,aACA,OACA,OACA,WACA,WACA,SACA,MACA,cA4CEC,EAAmB,8DAOnBC,EAAmB,sIAEvB,SAASC,EAAiB9B,EAAM+B,GAC9B,IAAIC,EAAWhC,EAAKiC,SAASC,cAE7B,IAAmD,IAA/CnG,EAAEoG,QAAQH,EAAUD,GACtB,OAAuC,IAAnChG,EAAEoG,QAAQH,EAAUL,IACfS,QAAQpC,EAAKqC,UAAUC,MAAMV,IAAqB5B,EAAKqC,UAAUC,MAAMT,IAWlF,IALA,IAAIU,EAASxG,EAAEgG,GAAsBS,QAAO,SAAUjB,EAAOkB,GAC3D,OAAOA,aAAiBC,MAC1B,IAGSC,EAAI,EAAGC,EAAIL,EAAOpC,OAAQwC,EAAIC,EAAGD,IACxC,GAAIX,EAASM,MAAMC,EAAOI,IACxB,OAAO,EAIX,OAAO,CACT,CAEA,SAASE,EAAaC,EAAYC,EAAWC,GAC3C,GAA0B,IAAtBF,EAAW3C,OACb,OAAO2C,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GAIpB,IAAKxG,SAAS2G,iBAAmB3G,SAAS2G,eAAeC,mBACvD,OAAOJ,EAGT,IAAIK,EAAkB7G,SAAS2G,eAAeC,mBAAmB,gBACjEC,EAAgBtE,KAAKuE,UAAYN,EAKjC,IAHA,IAAIO,EAAgBtH,EAAEuH,IAAIP,GAAW,SAAUQ,EAAIZ,GAAK,OAAOA,CAAE,IAC7Da,EAAWzH,EAAEoH,EAAgBtE,MAAMtC,KAAK,KAEnCoG,EAAI,EAAGc,EAAMD,EAASrD,OAAQwC,EAAIc,EAAKd,IAAK,CACnD,IAAIY,EAAKC,EAASb,GACde,EAASH,EAAGtB,SAASC,cAEzB,IAA0C,IAAtCnG,EAAEoG,QAAQuB,EAAQL,GAStB,IAHA,IAAIM,EAAgB5H,EAAEuH,IAAIC,EAAGK,YAAY,SAAUL,GAAM,OAAOA,CAAG,IAC/DM,EAAwB,GAAGhI,OAAOkH,EAAU,MAAQ,GAAIA,EAAUW,IAAW,IAExEI,EAAI,EAAGC,EAAOJ,EAAcxD,OAAQ2D,EAAIC,EAAMD,IAChDhC,EAAiB6B,EAAcG,GAAID,IACtCN,EAAGS,gBAAgBL,EAAcG,GAAG7B,eAVtCsB,EAAGU,WAAWC,YAAYX,EAa9B,CAEA,OAAOJ,EAAgBtE,KAAKuE,SAC9B,CAKA,IAAIe,EAAU,SAAUlI,EAASC,GAC/BR,KAAKgF,KAAa,KAClBhF,KAAKQ,QAAa,KAClBR,KAAK0I,QAAa,KAClB1I,KAAK2I,QAAa,KAClB3I,KAAK4I,WAAa,KAClB5I,KAAKmB,SAAa,KAClBnB,KAAK6I,QAAa,KAElB7I,KAAK8I,KAAK,UAAWvI,EAASC,EAChC,EAEAiI,EAAQ7G,QAAW,QAEnB6G,EAAQM,oBAAsB,IAE9BN,EAAQ/H,SAAW,CACjBsI,WAAW,EACXC,UAAW,MACX5E,UAAU,EACV6E,SAAU,+GACVzF,QAAS,cACT0F,MAAO,GACPC,MAAO,EACPC,MAAM,EACNC,WAAW,EACXC,SAAU,CACRlF,SAAU,OACVmF,QAAS,GAEXC,UAAW,EACXnC,WAAa,KACbD,UAvJqB,CAErB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAJT,kBAK3BqC,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BC,KAAM,GACNC,EAAG,GACHC,GAAI,GACJC,IAAK,GACLC,KAAM,GACNC,IAAK,GACLC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJvD,EAAG,GACHwD,IAAK,CAAC,MAAO,MAAO,QAAS,QAAS,UACtCC,GAAI,GACJC,GAAI,GACJC,EAAG,GACHC,IAAK,GACLC,EAAG,GACHC,MAAO,GACPC,KAAM,GACNC,IAAK,GACLC,IAAK,GACLC,OAAQ,GACRC,EAAG,GACHC,GAAI,KA2HN5C,EAAQ9I,UAAUmJ,KAAO,SAAU9D,EAAMzE,EAASC,GAQhD,GAPAR,KAAK0I,SAAY,EACjB1I,KAAKgF,KAAYA,EACjBhF,KAAKmB,SAAYd,EAAEE,GACnBP,KAAKQ,QAAYR,KAAKsL,WAAW9K,GACjCR,KAAKuL,UAAYvL,KAAKQ,QAAQ+I,UAAYlJ,EAAEO,UAAUC,KAAKR,EAAEmL,WAAWxL,KAAKQ,QAAQ+I,UAAYvJ,KAAKQ,QAAQ+I,SAASxJ,KAAKC,KAAMA,KAAKmB,UAAanB,KAAKQ,QAAQ+I,SAASlF,UAAYrE,KAAKQ,QAAQ+I,UACnMvJ,KAAK6I,QAAY,CAAE4C,OAAO,EAAOC,OAAO,EAAOC,OAAO,GAElD3L,KAAKmB,SAAS,aAAcP,SAASgL,cAAgB5L,KAAKQ,QAAQ6D,SACpE,MAAM,IAAIwH,MAAM,yDAA2D7L,KAAKgF,KAAO,mCAKzF,IAFA,IAAI8G,EAAW9L,KAAKQ,QAAQiD,QAAQsI,MAAM,KAEjC9E,EAAI6E,EAASrH,OAAQwC,KAAM,CAClC,IAAIxD,EAAUqI,EAAS7E,GAEvB,GAAe,SAAXxD,EACFzD,KAAKmB,SAASJ,GAAG,SAAWf,KAAKgF,KAAMhF,KAAKQ,QAAQ6D,SAAUhE,EAAEW,MAAMhB,KAAKkE,OAAQlE,YAC9E,GAAe,UAAXyD,EAAqB,CAC9B,IAAIuI,EAAsB,SAAXvI,EAAqB,aAAe,UAC/CwI,EAAsB,SAAXxI,EAAqB,aAAe,WAEnDzD,KAAKmB,SAASJ,GAAGiL,EAAW,IAAMhM,KAAKgF,KAAMhF,KAAKQ,QAAQ6D,SAAUhE,EAAEW,MAAMhB,KAAKkM,MAAOlM,OACxFA,KAAKmB,SAASJ,GAAGkL,EAAW,IAAMjM,KAAKgF,KAAMhF,KAAKQ,QAAQ6D,SAAUhE,EAAEW,MAAMhB,KAAKmM,MAAOnM,MAC1F,CACF,CAEAA,KAAKQ,QAAQ6D,SACVrE,KAAKoM,SAAW/L,EAAEI,OAAO,CAAC,EAAGT,KAAKQ,QAAS,CAAEiD,QAAS,SAAUY,SAAU,KAC3ErE,KAAKqM,UACT,EAEA5D,EAAQ9I,UAAU2M,YAAc,WAC9B,OAAO7D,EAAQ/H,QACjB,EAEA+H,EAAQ9I,UAAU2L,WAAa,SAAU9K,GACvC,IAAI+L,EAAiBvM,KAAKmB,SAASQ,OAEnC,IAAK,IAAI6K,KAAYD,EACfA,EAAeE,eAAeD,KAA6D,IAAhDnM,EAAEoG,QAAQ+F,EAAUxG,WAC1DuG,EAAeC,GAiB1B,OAbAhM,EAAUH,EAAEI,OAAO,CAAC,EAAGT,KAAKsM,cAAeC,EAAgB/L,IAE/C4I,OAAiC,iBAAjB5I,EAAQ4I,QAClC5I,EAAQ4I,MAAQ,CACdsD,KAAMlM,EAAQ4I,MACduD,KAAMnM,EAAQ4I,QAId5I,EAAQiJ,WACVjJ,EAAQ0I,SAAW/B,EAAa3G,EAAQ0I,SAAU1I,EAAQ6G,UAAW7G,EAAQ8G,aAGxE9G,CACT,EAEAiI,EAAQ9I,UAAUiN,mBAAqB,WACrC,IAAIpM,EAAW,CAAC,EACZqM,EAAW7M,KAAKsM,cAMpB,OAJAtM,KAAKoM,UAAY/L,EAAEoB,KAAKzB,KAAKoM,UAAU,SAAUU,EAAK/F,GAChD8F,EAASC,IAAQ/F,IAAOvG,EAAQsM,GAAO/F,EAC7C,IAEOvG,CACT,EAEAiI,EAAQ9I,UAAUuM,MAAQ,SAAUa,GAClC,IAAIC,EAAOD,aAAe/M,KAAK4L,YAC7BmB,EAAM1M,EAAE0M,EAAIE,eAAetL,KAAK,MAAQ3B,KAAKgF,MAW/C,GATKgI,IACHA,EAAO,IAAIhN,KAAK4L,YAAYmB,EAAIE,cAAejN,KAAK4M,sBACpDvM,EAAE0M,EAAIE,eAAetL,KAAK,MAAQ3B,KAAKgF,KAAMgI,IAG3CD,aAAe1M,EAAEmD,QACnBwJ,EAAKnE,QAAoB,WAAZkE,EAAI/H,KAAoB,QAAU,UAAW,GAGxDgI,EAAKE,MAAMnI,SAAS,OAA4B,MAAnBiI,EAAKpE,WACpCoE,EAAKpE,WAAa,SADpB,CASA,GAJAuE,aAAaH,EAAKrE,SAElBqE,EAAKpE,WAAa,MAEboE,EAAKxM,QAAQ4I,QAAU4D,EAAKxM,QAAQ4I,MAAMsD,KAAM,OAAOM,EAAKN,OAEjEM,EAAKrE,QAAU7F,YAAW,WACD,MAAnBkK,EAAKpE,YAAoBoE,EAAKN,MACpC,GAAGM,EAAKxM,QAAQ4I,MAAMsD,KAVtB,CAWF,EAEAjE,EAAQ9I,UAAUyN,cAAgB,WAChC,IAAK,IAAIN,KAAO9M,KAAK6I,QACnB,GAAI7I,KAAK6I,QAAQiE,GAAM,OAAO,EAGhC,OAAO,CACT,EAEArE,EAAQ9I,UAAUwM,MAAQ,SAAUY,GAClC,IAAIC,EAAOD,aAAe/M,KAAK4L,YAC7BmB,EAAM1M,EAAE0M,EAAIE,eAAetL,KAAK,MAAQ3B,KAAKgF,MAW/C,GATKgI,IACHA,EAAO,IAAIhN,KAAK4L,YAAYmB,EAAIE,cAAejN,KAAK4M,sBACpDvM,EAAE0M,EAAIE,eAAetL,KAAK,MAAQ3B,KAAKgF,KAAMgI,IAG3CD,aAAe1M,EAAEmD,QACnBwJ,EAAKnE,QAAoB,YAAZkE,EAAI/H,KAAqB,QAAU,UAAW,IAGzDgI,EAAKI,gBAAT,CAMA,GAJAD,aAAaH,EAAKrE,SAElBqE,EAAKpE,WAAa,OAEboE,EAAKxM,QAAQ4I,QAAU4D,EAAKxM,QAAQ4I,MAAMuD,KAAM,OAAOK,EAAKL,OAEjEK,EAAKrE,QAAU7F,YAAW,WACD,OAAnBkK,EAAKpE,YAAqBoE,EAAKL,MACrC,GAAGK,EAAKxM,QAAQ4I,MAAMuD,KAVU,CAWlC,EAEAlE,EAAQ9I,UAAU+M,KAAO,WACvB,IAAInJ,EAAIlD,EAAEmD,MAAM,WAAaxD,KAAKgF,MAElC,GAAIhF,KAAKqN,cAAgBrN,KAAK0I,QAAS,CACrC1I,KAAKmB,SAASsC,QAAQF,GAEtB,IAAI+J,EAAQjN,EAAE6E,SAASlF,KAAKmB,SAAS,GAAGoM,cAAcnI,gBAAiBpF,KAAKmB,SAAS,IACrF,GAAIoC,EAAEG,uBAAyB4J,EAAO,OACtC,IAAIE,EAAOxN,KAEPyN,EAAOzN,KAAKkN,MAEZQ,EAAQ1N,KAAK2N,OAAO3N,KAAKgF,MAE7BhF,KAAK4N,aACLH,EAAKnJ,KAAK,KAAMoJ,GAChB1N,KAAKmB,SAASmD,KAAK,mBAAoBoJ,GAEnC1N,KAAKQ,QAAQwI,WAAWyE,EAAK5K,SAAS,QAE1C,IAAIoG,EAA6C,mBAA1BjJ,KAAKQ,QAAQyI,UAClCjJ,KAAKQ,QAAQyI,UAAUlJ,KAAKC,KAAMyN,EAAK,GAAIzN,KAAKmB,SAAS,IACzDnB,KAAKQ,QAAQyI,UAEX4E,EAAY,eACZC,EAAYD,EAAUtJ,KAAK0E,GAC3B6E,IAAW7E,EAAYA,EAAUtF,QAAQkK,EAAW,KAAO,OAE/DJ,EACGM,SACA1K,IAAI,CAAEb,IAAK,EAAGwL,KAAM,EAAGC,QAAS,UAChCpL,SAASoG,GACTtH,KAAK,MAAQ3B,KAAKgF,KAAMhF,MAE3BA,KAAKQ,QAAQ8I,UAAYmE,EAAKS,SAAS7N,EAAEO,UAAUC,KAAKb,KAAKQ,QAAQ8I,YAAcmE,EAAKlI,YAAYvF,KAAKmB,UACzGnB,KAAKmB,SAASsC,QAAQ,eAAiBzD,KAAKgF,MAE5C,IAAImJ,EAAenO,KAAKoO,cACpBC,EAAeZ,EAAK,GAAGa,YACvBC,EAAed,EAAK,GAAGe,aAE3B,GAAIV,EAAW,CACb,IAAIW,EAAexF,EACfyF,EAAc1O,KAAKoO,YAAYpO,KAAKuL,WAExCtC,EAAyB,UAAbA,GAAyBkF,EAAInL,OAASuL,EAAeG,EAAY1L,OAAS,MAC7D,OAAbiG,GAAyBkF,EAAI3L,IAAS+L,EAAeG,EAAYlM,IAAS,SAC7D,SAAbyG,GAAyBkF,EAAIQ,MAASN,EAAeK,EAAYE,MAAS,OAC7D,QAAb3F,GAAyBkF,EAAIH,KAASK,EAAeK,EAAYV,KAAS,QAC1E/E,EAEZwE,EACG7K,YAAY6L,GACZ5L,SAASoG,EACd,CAEA,IAAI4F,EAAmB7O,KAAK8O,oBAAoB7F,EAAWkF,EAAKE,EAAaE,GAE7EvO,KAAK+O,eAAeF,EAAkB5F,GAEtC,IAAI+F,EAAW,WACb,IAAIC,EAAiBzB,EAAK5E,WAC1B4E,EAAKrM,SAASsC,QAAQ,YAAc+J,EAAKxI,MACzCwI,EAAK5E,WAAa,KAEI,OAAlBqG,GAAyBzB,EAAKrB,MAAMqB,EAC1C,EAEAnN,EAAE6O,QAAQC,YAAcnP,KAAKyN,KAAK1I,SAAS,QACzC0I,EACG2B,IAAI,kBAAmBJ,GACvBK,qBAAqB5G,EAAQM,qBAChCiG,GACJ,CACF,EAEAvG,EAAQ9I,UAAUoP,eAAiB,SAAUjN,EAAQmH,GACnD,IAAIwE,EAASzN,KAAKkN,MACd0B,EAASnB,EAAK,GAAGa,YACjBpM,EAASuL,EAAK,GAAGe,aAGjBc,EAAYC,SAAS9B,EAAKpK,IAAI,cAAe,IAC7CmM,EAAaD,SAAS9B,EAAKpK,IAAI,eAAgB,IAG/CoM,MAAMH,KAAaA,EAAa,GAChCG,MAAMD,KAAaA,EAAa,GAEpC1N,EAAOU,KAAQ8M,EACfxN,EAAOkM,MAAQwB,EAIfnP,EAAEyB,OAAO4N,UAAUjC,EAAK,GAAIpN,EAAEI,OAAO,CACnCkP,MAAO,SAAUC,GACfnC,EAAKpK,IAAI,CACPb,IAAKS,KAAK4M,MAAMD,EAAMpN,KACtBwL,KAAM/K,KAAK4M,MAAMD,EAAM5B,OAE3B,GACClM,GAAS,GAEZ2L,EAAK5K,SAAS,MAGd,IAAIwL,EAAeZ,EAAK,GAAGa,YACvBC,EAAed,EAAK,GAAGe,aAEV,OAAbvF,GAAsBsF,GAAgBrM,IACxCJ,EAAOU,IAAMV,EAAOU,IAAMN,EAASqM,GAGrC,IAAIuB,EAAQ9P,KAAK+P,yBAAyB9G,EAAWnH,EAAQuM,EAAaE,GAEtEuB,EAAM9B,KAAMlM,EAAOkM,MAAQ8B,EAAM9B,KAChClM,EAAOU,KAAOsN,EAAMtN,IAEzB,IAAIwN,EAAsB,aAAazL,KAAK0E,GACxCgH,EAAsBD,EAA0B,EAAbF,EAAM9B,KAAWY,EAAQP,EAA0B,EAAZyB,EAAMtN,IAAUN,EAASqM,EACnG2B,EAAsBF,EAAa,cAAgB,eAEvDvC,EAAK3L,OAAOA,GACZ9B,KAAKmQ,aAAaF,EAAYxC,EAAK,GAAGyC,GAAsBF,EAC9D,EAEAvH,EAAQ9I,UAAUwQ,aAAe,SAAUL,EAAOM,EAAWJ,GAC3DhQ,KAAKqQ,QACFhN,IAAI2M,EAAa,OAAS,MAAO,IAAM,EAAIF,EAAQM,GAAa,KAChE/M,IAAI2M,EAAa,MAAQ,OAAQ,GACtC,EAEAvH,EAAQ9I,UAAUiO,WAAa,WAC7B,IAAIH,EAAQzN,KAAKkN,MACb/D,EAAQnJ,KAAKsQ,WAEbtQ,KAAKQ,QAAQ6I,MACXrJ,KAAKQ,QAAQiJ,WACfN,EAAQhC,EAAagC,EAAOnJ,KAAKQ,QAAQ6G,UAAWrH,KAAKQ,QAAQ8G,aAGnEmG,EAAK5M,KAAK,kBAAkBwI,KAAKF,IAEjCsE,EAAK5M,KAAK,kBAAkB0P,KAAKpH,GAGnCsE,EAAK7K,YAAY,gCACnB,EAEA6F,EAAQ9I,UAAUgN,KAAO,SAAU6D,GACjC,IAAIhD,EAAOxN,KACPyN,EAAOpN,EAAEL,KAAKyN,MACdlK,EAAOlD,EAAEmD,MAAM,WAAaxD,KAAKgF,MAErC,SAASgK,IACgB,MAAnBxB,EAAK5E,YAAoB6E,EAAKM,SAC9BP,EAAKrM,UACPqM,EAAKrM,SACFsP,WAAW,oBACXhN,QAAQ,aAAe+J,EAAKxI,MAEjCwL,GAAYA,GACd,CAIA,GAFAxQ,KAAKmB,SAASsC,QAAQF,IAElBA,EAAEG,qBAYN,OAVA+J,EAAK7K,YAAY,MAEjBvC,EAAE6O,QAAQC,YAAc1B,EAAK1I,SAAS,QACpC0I,EACG2B,IAAI,kBAAmBJ,GACvBK,qBAAqB5G,EAAQM,qBAChCiG,IAEFhP,KAAK4I,WAAa,KAEX5I,IACT,EAEAyI,EAAQ9I,UAAU0M,SAAW,WAC3B,IAAIqE,EAAK1Q,KAAKmB,UACVuP,EAAGpM,KAAK,UAAqD,iBAAlCoM,EAAGpM,KAAK,yBACrCoM,EAAGpM,KAAK,sBAAuBoM,EAAGpM,KAAK,UAAY,IAAIA,KAAK,QAAS,GAEzE,EAEAmE,EAAQ9I,UAAU0N,WAAa,WAC7B,OAAOrN,KAAKsQ,UACd,EAEA7H,EAAQ9I,UAAUyO,YAAc,SAAUjN,GAGxC,IAAI0G,GAFJ1G,EAAaA,GAAYnB,KAAKmB,UAER,GAClBwP,EAAuB,QAAd9I,EAAG5C,QAEZ2L,EAAY/I,EAAGgJ,wBACC,MAAhBD,EAAOhC,QAETgC,EAASvQ,EAAEI,OAAO,CAAC,EAAGmQ,EAAQ,CAAEhC,MAAOgC,EAAOjC,MAAQiC,EAAO5C,KAAM9L,OAAQ0O,EAAO5N,OAAS4N,EAAOpO,OAEpG,IAAIsO,EAAQ/O,OAAOgP,YAAclJ,aAAc9F,OAAOgP,WAGlDC,EAAYL,EAAS,CAAEnO,IAAK,EAAGwL,KAAM,GAAO8C,EAAQ,KAAO3P,EAASW,SACpEmP,EAAY,CAAEA,OAAQN,EAAS/P,SAASwE,gBAAgB/C,WAAazB,SAASuC,KAAKd,UAAYlB,EAASkB,aACxG6O,EAAYP,EAAS,CAAE/B,MAAOvO,EAAE0B,QAAQ6M,QAAS1M,OAAQ7B,EAAE0B,QAAQG,UAAa,KAEpF,OAAO7B,EAAEI,OAAO,CAAC,EAAGmQ,EAAQK,EAAQC,EAAWF,EACjD,EAEAvI,EAAQ9I,UAAUmP,oBAAsB,SAAU7F,EAAWkF,EAAKE,EAAaE,GAC7E,MAAoB,UAAbtF,EAAwB,CAAEzG,IAAK2L,EAAI3L,IAAM2L,EAAIjM,OAAU8L,KAAMG,EAAIH,KAAOG,EAAIS,MAAQ,EAAIP,EAAc,GACzF,OAAbpF,EAAwB,CAAEzG,IAAK2L,EAAI3L,IAAM+L,EAAcP,KAAMG,EAAIH,KAAOG,EAAIS,MAAQ,EAAIP,EAAc,GACzF,QAAbpF,EAAwB,CAAEzG,IAAK2L,EAAI3L,IAAM2L,EAAIjM,OAAS,EAAIqM,EAAe,EAAGP,KAAMG,EAAIH,KAAOK,GACrE,CAAE7L,IAAK2L,EAAI3L,IAAM2L,EAAIjM,OAAS,EAAIqM,EAAe,EAAGP,KAAMG,EAAIH,KAAOG,EAAIS,MAE1G,EAEAnG,EAAQ9I,UAAUoQ,yBAA2B,SAAU9G,EAAWkF,EAAKE,EAAaE,GAClF,IAAIuB,EAAQ,CAAEtN,IAAK,EAAGwL,KAAM,GAC5B,IAAKhO,KAAKuL,UAAW,OAAOuE,EAE5B,IAAIqB,EAAkBnR,KAAKQ,QAAQ+I,UAAYvJ,KAAKQ,QAAQ+I,SAASC,SAAW,EAC5E4H,EAAqBpR,KAAKoO,YAAYpO,KAAKuL,WAE/C,GAAI,aAAahH,KAAK0E,GAAY,CAChC,IAAIoI,EAAmBlD,EAAI3L,IAAM2O,EAAkBC,EAAmBH,OAClEK,EAAmBnD,EAAI3L,IAAM2O,EAAkBC,EAAmBH,OAAS1C,EAC3E8C,EAAgBD,EAAmB5O,IACrCsN,EAAMtN,IAAM4O,EAAmB5O,IAAM6O,EAC5BC,EAAmBF,EAAmB5O,IAAM4O,EAAmBlP,SACxE4N,EAAMtN,IAAM4O,EAAmB5O,IAAM4O,EAAmBlP,OAASoP,EAErE,KAAO,CACL,IAAIC,EAAkBpD,EAAIH,KAAOmD,EAC7BK,EAAkBrD,EAAIH,KAAOmD,EAAkB9C,EAC/CkD,EAAiBH,EAAmBpD,KACtC8B,EAAM9B,KAAOoD,EAAmBpD,KAAOuD,EAC9BC,EAAkBJ,EAAmBzC,QAC9CmB,EAAM9B,KAAOoD,EAAmBpD,KAAOoD,EAAmBxC,MAAQ4C,EAEtE,CAEA,OAAO1B,CACT,EAEArH,EAAQ9I,UAAU2Q,SAAW,WAC3B,IACII,EAAK1Q,KAAKmB,SACVsQ,EAAKzR,KAAKQ,QAKd,OAHQkQ,EAAGpM,KAAK,yBACQ,mBAAXmN,EAAEtI,MAAsBsI,EAAEtI,MAAMpJ,KAAK2Q,EAAG,IAAOe,EAAEtI,MAGhE,EAEAV,EAAQ9I,UAAUgO,OAAS,SAAU+D,GACnC,GAAGA,MAA6B,IAAhBzO,KAAK0O,gBACd/Q,SAASgR,eAAeF,IAC/B,OAAOA,CACT,EAEAjJ,EAAQ9I,UAAUuN,IAAM,WACtB,IAAKlN,KAAKyN,OACRzN,KAAKyN,KAAOpN,EAAEL,KAAKQ,QAAQ0I,UACH,GAApBlJ,KAAKyN,KAAKhJ,QACZ,MAAM,IAAIoH,MAAM7L,KAAKgF,KAAO,mEAGhC,OAAOhF,KAAKyN,IACd,EAEAhF,EAAQ9I,UAAU0Q,MAAQ,WACxB,OAAQrQ,KAAK6R,OAAS7R,KAAK6R,QAAU7R,KAAKkN,MAAMrM,KAAK,iBACvD,EAEA4H,EAAQ9I,UAAUmS,OAAS,WACzB9R,KAAK0I,SAAU,CACjB,EAEAD,EAAQ9I,UAAUoS,QAAU,WAC1B/R,KAAK0I,SAAU,CACjB,EAEAD,EAAQ9I,UAAUqS,cAAgB,WAChChS,KAAK0I,SAAW1I,KAAK0I,OACvB,EAEAD,EAAQ9I,UAAUuE,OAAS,SAAUX,GACnC,IAAIyJ,EAAOhN,KACPuD,KACFyJ,EAAO3M,EAAEkD,EAAE0J,eAAetL,KAAK,MAAQ3B,KAAKgF,SAE1CgI,EAAO,IAAIhN,KAAK4L,YAAYrI,EAAE0J,cAAejN,KAAK4M,sBAClDvM,EAAEkD,EAAE0J,eAAetL,KAAK,MAAQ3B,KAAKgF,KAAMgI,KAI3CzJ,GACFyJ,EAAKnE,QAAQ4C,OAASuB,EAAKnE,QAAQ4C,MAC/BuB,EAAKI,gBAAiBJ,EAAKd,MAAMc,GAChCA,EAAKb,MAAMa,IAEhBA,EAAKE,MAAMnI,SAAS,MAAQiI,EAAKb,MAAMa,GAAQA,EAAKd,MAAMc,EAE9D,EAEAvE,EAAQ9I,UAAUsS,QAAU,WAC1B,IAAIzE,EAAOxN,KACXmN,aAAanN,KAAK2I,SAClB3I,KAAK2M,MAAK,WACRa,EAAKrM,SAAS+Q,IAAI,IAAM1E,EAAKxI,MAAMmN,WAAW,MAAQ3E,EAAKxI,MACvDwI,EAAKC,MACPD,EAAKC,KAAKM,SAEZP,EAAKC,KAAO,KACZD,EAAKqE,OAAS,KACdrE,EAAKjC,UAAY,KACjBiC,EAAKrM,SAAW,IAClB,GACF,EAEAsH,EAAQ9I,UAAUwH,aAAe,SAAUC,GACzC,OAAOD,EAAaC,EAAYpH,KAAKQ,QAAQ6G,UAAWrH,KAAKQ,QAAQ8G,WACvE,EAiBA,IAAI1D,EAAMvD,EAAEwD,GAAGuO,QAEf/R,EAAEwD,GAAGuO,QAdL,SAAgB5Q,GACd,OAAOxB,KAAKyB,MAAK,WACf,IAAIC,EAAUrB,EAAEL,MACZ2B,EAAUD,EAAMC,KAAK,cACrBnB,EAA2B,iBAAVgB,GAAsBA,GAEtCG,GAAQ,eAAe4C,KAAK/C,KAC5BG,GAAMD,EAAMC,KAAK,aAAeA,EAAO,IAAI8G,EAAQzI,KAAMQ,IACzC,iBAAVgB,GAAoBG,EAAKH,KACtC,GACF,EAKAnB,EAAEwD,GAAGuO,QAAQtO,YAAc2E,EAM3BpI,EAAEwD,GAAGuO,QAAQrO,WAAa,WAExB,OADA1D,EAAEwD,GAAGuO,QAAUxO,EACR5D,IACT,CAEF,CA3pBC,CA2pBCiE,oBC3pBD,SAAU5D,GACT,aAyBAA,EAAEwD,GAAGwL,qBAAuB,SAAUgD,GACpC,IAAIC,GAAS,EACTC,EAAMvS,KAIV,OAHAK,EAAEL,MAAMoP,IAAI,mBAAmB,WAAckD,GAAS,CAAK,IAE3DxP,YADe,WAAmBwP,GAAQjS,EAAEkS,GAAK9O,QAAQpD,EAAE6O,QAAQC,WAAWqD,IAAK,GAC9DH,GACdrS,IACT,EAEAK,GAAE,WACAA,EAAE6O,QAAQC,WA9BZ,WACE,IAAItH,EAAKjH,SAAS0E,cAAc,aAE5BmN,EAAqB,CACvBC,iBAAmB,sBACnBC,cAAmB,gBACnBC,YAAmB,gCACnBzD,WAAmB,iBAGrB,IAAK,IAAI0D,KAAQJ,EACf,QAAuBK,IAAnBjL,EAAGkL,MAAMF,GACX,MAAO,CAAEL,IAAKC,EAAmBI,IAIrC,OAAO,CACT,CAayBG,GAElB3S,EAAE6O,QAAQC,aAEf9O,EAAE4S,MAAMC,QAAQC,gBAAkB,CAChCC,SAAU/S,EAAE6O,QAAQC,WAAWqD,IAC/Ba,aAAchT,EAAE6O,QAAQC,WAAWqD,IACnCc,OAAQ,SAAU/P,GAChB,GAAIlD,EAAEkD,EAAE5C,QAAQoC,GAAG/C,MAAO,OAAOuD,EAAEgQ,UAAUC,QAAQC,MAAMzT,KAAM0T,UACnE,GAEJ,GAEF,CAjDC,CAiDCzP,kBCzCF,IAAI0P,EAAY,SAASjK,GAAG1J,KAAK4T,OAAOhT,SAAS0E,cAAc,UAAUtF,KAAK6T,QAAQ7T,KAAK4T,OAAOE,WAAW,MAAMlT,SAASuC,KAAK4Q,YAAY/T,KAAK4T,QAAQ5T,KAAK4O,MAAM5O,KAAK4T,OAAOhF,MAAMlF,EAAEkF,MAAM5O,KAAKkC,OAAOlC,KAAK4T,OAAO1R,OAAOwH,EAAExH,OAAOlC,KAAK6T,QAAQG,UAAUtK,EAAE,EAAE,EAAE1J,KAAK4O,MAAM5O,KAAKkC,OAAO,EAAEyR,EAAYhU,UAAUsU,MAAM,WAAWjU,KAAK6T,QAAQK,UAAU,EAAE,EAAElU,KAAK4O,MAAM5O,KAAKkC,OAAO,EAAEyR,EAAYhU,UAAUwU,OAAO,SAASzK,GAAG1J,KAAK6T,QAAQO,aAAa1K,EAAE,EAAE,EAAE,EAAEiK,EAAYhU,UAAU0U,cAAc,WAAW,OAAOrU,KAAK4O,MAAM5O,KAAKkC,MAAM,EAAEyR,EAAYhU,UAAU2U,aAAa,WAAW,OAAOtU,KAAK6T,QAAQS,aAAa,EAAE,EAAEtU,KAAK4O,MAAM5O,KAAKkC,OAAO,EAAEyR,EAAYhU,UAAU4U,aAAa,WAAWvU,KAAK4T,OAAOrL,WAAWC,YAAYxI,KAAK4T,OAAO,EAAE,IAAIY,EAAW,WAAW,EAStvB,GAAGA,EAAW7U,UAAU8U,SAAS,SAAS/K,EAAEE,GAAuC,OAA9B5J,KAAK0U,WAAWhL,EAAE,EAAEE,GAAO,EAAW,EAAE4K,EAAW7U,UAAU+U,WAAW,SAAShL,EAAEE,EAAE+K,QAAG,IAAoB/K,IAAIA,EAAE,UAAK,IAAoB+K,GAAG,EAAEA,KAAKA,EAAE,IAAI,IAAI,IAAIC,EAAErR,EAAEsR,EAAEC,EAAI7N,EAAE,IAAI0M,EAAYjK,GAAsBqL,EAAjB9N,EAAEqN,eAAmB3S,KAAKuF,EAAED,EAAEoN,gBAAgBW,EAAE,GAAGC,EAAE,EAAE/N,EAAE+N,EAAEA,GAAGN,EAAQpR,EAAEwR,EAAI,GAAZH,EAAE,EAAEK,IAAWJ,EAAEE,EAAEH,EAAE,GAAGE,EAAEC,EAAEH,EAAE,GAAKG,EAAEH,EAAE,IAAM,MAAMrR,EAAE,KAAKsR,EAAE,KAAKC,EAAE,KAAKE,EAAEE,KAAK,CAAC3R,EAAEsR,EAAEC,KAAK,IAAIrD,EAAE0D,EAAKC,SAASJ,EAAEpL,GAAGgB,EAAE6G,EAAEA,EAAE4D,UAAU,KAAK,OAAOpO,EAAEsN,eAAe3J,CAAC,GAAG0K,EAAG,IAAIA,EAAG,CAAC1N,IAAI,SAAS8B,EAAEE,GAAG,IAAI+K,EAAE,CAAC,EAAE,OAAO/K,EAAEF,EAAE9B,KAAI,SAAS8B,EAAEkL,GAAG,OAAOD,EAAE9O,MAAM+O,EAAEhL,EAAE7J,KAAK4U,EAAEjL,EAAE,IAAGA,EAAE6L,OAAO,EAAEC,aAAa,SAAS9L,EAAEE,GAAG,OAAOA,EAAEF,GAAG,EAAEA,EAAEE,EAAE,EAAE,CAAC,EAAE6L,IAAI,SAAS/L,EAAEE,GAAG,IAAI+K,EAAE,CAAC,EAAE,OAAOjL,EAAE5J,OAAO8J,EAAE,SAASF,EAAEkL,EAAErR,GAAG,OAAOoR,EAAE9O,MAAMtC,EAAEmG,EAAEE,EAAE7J,KAAK4U,EAAEC,EAAE,EAAE,SAASlL,EAAEE,GAAG,OAAOF,EAAEE,CAAC,EAAE,EAAE,EAAE1G,IAAI,SAASwG,EAAEE,GAAG,OAAO3G,KAAKC,IAAIuQ,MAAM,KAAK7J,EAAE0L,EAAG1N,IAAI8B,EAAEE,GAAGF,EAAE,GAAG,IAAIyL,EAAK,WAAW,SAASzL,EAAEA,EAAEE,EAAE+K,GAAG,OAAOjL,GAAG,EAAEzC,IAAI2C,GAAG3C,GAAG0N,CAAC,CAAC,SAAS/K,EAAEF,GAAG,SAASE,IAAI+K,EAAEe,KAAKhM,GAAGkL,GAAE,CAAE,CAAC,IAAID,EAAE,GAAGC,GAAE,EAAG,MAAM,CAACM,KAAK,SAASxL,GAAGiL,EAAEO,KAAKxL,GAAGkL,GAAE,CAAE,EAAEe,KAAK,SAASjM,GAAG,OAAOkL,GAAGhL,SAAI,IAASF,IAAIA,EAAEiL,EAAElQ,OAAO,GAAGkQ,EAAEjL,EAAE,EAAEkM,IAAI,WAAW,OAAOhB,GAAGhL,IAAI+K,EAAEiB,KAAK,EAAEC,KAAK,WAAW,OAAOlB,EAAElQ,MAAM,EAAEmD,IAAI,SAAS8B,GAAG,OAAOiL,EAAE/M,IAAI8B,EAAE,EAAEoM,MAAM,WAAW,OAAOlB,GAAGhL,IAAI+K,CAAC,EAAE,CAAC,SAASA,EAAEjL,EAAEE,EAAE+K,EAAEC,EAAErR,EAAEsR,EAAEC,GAAG,IAAIiB,EAAE/V,KAAK+V,EAAEC,GAAGtM,EAAEqM,EAAEE,GAAGrM,EAAEmM,EAAEG,GAAGvB,EAAEoB,EAAEI,GAAGvB,EAAEmB,EAAEK,GAAG7S,EAAEwS,EAAEM,GAAGxB,EAAEkB,EAAEO,MAAMxB,CAAC,CAAC,SAASF,IAAI5U,KAAKuW,OAAO,IAAI3M,GAAE,SAASF,EAAEE,GAAG,OAAO0L,EAAGE,aAAa9L,EAAE8M,KAAKC,QAAQ/M,EAAE8M,KAAKE,SAAS9M,EAAE4M,KAAKC,QAAQ7M,EAAE4M,KAAKE,SAAS,GAAE,CAAC,SAASnT,EAAEqG,GAAG,IAAI+K,EAAEC,EAAErR,EAAEsR,EAAWkB,EAAE,IAAIrW,MAAb,GAAG,EAAEuH,GAAiB,OAAO2C,EAAE+M,SAAQ,SAAS/M,GAAGgL,EAAEhL,EAAE,IAAIxB,EAAE7E,EAAEqG,EAAE,IAAIxB,EAAEyM,EAAEjL,EAAE,IAAIxB,EAAEuM,EAAEjL,EAAEkL,EAAErR,EAAEsR,GAAGkB,EAAEpB,IAAIoB,EAAEpB,IAAI,GAAG,CAAC,IAAGoB,CAAC,CAAC,SAASlB,EAAEnL,EAAEE,GAAG,IAAIgL,EAAErR,EAAEsR,EAAEC,EAAE,IAAIiB,EAAE,EAAE9O,EAAE,IAAI8N,EAAE,EAAE7N,EAAE,IAAI8N,EAAE,EAAE,OAAOtL,EAAEiN,SAAQ,SAASjN,GAAGkL,EAAElL,EAAE,IAAItB,EAAE7E,EAAEmG,EAAE,IAAItB,EAAEyM,EAAEnL,EAAE,IAAItB,EAAE0M,EAAEF,EAAEE,EAAEF,EAAEA,EAAEmB,IAAIA,EAAEnB,GAAG3N,EAAE1D,EAAE0D,EAAE1D,EAAEA,EAAEwR,IAAIA,EAAExR,GAAG2D,EAAE2N,EAAE3N,EAAE2N,EAAEA,EAAEG,IAAIA,EAAEH,EAAE,IAAG,IAAIF,EAAEG,EAAEiB,EAAE9O,EAAE8N,EAAE7N,EAAE8N,EAAEpL,EAAE,CAAC,SAASkL,EAAElL,EAAE+K,GAA4Q,GAAGA,EAAE8B,QAAQ,CAAC,IAAIlT,EAAEoR,EAAEsB,GAAGtB,EAAEqB,GAAG,EAAEnB,EAAEF,EAAEwB,GAAGxB,EAAEuB,GAAG,EAAEpB,EAAEH,EAAE0B,GAAG1B,EAAEyB,GAAG,EAAEL,EAAET,EAAGpS,IAAI,CAACK,EAAEsR,EAAEC,IAAI,GAAG,GAAGH,EAAE8B,QAAQ,MAAM,CAAC9B,EAAEiC,QAAQ,IAAI3P,EAAEmB,EAAE2M,EAAE7N,EAAI+N,EAAE,EAAExD,EAAE,GAAG7G,EAAE,GAAG,GAAGmL,GAAGxS,EAAE,IAAI0D,EAAE0N,EAAEqB,GAAG/O,GAAG0N,EAAEsB,GAAGhP,IAAI,CAAC,IAAIC,EAAE,EAAEkB,EAAEuM,EAAEuB,GAAG9N,GAAGuM,EAAEwB,GAAG/N,IAAI,IAAI2M,EAAEJ,EAAEyB,GAAGrB,GAAGJ,EAAE0B,GAAGtB,IAAe7N,GAAG0C,EAAZF,EAAEzC,EAAEmB,EAAE2M,KAAY,EAAEE,GAAG/N,EAAEuK,EAAExK,GAAGgO,CAAC,MAAM,GAAGc,GAAGlB,EAAE,IAAI5N,EAAE0N,EAAEuB,GAAGjP,GAAG0N,EAAEwB,GAAGlP,IAAI,CAAC,IAAIC,EAAE,EAAEkB,EAAEuM,EAAEqB,GAAG5N,GAAGuM,EAAEsB,GAAG7N,IAAI,IAAI2M,EAAEJ,EAAEyB,GAAGrB,GAAGJ,EAAE0B,GAAGtB,IAAe7N,GAAG0C,EAAZF,EAAEtB,EAAEnB,EAAE8N,KAAY,EAAEE,GAAG/N,EAAEuK,EAAExK,GAAGgO,CAAC,MAAM,IAAIhO,EAAE0N,EAAEyB,GAAGnP,GAAG0N,EAAE0B,GAAGpP,IAAI,CAAC,IAAIC,EAAE,EAAEkB,EAAEuM,EAAEqB,GAAG5N,GAAGuM,EAAEsB,GAAG7N,IAAI,IAAI2M,EAAEJ,EAAEuB,GAAGnB,GAAGJ,EAAEwB,GAAGpB,IAAe7N,GAAG0C,EAAZF,EAAEtB,EAAE2M,EAAE9N,KAAY,EAAEgO,GAAG/N,EAAEuK,EAAExK,GAAGgO,CAAC,CAAC,OAAOxD,EAAEkF,SAAQ,SAASjN,EAAEE,GAAGgB,EAAEhB,GAAGqL,EAAEvL,CAAC,IAAzxB,SAAWA,GAAG,IAAIE,EAAEgL,EAAErR,EAAEsR,EAAEC,EAAEiB,EAAErM,EAAE,IAAItB,EAAEsB,EAAE,IAAIqL,EAAE,EAAE,IAAI9N,EAAE0N,EAAEoB,GAAG9O,GAAG0N,EAAEvM,GAAGnB,IAAI,GAAGwK,EAAExK,GAAGgO,EAAE,EAAE,CAAC,IAAI1R,EAAEoR,EAAEiC,OAAO/B,EAAEF,EAAEiC,OAAOhN,EAAE3C,EAAE0N,EAAEoB,GAAYjB,GAATF,EAAED,EAAEvM,GAAGnB,IAAO2C,EAAE3G,KAAK4T,IAAIlC,EAAEvM,GAAG,KAAKnB,EAAE2N,EAAE,IAAI3R,KAAKC,IAAIyR,EAAEoB,MAAM9O,EAAE,EAAE2C,EAAE,KAAK6H,EAAEqD,IAAIA,IAAI,IAAIC,EAAEnK,EAAEkK,IAAIC,GAAGtD,EAAEqD,EAAE,IAAIC,EAAEnK,IAAIkK,GAAG,OAAOvR,EAAE6E,GAAG0M,EAAED,EAAEkB,GAAGxS,EAAE6E,GAAG,EAAE,CAAC7E,EAAEsR,EAAE,CAAC,CAAohBD,CAAEmB,GAAGxS,EAAE,IAAIwS,GAAGlB,EAAE,IAAI,IAAI,CAAC,CAAsjB,IAAI5N,EAAE,EAAEmB,EAAE,EAAEnB,EAAc,OAAO0N,EAAEhV,UAAU,CAAC+W,OAAO,SAAShN,GAAG,IAAIE,EAAE5J,KAAK,QAAQ4J,EAAEkN,SAASpN,KAAKE,EAAEkN,SAASlN,EAAEqM,GAAGrM,EAAEoM,GAAG,IAAIpM,EAAEuM,GAAGvM,EAAEsM,GAAG,IAAItM,EAAEyM,GAAGzM,EAAEwM,GAAG,IAAIxM,EAAEkN,OAAO,EAAEL,MAAM,SAAS7M,GAAG,IAAI+K,EAAE3U,KAAK4U,EAAED,EAAE2B,MAAM,IAAI3B,EAAEoC,YAAYnN,EAAE,CAAC,IAAIrG,EAAEsR,EAAEC,EAAEiB,EAAE,EAAE,IAAIxS,EAAEoR,EAAEqB,GAAGzS,GAAGoR,EAAEsB,GAAG1S,IAAI,IAAIsR,EAAEF,EAAEuB,GAAGrB,GAAGF,EAAEwB,GAAGtB,IAAI,IAAIC,EAAEH,EAAEyB,GAAGtB,GAAGH,EAAE0B,GAAGvB,IAAIjP,MAAM6D,EAAEnG,EAAEsR,EAAEC,GAAGiB,GAAGnB,EAAE/O,QAAQ,EAAE8O,EAAEqC,OAAOjB,EAAEpB,EAAEoC,YAAW,CAAE,CAAC,OAAOpC,EAAEqC,MAAM,EAAEJ,KAAK,WAAW,IAAIlN,EAAE1J,KAAK,OAAO,IAAI2U,EAAEjL,EAAEsM,GAAGtM,EAAEuM,GAAGvM,EAAEwM,GAAGxM,EAAEyM,GAAGzM,EAAE0M,GAAG1M,EAAE2M,GAAG3M,EAAE4M,MAAM,EAAEW,IAAI,SAASrN,GAAG,IAAI+K,EAAE3U,KAAK4U,EAAED,EAAE2B,MAAM,IAAI3B,EAAEuC,MAAMtN,EAAE,CAAC,IAAIrG,EAAEsR,EAAEC,EAAEiB,EAAIhB,EAAE,EAAE7N,EAAE,GAAG,EAAED,EAAE+N,EAAE,EAAEC,EAAE,EAAExD,EAAE,EAAE,IAAIoD,EAAEF,EAAEqB,GAAGnB,GAAGF,EAAEsB,GAAGpB,IAAI,IAAIC,EAAEH,EAAEuB,GAAGpB,GAAGH,EAAEwB,GAAGrB,IAAI,IAAIiB,EAAEpB,EAAEyB,GAAGL,GAAGpB,EAAE0B,GAAGN,IAAyBhB,GAAVxR,EAAEqR,EAAXlL,EAAEmL,EAAEC,EAAEiB,KAAW,EAAOf,GAAGzR,GAAGsR,EAAE,IAAI3N,EAAE+N,GAAG1R,GAAGuR,EAAE,IAAI5N,EAAEuK,GAAGlO,GAAGwS,EAAE,IAAI7O,EAAIyN,EAAEuC,KAAJnC,EAAS,IAAIC,EAAED,MAAME,EAAEF,MAAMtD,EAAEsD,IAAW,IAAI7N,GAAGyN,EAAEqB,GAAGrB,EAAEsB,GAAG,GAAG,MAAM/O,GAAGyN,EAAEuB,GAAGvB,EAAEwB,GAAG,GAAG,MAAMjP,GAAGyN,EAAEyB,GAAGzB,EAAE0B,GAAG,GAAG,GAAG,CAAC,OAAO1B,EAAEuC,IAAI,EAAEhS,SAAS,SAASwE,GAAG,IAAIE,EAAE5J,KAAK2U,EAAEjL,EAAE,IAAItB,EAAE,OAAO+O,KAAKzN,EAAE,IAAItB,EAAEgP,KAAK1N,EAAE,IAAItB,EAAEuM,GAAG/K,EAAEoM,IAAIrB,GAAG/K,EAAEqM,IAAIkB,MAAMvN,EAAEsM,IAAIiB,MAAMvN,EAAEuM,IAAIiB,MAAMxN,EAAEwM,IAAIgB,MAAMxN,EAAEyM,EAAE,GAAGzB,EAAEjV,UAAU,CAACuV,KAAK,SAASxL,GAAG1J,KAAKuW,OAAOrB,KAAK,CAACsB,KAAK9M,EAAE2N,MAAM3N,EAAEuN,OAAO,EAAE5B,QAAQ,WAAW,OAAOrV,KAAKuW,OAAO3O,KAAI,SAAS8B,GAAG,OAAOA,EAAE2N,KAAK,GAAE,EAAExB,KAAK,WAAW,OAAO7V,KAAKuW,OAAOV,MAAM,EAAEjO,IAAI,SAAS8B,GAAG,IAAI,IAAIE,EAAE5J,KAAKuW,OAAO5B,EAAE,EAAEA,EAAE/K,EAAEiM,OAAOlB,IAAI,GAAG/K,EAAE+L,KAAKhB,GAAG6B,KAAKtR,SAASwE,GAAG,OAAOE,EAAE+L,KAAKhB,GAAG0C,MAAM,OAAOrX,KAAKsX,QAAQ5N,EAAE,EAAE4N,QAAQ,SAAS5N,GAAG,IAAI,IAAIE,EAAE+K,EAAEC,EAAErR,EAAEvD,KAAKuW,OAAO1B,EAAE,EAAEA,EAAEtR,EAAEsS,OAAOhB,KAA8HjL,GAA1H+K,EAAE1R,KAAKsU,KAAKtU,KAAKuU,IAAI9N,EAAE,GAAGnG,EAAEoS,KAAKd,GAAGwC,MAAM,GAAG,GAAGpU,KAAKuU,IAAI9N,EAAE,GAAGnG,EAAEoS,KAAKd,GAAGwC,MAAM,GAAG,GAAGpU,KAAKuU,IAAI9N,EAAE,GAAGnG,EAAEoS,KAAKd,GAAGwC,MAAM,GAAG,WAAU,IAASzN,KAAKA,EAAE+K,EAAEC,EAAErR,EAAEoS,KAAKd,GAAGwC,OAAO,OAAOzC,CAAC,EAAE6C,QAAQ,WAAW,IAAI/N,EAAE1J,KAAKuW,OAAO7M,EAAEgM,MAAK,SAAShM,EAAEE,GAAG,OAAO0L,EAAGE,aAAaF,EAAGG,IAAI/L,EAAE2N,OAAO/B,EAAGG,IAAI7L,EAAEyN,OAAO,IAAG,IAAIzN,EAAEF,EAAE,GAAG2N,MAAMzN,EAAE,GAAG,GAAGA,EAAE,GAAG,GAAGA,EAAE,GAAG,IAAIF,EAAE,GAAG2N,MAAM,CAAC,EAAE,EAAE,IAAI,IAAI1C,EAAEjL,EAAEjF,OAAO,EAAEmQ,EAAElL,EAAEiL,GAAG0C,MAAMzC,EAAE,GAAG,KAAKA,EAAE,GAAG,KAAKA,EAAE,GAAG,MAAMlL,EAAEiL,GAAG0C,MAAM,CAAC,IAAI,IAAI,KAAK,GAAG,CAACjC,SAA/yE,SAAW1L,EAAEiL,GAAG,SAASoB,EAAErM,EAAEE,GAAG,IAAI,IAAI+K,EAAEC,EAAE,EAAErR,EAAE,EAAqhB,IAAjhBA,GAAG,IAAGoR,EAAEjL,EAAEkM,OAAQa,QAAQ,CAAC,IAAI5B,EAAEC,EAAE7N,EAAE0N,GAAGoB,EAAElB,EAAE,GAAGzM,EAAEyM,EAAE,GAAG,IAAIkB,EAAE,OAAO,GAAGrM,EAAEwL,KAAKa,GAAG3N,IAAIsB,EAAEwL,KAAK9M,GAAGwM,KAAKA,GAAGhL,EAAE,OAAO,GAAGrG,IAA+Z,IAAzZ,MAAM,MAAMmG,EAAEwL,KAAKP,GAAGpR,GAAG,CAAC,IAAImG,EAAEjF,QAAQ,EAAEkQ,GAAGA,EAAE,IAAI,OAAM,EAAG,IAAI1N,EAAE1D,EAAEmG,GAAOzC,EAAE0P,SAAQ,WAAc,IAAG,IAAI3B,EAAEH,EAAEnL,EAAEzC,GAAGgO,EAAE,IAAIrL,GAAE,SAASF,EAAEE,GAAG,OAAO0L,EAAGE,aAAa9L,EAAE+M,QAAQ7M,EAAE6M,QAAQ,IAAGxB,EAAEC,KAAKF,GAAGe,EAAEd,EAA4N,IAAxNN,GAAG,IAAI,IAAIlD,EAAE,IAAI7H,GAAE,SAASF,EAAEE,GAAG,OAAO0L,EAAGE,aAAa9L,EAAE+M,QAAQ/M,EAAEgN,SAAS9M,EAAE6M,QAAQ7M,EAAE8M,SAAS,IAAGzB,EAAEY,QAAQpE,EAAEyD,KAAKD,EAAEW,OAAOG,EAAEtE,EAAEkD,EAAElD,EAAEoE,QAAQ,IAAI,IAAIjL,EAAE,IAAIgK,EAAEnD,EAAEoE,QAAQjL,EAAEsK,KAAKzD,EAAEmE,OAAO,OAAOhL,CAAC,EAAswD,CAA9gI,GAC/zB8M,EAAOC,QAAUnD,oBC3BmDkD,EAAOC,QAAmI,WAAW,aAAa,IAAUpU,EAAE,IAAI0R,EAAE,KAAK2C,EAAE,cAAc3Q,EAAE,SAAS6D,EAAE,SAASM,EAAE,OAAO1B,EAAE,MAAM+H,EAAE,OAAOoD,EAAE,QAAQkB,EAAE,UAAUpB,EAAE,OAAOC,EAAE,OAAO1N,EAAE,eAAe7G,EAAE,6FAA6FwX,EAAE,sFAAsFC,EAAE,CAACjF,KAAK,KAAKkF,SAAS,2DAA2DhM,MAAM,KAAKiM,OAAO,wFAAwFjM,MAAM,KAAKkM,QAAQ,SAASC,GAAG,IAAI3U,EAAE,CAAC,KAAK,KAAK,KAAK,MAAM0R,EAAEiD,EAAE,IAAI,MAAM,IAAIA,GAAG3U,GAAG0R,EAAE,IAAI,KAAK1R,EAAE0R,IAAI1R,EAAE,IAAI,GAAG,GAAGyR,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEO,OAAOD,GAAG,OAAON,GAAGA,EAAEnT,QAAQlB,EAAE2U,EAAE,GAAGxY,MAAM6D,EAAE,EAAEqU,EAAEnT,QAAQ2T,KAAKnD,GAAGiD,CAAC,EAAEG,EAAE,CAACvN,EAAEkK,EAAEsD,EAAE,SAASJ,GAAG,IAAI3U,GAAG2U,EAAEK,YAAYtD,EAAEhS,KAAKuV,IAAIjV,GAAGqU,EAAE3U,KAAKwV,MAAMxD,EAAE,IAAIhO,EAAEgO,EAAE,GAAG,OAAO1R,GAAG,EAAE,IAAI,KAAKyR,EAAE4C,EAAE,EAAE,KAAK,IAAI5C,EAAE/N,EAAE,EAAE,IAAI,EAAE+N,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,GAAG1R,EAAEmV,OAAOzD,EAAEyD,OAAO,OAAOR,EAAEjD,EAAE1R,GAAG,IAAIqU,EAAE,IAAI3C,EAAE0D,OAAOpV,EAAEoV,SAAS1D,EAAE2D,QAAQrV,EAAEqV,SAAS3R,EAAE1D,EAAEsV,QAAQC,IAAIlB,EAAE/C,GAAG/J,EAAEmK,EAAEhO,EAAE,EAAEmE,EAAE7H,EAAEsV,QAAQC,IAAIlB,GAAG9M,GAAG,EAAE,GAAG+J,GAAG,UAAU+C,GAAG3C,EAAEhO,IAAI6D,EAAE7D,EAAEmE,EAAEA,EAAEnE,KAAK,EAAE,EAAEyC,EAAE,SAASwO,GAAG,OAAOA,EAAE,EAAEjV,KAAK8V,KAAKb,IAAI,EAAEjV,KAAKwV,MAAMP,EAAE,EAAEtN,EAAE,SAASsN,GAAG,MAAM,CAACJ,EAAEjD,EAAEgD,EAAElD,EAAEqE,EAAEvH,EAAEmD,EAAElL,EAAEuP,EAAErE,EAAEmB,EAAE3K,EAAE4J,EAAElK,EAAEA,EAAE7D,EAAEiS,GAAGtB,EAAEuB,EAAEpD,GAAGmC,IAAIC,OAAOD,GAAG,IAAI1R,cAAc7C,QAAQ,KAAK,GAAG,EAAEyH,EAAE,SAAS8M,GAAG,YAAO,IAASA,CAAC,GAAGpD,EAAE,KAAKmE,EAAE,CAAC,EAAEA,EAAEnE,GAAGgD,EAAE,IAAIlN,EAAE,SAASsN,GAAG,OAAOA,aAAakB,CAAC,EAAEC,EAAE,SAASnB,EAAE3U,EAAE0R,EAAE2C,GAAG,IAAI3Q,EAAE,IAAI1D,EAAE,OAAOuR,EAAE,GAAG,iBAAiBvR,EAAE,CAAC,IAAIuH,EAAEvH,EAAEiD,cAAcyS,EAAEnO,KAAK7D,EAAE6D,GAAGmK,IAAIgE,EAAEnO,GAAGmK,EAAEhO,EAAE6D,GAAG,IAAIM,EAAE7H,EAAEwI,MAAM,KAAK,IAAI9E,GAAGmE,EAAE3G,OAAO,EAAE,OAAOyT,EAAE9M,EAAE,GAAG,KAAK,CAAC,IAAI1B,EAAEnG,EAAEsP,KAAKoG,EAAEvP,GAAGnG,EAAE0D,EAAEyC,CAAC,CAAC,OAAOkO,GAAG3Q,IAAI6N,EAAE7N,GAAGA,IAAI2Q,GAAG9C,CAAC,EAAEkE,EAAE,SAASd,EAAE3U,GAAG,GAAGqH,EAAEsN,GAAG,OAAOA,EAAEW,QAAQ,IAAI5D,EAAE,iBAAiB1R,EAAEA,EAAE,CAAC,EAAE,OAAO0R,EAAEyD,KAAKR,EAAEjD,EAAEqE,KAAK5F,UAAU,IAAI0F,EAAEnE,EAAE,EAAEsE,EAAElB,EAAEkB,EAAErS,EAAEmS,EAAEE,EAAEtS,EAAE2D,EAAE2O,EAAEP,EAAE,SAASd,EAAE3U,GAAG,OAAOyV,EAAEd,EAAE,CAACsB,OAAOjW,EAAEkW,GAAGC,IAAInW,EAAEoW,GAAGC,EAAErW,EAAEsW,GAAGC,QAAQvW,EAAEuW,SAAS,EAAE,IAAIV,EAAE,WAAW,SAAStB,EAAEI,GAAGlY,KAAKyZ,GAAGJ,EAAEnB,EAAEsB,OAAO,MAAK,GAAIxZ,KAAK+Z,MAAM7B,EAAE,CAAC,IAAIlD,EAAE8C,EAAEnY,UAAU,OAAOqV,EAAE+E,MAAM,SAAS7B,GAAGlY,KAAKga,GAAG,SAAS9B,GAAG,IAAI3U,EAAE2U,EAAEQ,KAAKzD,EAAEiD,EAAEwB,IAAI,GAAG,OAAOnW,EAAE,OAAO,IAAI0W,KAAKC,KAAK,GAAGX,EAAEnO,EAAE7H,GAAG,OAAO,IAAI0W,KAAK,GAAG1W,aAAa0W,KAAK,OAAO,IAAIA,KAAK1W,GAAG,GAAG,iBAAiBA,IAAI,MAAMgB,KAAKhB,GAAG,CAAC,IAAIqU,EAAErU,EAAEqD,MAAMvG,GAAG,GAAGuX,EAAE,CAAC,IAAI3Q,EAAE2Q,EAAE,GAAG,GAAG,EAAE9M,GAAG8M,EAAE,IAAI,KAAKuC,UAAU,EAAE,GAAG,OAAOlF,EAAE,IAAIgF,KAAKA,KAAKG,IAAIxC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,IAAI,IAAImP,KAAKrC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,EAAE,CAAC,CAAC,OAAO,IAAImP,KAAK1W,EAAE,CAA3X,CAA6X2U,GAAGlY,KAAK6Z,GAAG3B,EAAE0B,GAAG,CAAC,EAAE5Z,KAAK8I,MAAM,EAAEkM,EAAElM,KAAK,WAAW,IAAIoP,EAAElY,KAAKga,GAAGha,KAAKqa,GAAGnC,EAAEoC,cAActa,KAAKua,GAAGrC,EAAEsC,WAAWxa,KAAKya,GAAGvC,EAAEwC,UAAU1a,KAAK2a,GAAGzC,EAAE0C,SAAS5a,KAAK6a,GAAG3C,EAAE4C,WAAW9a,KAAK+a,GAAG7C,EAAE8C,aAAahb,KAAKib,GAAG/C,EAAEgD,aAAalb,KAAKmb,IAAIjD,EAAEkD,iBAAiB,EAAEpG,EAAEqG,OAAO,WAAW,OAAO9B,CAAC,EAAEvE,EAAEsG,QAAQ,WAAW,QAAQtb,KAAKga,GAAGuB,aAAarU,EAAE,EAAE8N,EAAEwG,OAAO,SAAStD,EAAE3U,GAAG,IAAI0R,EAAE+D,EAAEd,GAAG,OAAOlY,KAAKyb,QAAQlY,IAAI0R,GAAGA,GAAGjV,KAAK0b,MAAMnY,EAAE,EAAEyR,EAAE2G,QAAQ,SAASzD,EAAE3U,GAAG,OAAOyV,EAAEd,GAAGlY,KAAKyb,QAAQlY,EAAE,EAAEyR,EAAE4G,SAAS,SAAS1D,EAAE3U,GAAG,OAAOvD,KAAK0b,MAAMnY,GAAGyV,EAAEd,EAAE,EAAElD,EAAE6G,GAAG,SAAS3D,EAAE3U,EAAE0R,GAAG,OAAOsE,EAAEnO,EAAE8M,GAAGlY,KAAKuD,GAAGvD,KAAK8b,IAAI7G,EAAEiD,EAAE,EAAElD,EAAE+G,KAAK,WAAW,OAAO9Y,KAAKwV,MAAMzY,KAAKgc,UAAU,IAAI,EAAEhH,EAAEgH,QAAQ,WAAW,OAAOhc,KAAKga,GAAGiC,SAAS,EAAEjH,EAAEyG,QAAQ,SAASvD,EAAE3U,GAAG,IAAI0R,EAAEjV,KAAK4X,IAAI2B,EAAEnO,EAAE7H,IAAIA,EAAEwS,EAAEwD,EAAE3O,EAAEsN,GAAGhR,EAAE,SAASgR,EAAE3U,GAAG,IAAI0D,EAAEsS,EAAEP,EAAE/D,EAAE0E,GAAGM,KAAKG,IAAInF,EAAEoF,GAAG9W,EAAE2U,GAAG,IAAI+B,KAAKhF,EAAEoF,GAAG9W,EAAE2U,GAAGjD,GAAG,OAAO2C,EAAE3Q,EAAEA,EAAEyU,MAAMhS,EAAE,EAAErJ,EAAE,SAAS6X,EAAE3U,GAAG,OAAOgW,EAAEP,EAAE/D,EAAEiH,SAAShE,GAAGzE,MAAMwB,EAAEiH,OAAO,MAAMtE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMrC,MAAMhS,IAAI0R,EAAE,EAAE4C,EAAE7X,KAAK2a,GAAG7C,EAAE9X,KAAKua,GAAGvF,EAAEhV,KAAKya,GAAGpC,EAAE,OAAOrY,KAAK2Z,GAAG,MAAM,IAAI,OAAO5D,GAAG,KAAKpB,EAAE,OAAOiD,EAAE1Q,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAK2N,EAAE,OAAO+C,EAAE1Q,EAAE,EAAE4Q,GAAG5Q,EAAE,EAAE4Q,EAAE,GAAG,KAAKrG,EAAE,IAAIqD,EAAE9U,KAAKmc,UAAUC,WAAW,EAAEnD,GAAGpB,EAAE/C,EAAE+C,EAAE,EAAEA,GAAG/C,EAAE,OAAO5N,EAAE0Q,EAAE5C,EAAEiE,EAAEjE,GAAG,EAAEiE,GAAGnB,GAAG,KAAKpO,EAAE,KAAKkL,EAAE,OAAOvU,EAAEgY,EAAE,QAAQ,GAAG,KAAKjN,EAAE,OAAO/K,EAAEgY,EAAE,UAAU,GAAG,KAAKvN,EAAE,OAAOzK,EAAEgY,EAAE,UAAU,GAAG,KAAKpR,EAAE,OAAO5G,EAAEgY,EAAE,eAAe,GAAG,QAAQ,OAAOrY,KAAK6Y,QAAQ,EAAE7D,EAAE0G,MAAM,SAASxD,GAAG,OAAOlY,KAAKyb,QAAQvD,GAAE,EAAG,EAAElD,EAAEqH,KAAK,SAASnE,EAAE3U,GAAG,IAAI0R,EAAExD,EAAE8H,EAAE3O,EAAEsN,GAAGnC,EAAE,OAAO/V,KAAK2Z,GAAG,MAAM,IAAIzS,GAAG+N,EAAE,CAAC,EAAEA,EAAEvL,GAAGqM,EAAE,OAAOd,EAAEL,GAAGmB,EAAE,OAAOd,EAAEJ,GAAGkB,EAAE,QAAQd,EAAEN,GAAGoB,EAAE,WAAWd,EAAE7J,GAAG2K,EAAE,QAAQd,EAAEnK,GAAGiL,EAAE,UAAUd,EAAEhO,GAAG8O,EAAE,UAAUd,EAAE2C,GAAG7B,EAAE,eAAed,GAAGxD,GAAGpR,EAAEoR,IAAI/H,EAAE1J,KAAKya,IAAIlX,EAAEvD,KAAK2a,IAAIpX,EAAE,GAAGkO,IAAIoD,GAAGpD,IAAIkD,EAAE,CAAC,IAAIkD,EAAE7X,KAAK6Y,QAAQiD,IAAIlH,EAAE,GAAGiD,EAAEmC,GAAG9S,GAAG7G,GAAGwX,EAAE/O,OAAO9I,KAAKga,GAAGnC,EAAEiE,IAAIlH,EAAE3R,KAAK4T,IAAI7W,KAAKya,GAAG5C,EAAEyE,gBAAgBtC,EAAE,MAAM9S,GAAGlH,KAAKga,GAAG9S,GAAG7G,GAAG,OAAOL,KAAK8I,OAAO9I,IAAI,EAAEgV,EAAE8G,IAAI,SAAS5D,EAAE3U,GAAG,OAAOvD,KAAK6Y,QAAQwD,KAAKnE,EAAE3U,EAAE,EAAEyR,EAAEuH,IAAI,SAASrE,GAAG,OAAOlY,KAAKuZ,EAAE3O,EAAEsN,KAAK,EAAElD,EAAE8D,IAAI,SAASlB,EAAE7B,GAAG,IAAInB,EAAE1N,EAAElH,KAAK4X,EAAE4E,OAAO5E,GAAG,IAAIvX,EAAEkZ,EAAE3O,EAAEmL,GAAG8B,EAAE,SAASK,GAAG,IAAI3U,EAAEyV,EAAE9R,GAAG,OAAOqS,EAAEP,EAAEzV,EAAEmV,KAAKnV,EAAEmV,OAAOzV,KAAK4M,MAAMqI,EAAEN,IAAI1Q,EAAE,EAAE,GAAG7G,IAAIwU,EAAE,OAAO7U,KAAK8b,IAAIjH,EAAE7U,KAAKua,GAAG3C,GAAG,GAAGvX,IAAIsU,EAAE,OAAO3U,KAAK8b,IAAInH,EAAE3U,KAAKqa,GAAGzC,GAAG,GAAGvX,IAAIqJ,EAAE,OAAOmO,EAAE,GAAG,GAAGxX,IAAIoR,EAAE,OAAOoG,EAAE,GAAG,IAAIC,GAAGlD,EAAE,CAAC,EAAEA,EAAE9J,GAAGvH,EAAEqR,EAAExJ,GAAG6J,EAAEL,EAAE3N,GAAvxI,IAA4xI2N,GAAGvU,IAAI,EAAE2U,EAAEhV,KAAKga,GAAGiC,UAAUrE,EAAEE,EAAE,OAAOyB,EAAEP,EAAEhE,EAAEhV,KAAK,EAAEgV,EAAEyH,SAAS,SAASvE,EAAE3U,GAAG,OAAOvD,KAAK8Y,KAAK,EAAEZ,EAAE3U,EAAE,EAAEyR,EAAE0H,OAAO,SAASxE,GAAG,IAAI3U,EAAEvD,KAAKiV,EAAEjV,KAAKmc,UAAU,IAAInc,KAAKsb,UAAU,OAAOrG,EAAE0H,aAAazV,EAAE,IAAI0Q,EAAEM,GAAG,uBAAuBjR,EAAEsS,EAAEjB,EAAEtY,MAAM8K,EAAE9K,KAAK6a,GAAGzP,EAAEpL,KAAK+a,GAAGrR,EAAE1J,KAAKua,GAAG9I,EAAEwD,EAAE8C,SAASlD,EAAEI,EAAE+C,OAAOjC,EAAE,SAASmC,EAAEjD,EAAEhO,EAAE6D,GAAG,OAAOoN,IAAIA,EAAEjD,IAAIiD,EAAE3U,EAAEqU,KAAK3Q,EAAEgO,GAAGM,MAAM,EAAEzK,EAAE,EAAE6J,EAAE,SAASuD,GAAG,OAAOqB,EAAEzO,EAAEA,EAAE,IAAI,GAAGoN,EAAE,IAAI,EAAEtD,EAAEK,EAAE2H,UAAU,SAAS1E,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEM,EAAE,GAAG,KAAK,KAAK,OAAOjD,EAAE2C,EAAEpR,cAAcoR,CAAC,EAAEvX,EAAE,CAACwc,GAAG1E,OAAOnY,KAAKqa,IAAI9E,OAAO,GAAGuH,KAAK9c,KAAKqa,GAAGvC,EAAEpO,EAAE,EAAEqT,GAAGxD,EAAEzO,EAAEpB,EAAE,EAAE,EAAE,KAAKsT,IAAIjH,EAAEd,EAAEgI,YAAYvT,EAAEmL,EAAE,GAAGqI,KAAKnH,EAAElB,EAAEnL,GAAGuP,EAAEjZ,KAAKya,GAAG0C,GAAG5D,EAAEzO,EAAE9K,KAAKya,GAAG,EAAE,KAAK7F,EAAEuD,OAAOnY,KAAK2a,IAAIyC,GAAGrH,EAAEd,EAAEoI,YAAYrd,KAAK2a,GAAGlJ,EAAE,GAAG6L,IAAIvH,EAAEd,EAAEsI,cAAcvd,KAAK2a,GAAGlJ,EAAE,GAAG+L,KAAK/L,EAAEzR,KAAK2a,IAAI8C,EAAEtF,OAAOrN,GAAG4S,GAAGnE,EAAEzO,EAAEA,EAAE,EAAE,KAAKiL,EAAEpB,EAAE,GAAGgJ,GAAGhJ,EAAE,GAAGjL,EAAEkL,EAAE9J,EAAEM,GAAE,GAAIwS,EAAEhJ,EAAE9J,EAAEM,GAAE,GAAI4J,EAAEmD,OAAO/M,GAAGyS,GAAGtE,EAAEzO,EAAEM,EAAE,EAAE,KAAKN,EAAEqN,OAAOnY,KAAKib,IAAI6C,GAAGvE,EAAEzO,EAAE9K,KAAKib,GAAG,EAAE,KAAK8C,IAAIxE,EAAEzO,EAAE9K,KAAKmb,IAAI,EAAE,KAAK6C,EAAE/W,GAAG,OAAO2Q,EAAEjU,QAAQkU,GAAG,SAASK,EAAE3U,GAAG,OAAOA,GAAGlD,EAAE6X,IAAIjR,EAAEtD,QAAQ,IAAI,GAAG,GAAG,EAAEqR,EAAEuD,UAAU,WAAW,OAAO,IAAItV,KAAK4M,MAAM7P,KAAKga,GAAGiE,oBAAoB,GAAG,EAAEjJ,EAAEkJ,KAAK,SAAStG,EAAEhD,EAAE1N,GAAG,IAAI7G,EAAEwX,EAAE0B,EAAE3O,EAAEgK,GAAGkD,EAAEkB,EAAEpB,GAAG5C,GAAG8C,EAAES,YAAYvY,KAAKuY,aAAahV,EAAE8U,EAAErY,KAAK8X,EAAEhD,EAAEyE,EAAEvE,EAAEhV,KAAK8X,GAAG,OAAOhD,GAAGzU,EAAE,CAAC,EAAEA,EAAEsU,GAAGG,EAAE,GAAGzU,EAAEwU,GAAGC,EAAEzU,EAAE0V,GAAGjB,EAAE,EAAEzU,EAAEoR,IAAI4G,EAAErD,GAAG,OAAO3U,EAAEqJ,IAAI2O,EAAErD,GAAG,MAAM3U,EAAE+K,GAAGiN,EAAEpD,EAAE5U,EAAEyK,GAAGuN,EAAE9U,EAAElD,EAAE4G,GAAGoR,EAAh/K,IAAo/KhY,GAAGwX,IAAIQ,EAAEnR,EAAE4N,EAAEyE,EAAE7P,EAAEoL,EAAE,EAAEE,EAAEsH,YAAY,WAAW,OAAOtc,KAAK0b,MAAM7G,GAAG4F,EAAE,EAAEzF,EAAEmH,QAAQ,WAAW,OAAOlD,EAAEjZ,KAAKyZ,GAAG,EAAEzE,EAAEwE,OAAO,SAAStB,EAAE3U,GAAG,IAAI2U,EAAE,OAAOlY,KAAKyZ,GAAG,IAAIxE,EAAEjV,KAAK6Y,QAAQjB,EAAEyB,EAAEnB,EAAE3U,GAAE,GAAI,OAAOqU,IAAI3C,EAAEwE,GAAG7B,GAAG3C,CAAC,EAAED,EAAE6D,MAAM,WAAW,OAAOU,EAAEP,EAAEhZ,KAAKga,GAAGha,KAAK,EAAEgV,EAAEkH,OAAO,WAAW,OAAO,IAAIjC,KAAKja,KAAKgc,UAAU,EAAEhH,EAAEmJ,OAAO,WAAW,OAAOne,KAAKsb,UAAUtb,KAAKoe,cAAc,IAAI,EAAEpJ,EAAEoJ,YAAY,WAAW,OAAOpe,KAAKga,GAAGoE,aAAa,EAAEpJ,EAAEuG,SAAS,WAAW,OAAOvb,KAAKga,GAAGqE,aAAa,EAAEvG,CAAC,CAAtwI,GAA0wIwG,EAAElF,EAAEzZ,UAAU,OAAOqZ,EAAErZ,UAAU2e,EAAE,CAAC,CAAC,MAAM1G,GAAG,CAAC,KAAK3Q,GAAG,CAAC,KAAK6D,GAAG,CAAC,KAAKM,GAAG,CAAC,KAAK1B,GAAG,CAAC,KAAKmL,GAAG,CAAC,KAAKF,GAAG,CAAC,KAAKC,IAAI+B,SAAS,SAASuB,GAAGoG,EAAEpG,EAAE,IAAI,SAAS3U,GAAG,OAAOvD,KAAK6b,GAAGtY,EAAE2U,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAIc,EAAEvY,OAAO,SAASyX,EAAE3U,GAAG,OAAO2U,EAAEqG,KAAKrG,EAAE3U,EAAE6V,EAAEJ,GAAGd,EAAEqG,IAAG,GAAIvF,CAAC,EAAEA,EAAEQ,OAAOH,EAAEL,EAAEwF,QAAQ5T,EAAEoO,EAAE+C,KAAK,SAAS7D,GAAG,OAAOc,EAAE,IAAId,EAAE,EAAEc,EAAEyF,GAAGxF,EAAEnE,GAAGkE,EAAE0F,GAAGzF,EAAED,EAAEpO,EAAE,CAAC,EAAEoO,CAAC,CAAv7MzV,qBCAfmU,EAAOC,QAA0J,WAAW,aAAa,IAAIpU,EAAE,CAACob,IAAI,YAAYC,GAAG,SAASC,EAAE,aAAaC,GAAG,eAAeC,IAAI,sBAAsBC,KAAK,6BAA6B,OAAO,SAAS9G,EAAEzG,EAAEwD,GAAG,IAAI2C,EAAEnG,EAAE9R,UAAUsH,EAAE2Q,EAAE8E,OAAOzH,EAAEwJ,GAAGQ,QAAQ1b,EAAEqU,EAAE8E,OAAO,SAASxE,QAAG,IAASA,IAAIA,EAAE,wBAAwB,IAAIzG,EAAEzR,KAAKmc,UAAU8C,QAAQhK,EAAE,SAASiD,EAAEzG,GAAG,OAAOyG,EAAEvU,QAAQ,qCAAqC,SAASuU,EAAEjD,EAAE2C,GAAG,IAAI3Q,EAAE2Q,GAAGA,EAAEsH,cAAc,OAAOjK,GAAGxD,EAAEmG,IAAIrU,EAAEqU,IAAInG,EAAExK,GAAGtD,QAAQ,kCAAkC,SAASJ,EAAE2U,EAAEzG,GAAG,OAAOyG,GAAGzG,EAAE8D,MAAM,EAAE,GAAG,GAAG,CAA5N,CAA8N2C,OAAE,IAASzG,EAAE,CAAC,EAAEA,GAAG,OAAOxK,EAAElH,KAAKC,KAAKiV,EAAE,CAAC,CAAC,CAAhtBiD,qBCAfR,EAAOC,QAAuJ,WAAW,aAAa,OAAO,SAASC,EAAErU,EAAE2U,GAAGN,EAAEA,GAAG,CAAC,EAAE,IAAI3C,EAAE1R,EAAE5D,UAAU8R,EAAE,CAAC0N,OAAO,QAAQC,KAAK,SAAStU,EAAE,gBAAgBkK,EAAE,WAAW6I,GAAG,aAAa9H,EAAE,UAAU4H,GAAG,WAAW/I,EAAE,QAAQwI,GAAG,UAAUtF,EAAE,UAAUiF,GAAG,YAAYlF,EAAE,SAASwH,GAAG,YAAY,SAASpY,EAAE2Q,EAAErU,EAAE2U,EAAEzG,GAAG,OAAOwD,EAAEqK,WAAW1H,EAAErU,EAAE2U,EAAEzG,EAAE,CAACyG,EAAEuG,GAAGc,aAAa9N,EAAEwD,EAAEqK,WAAW,SAAS/b,EAAE0R,EAAEhO,EAAE2N,EAAExJ,GAAG,IAAI,IAAIyJ,EAAEnL,EAAEoB,EAAE5D,EAAED,EAAEkV,UAAUoD,cAAc9N,EAAEsE,EAAE6B,EAAE4H,YAAY,CAAC,CAACtY,EAAE,IAAI0Q,EAAE,GAAGhD,EAAE,UAAU,CAAC1N,EAAE,IAAI0Q,EAAE,IAAI,CAAC1Q,EAAE,KAAK0Q,EAAE,GAAGhD,EAAE,UAAU,CAAC1N,EAAE,IAAI0Q,EAAE,IAAI,CAAC1Q,EAAE,KAAK0Q,EAAE,GAAGhD,EAAE,QAAQ,CAAC1N,EAAE,IAAI0Q,EAAE,IAAI,CAAC1Q,EAAE,KAAK0Q,EAAE,GAAGhD,EAAE,OAAO,CAAC1N,EAAE,IAAI0Q,EAAE,IAAI,CAAC1Q,EAAE,KAAK0Q,EAAE,GAAGhD,EAAE,SAAS,CAAC1N,EAAE,IAAI0Q,EAAE,IAAI,CAAC1Q,EAAE,KAAK0N,EAAE,SAASI,EAAEe,EAAEtR,OAAOkQ,EAAE,EAAEA,EAAEK,EAAEL,GAAG,EAAE,CAAC,IAAIkD,EAAE9B,EAAEpB,GAAGkD,EAAEjD,IAAIC,EAAED,EAAEsD,EAAE3U,GAAG2a,KAAKjX,EAAE4Q,EAAEjD,GAAE,GAAI3N,EAAEiX,KAAK3a,EAAEsU,EAAEjD,GAAE,IAAK,IAAIhK,GAAGgN,EAAE6H,UAAUxc,KAAK4M,OAAO5M,KAAKuV,IAAI3D,IAAI,GAAG/J,EAAE+J,EAAE,EAAEjK,GAAGiN,EAAED,IAAIC,EAAED,EAAE,CAAChN,GAAG,GAAG+J,EAAE,IAAIkD,EAAE9B,EAAEpB,EAAE,IAAI,IAAI0D,EAAEnR,EAAE2Q,EAAE3Q,GAAGkE,IAAIR,EAAEQ,EAAE,GAAGR,IAAIlB,EAAE,iBAAiB2O,EAAEA,EAAE1U,QAAQ,KAAKiH,GAAGyN,EAAEzN,EAAEqK,EAAE4C,EAAE3Q,EAAE4D,GAAG,KAAK,CAAC,CAAC,GAAGmK,EAAE,OAAOvL,EAAE,IAAIoO,EAAEhN,EAAE5D,EAAEiY,OAAOjY,EAAEkY,KAAK,MAAM,mBAAmBtH,EAAEA,EAAEpO,GAAGoO,EAAEnU,QAAQ,KAAK+F,EAAE,EAAEuL,EAAEyK,GAAG,SAAS9H,EAAErU,GAAG,OAAO0D,EAAE2Q,EAAErU,EAAEvD,MAAK,EAAG,EAAEiV,EAAE0K,KAAK,SAAS/H,EAAErU,GAAG,OAAO0D,EAAE2Q,EAAErU,EAAEvD,KAAK,EAAE,IAAI4U,EAAE,SAASgD,GAAG,OAAOA,EAAE+B,GAAGzB,EAAEwB,MAAMxB,GAAG,EAAEjD,EAAE2K,MAAM,SAAShI,GAAG,OAAO5X,KAAK0f,GAAG9K,EAAE5U,MAAM4X,EAAE,EAAE3C,EAAE4K,QAAQ,SAASjI,GAAG,OAAO5X,KAAK2f,KAAK/K,EAAE5U,MAAM4X,EAAE,CAAC,CAAC,CAAvzCrU,+BCGnFmU,EAAOC,QAAU,WACf,GAA0B,iBAAfmI,WACT,OAAOA,WAGT,IAAIhL,EAEJ,IAGEA,EAAI9U,MAAQ,IAAI+f,SAAS,cAAb,EAgBd,CAfE,MAAOxc,GAEP,GAAsB,iBAAXxB,OACT,OAAOA,OAIT,GAAoB,iBAATiL,KACT,OAAOA,KAIT,QAAsB,IAAXgT,EAAAA,EACT,OAAOA,EAAAA,CAEX,CAEA,OAAOlL,CACT,CA7BiB,qBCiBjB,SAAU7Q,GA6GR,SAASgc,EAAW1M,GAQlB,GAP8B,iBAAnBA,EAAU5R,OACnB4R,EAAU5R,KAAO,CACfue,KAAM3M,EAAU5R,OAKf4R,EAAU5R,MAAS4R,EAAU5R,KAAKue,MAAuC,iBAAxB3M,EAAU5R,KAAKue,KAArE,CAIA,IAAIC,EAAc5M,EAAUC,QAC1B0M,EAAO3M,EAAU5R,KAAKue,KAAK1Z,cAAcuF,MAAM,KAEjDwH,EAAUC,QAAU,SAASP,GAE3B,GAAIjT,OAASiT,EAAMtS,UAChBsD,EAAOmc,QAAQ5f,QAAQ6f,8BACtBpc,EAAOmc,QAAQE,eAAe/b,KAAK0O,EAAMtS,OAAO4F,WAC/CtC,EAAOmc,QAAQ5f,QAAQ+f,uBAAyBtc,EAAOgP,EAAMtS,QAAQ2D,KAAK,oBAC1EL,EAAOmc,QAAQ5f,QAAQggB,kBACtBvc,EAAOwC,QAAQwM,EAAMtS,OAAOqE,KAAMf,EAAOmc,QAAQK,0BAA4B,GALnF,CASA,IAAIvN,EAAyB,aAAfD,EAAMjO,MAAuBf,EAAOmc,QAAQM,YAAYzN,EAAMrO,OAC1E+b,EAAYxI,OAAOyI,aAAa3N,EAAMrO,OAAO4B,cAC7Cqa,EAAQ,GACRC,EAAW,CAAC,EAEd7c,EAAOxC,KAAK,CAAC,MAAO,OAAQ,UAAU,SAASoE,EAAOkb,GAEhD9N,EAAM8N,EAAa,QAAU7N,IAAY6N,IAC3CF,GAASE,EAAa,IAE1B,IAGI9N,EAAM+N,UAAY/N,EAAMgO,SAAuB,SAAZ/N,IACrC2N,GAAS,SAGP5N,EAAM+N,SAAuB,SAAZ9N,GAAsB2N,EAAMK,QAAQ,oBAAsB,IAC7EL,EAAQA,EAAMld,QAAQ,kBAAmB,WAGvCuP,EACF4N,EAASD,EAAQ3N,IAAW,GAG5B4N,EAASD,EAAQF,IAAa,EAC9BG,EAASD,EAAQ5c,EAAOmc,QAAQe,UAAUR,KAAc,EAG1C,WAAVE,IACFC,EAAS7c,EAAOmc,QAAQe,UAAUR,KAAc,IAIpD,IAAK,IAAI1Z,EAAI,EAAGC,EAAIgZ,EAAKzb,OAAQwC,EAAIC,EAAGD,IACtC,GAAI6Z,EAASZ,EAAKjZ,IAChB,OAAOkZ,EAAY1M,MAAMzT,KAAM0T,UAtCnC,CAyCF,CAvDA,CAwDF,CA7KAzP,EAAOmc,QAAU,CACfgB,QAAS,QAETV,YAAa,CACX,EAAG,YACH,EAAG,MACH,GAAI,SACJ,GAAI,SACJ,GAAI,QACJ,GAAI,OACJ,GAAI,MACJ,GAAI,QACJ,GAAI,WACJ,GAAI,MACJ,GAAI,QACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,OACJ,GAAI,KACJ,GAAI,QACJ,GAAI,OACJ,GAAI,SACJ,GAAI,MACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,GAAI,IACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,UACL,IAAK,SACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KAGPS,UAAW,CACT,IAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KAIRV,wBAAyB,CACvB,OAAQ,WAAY,SAAU,QAAS,MAAO,QAAS,OAAQ,QAAS,OAAQ,OAAQ,WACxF,iBAAkB,SAAU,QAAS,OAGvCH,eAAgB,yBAEhB9f,QAAS,CACP6f,8BAA8B,EAC9BG,kBAAkB,EAClBD,uBAAuB,IAwE3Btc,EAAOxC,KAAK,CAAC,UAAW,QAAS,aAAa,WAC5CwC,EAAOgP,MAAMC,QAAQlT,MAAQ,CAC3B8Y,IAAKmH,EAET,GAED,CAvLD,CAuLGhc,QAAUjE,KAAKiE,QAAUlC,OAAOkC,4BC3MnC,OAaA,SAAY+b,EAAQqB,GAEnB,aAE6D,iBAAnB3J,EAAOC,QAShDD,EAAOC,QAAUqI,EAAOpf,SACvBygB,EAASrB,GAAQ,GACjB,SAAUhH,GACT,IAAMA,EAAEpY,SACP,MAAM,IAAIiL,MAAO,4CAElB,OAAOwV,EAASrI,EACjB,EAEDqI,EAASrB,EAIV,CA1BD,CA0BuB,oBAAXje,OAAyBA,OAAS/B,MAAM,SAAU+B,EAAQuf,GAMtE,aAEA,IAAIC,EAAM,GAENC,EAAWC,OAAOC,eAElBnM,EAAQgM,EAAIhM,MAEZ3V,EAAO2hB,EAAI3hB,KAAO,SAAU+hB,GAC/B,OAAOJ,EAAI3hB,KAAKG,KAAM4hB,EACvB,EAAI,SAAUA,GACb,OAAOJ,EAAIphB,OAAOsT,MAAO,GAAIkO,EAC9B,EAGIzM,EAAOqM,EAAIrM,KAEXgM,EAAUK,EAAIL,QAEdU,EAAa,CAAC,EAEdrG,EAAWqG,EAAWrG,SAEtBsG,EAASD,EAAWnV,eAEpBqV,EAAaD,EAAOtG,SAEpBwG,EAAuBD,EAAW/hB,KAAM0hB,QAExCvS,EAAU,CAAC,EAEX1D,EAAa,SAAqBuB,GASpC,MAAsB,mBAARA,GAA8C,iBAAjBA,EAAIiV,UAC1B,mBAAbjV,EAAIkV,IACb,EAGGC,EAAW,SAAmBnV,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAIhL,MACnC,EAGGnB,EAAWmB,EAAOnB,SAIjBuhB,EAA4B,CAC/Bnd,MAAM,EACNod,KAAK,EACLC,OAAO,EACPC,UAAU,GAGX,SAASC,EAASxY,EAAMyY,EAAMC,GAG7B,IAAIxb,EAAG/G,EACNwiB,GAHDD,EAAMA,GAAO7hB,GAGC0E,cAAe,UAG7B,GADAod,EAAOnS,KAAOxG,EACTyY,EACJ,IAAMvb,KAAKkb,GAYVjiB,EAAMsiB,EAAMvb,IAAOub,EAAKG,cAAgBH,EAAKG,aAAc1b,KAE1Dyb,EAAOE,aAAc3b,EAAG/G,GAI3BuiB,EAAII,KAAK9O,YAAa2O,GAASna,WAAWC,YAAaka,EACxD,CAGD,SAASI,EAAQ/V,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,iBAARA,GAAmC,mBAARA,EACxC6U,EAAYrG,EAASxb,KAAMgN,KAAW,gBAC/BA,CACT,CAOA,IACCqU,EAAU,QAGVnd,EAAS,SAATA,EAAmBI,EAAUwP,GAI5B,OAAO,IAAI5P,EAAOJ,GAAGiF,KAAMzE,EAAUwP,EACtC,EAyVD,SAASkP,EAAahW,GAMrB,IAAItI,IAAWsI,GAAO,WAAYA,GAAOA,EAAItI,OAC5CO,EAAO8d,EAAQ/V,GAEhB,OAAKvB,EAAYuB,KAASmV,EAAUnV,KAIpB,UAAT/H,GAA+B,IAAXP,GACR,iBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAOsI,EAChE,CAtWA9I,EAAOJ,GAAKI,EAAOtE,UAAY,CAG9BqjB,OAAQ5B,EAERxV,YAAa3H,EAGbQ,OAAQ,EAERwe,QAAS,WACR,OAAO1N,EAAMxV,KAAMC,KACpB,EAIAuc,IAAK,SAAU2G,GAGd,OAAY,MAAPA,EACG3N,EAAMxV,KAAMC,MAIbkjB,EAAM,EAAIljB,KAAMkjB,EAAMljB,KAAKyE,QAAWzE,KAAMkjB,EACpD,EAIAC,UAAW,SAAUC,GAGpB,IAAIC,EAAMpf,EAAOqf,MAAOtjB,KAAK4L,cAAewX,GAM5C,OAHAC,EAAIE,WAAavjB,KAGVqjB,CACR,EAGA5hB,KAAM,SAAU+O,GACf,OAAOvM,EAAOxC,KAAMzB,KAAMwQ,EAC3B,EAEA5I,IAAK,SAAU4I,GACd,OAAOxQ,KAAKmjB,UAAWlf,EAAO2D,IAAK5H,MAAM,SAAUwjB,EAAMvc,GACxD,OAAOuJ,EAASzQ,KAAMyjB,EAAMvc,EAAGuc,EAChC,IACD,EAEAjO,MAAO,WACN,OAAOvV,KAAKmjB,UAAW5N,EAAM9B,MAAOzT,KAAM0T,WAC3C,EAEA+P,MAAO,WACN,OAAOzjB,KAAK8F,GAAI,EACjB,EAEA4d,KAAM,WACL,OAAO1jB,KAAK8F,IAAK,EAClB,EAEA6d,KAAM,WACL,OAAO3jB,KAAKmjB,UAAWlf,EAAO2f,KAAM5jB,MAAM,SAAU6jB,EAAO5c,GAC1D,OAASA,EAAI,GAAM,CACpB,IACD,EAEA6c,IAAK,WACJ,OAAO9jB,KAAKmjB,UAAWlf,EAAO2f,KAAM5jB,MAAM,SAAU6jB,EAAO5c,GAC1D,OAAOA,EAAI,CACZ,IACD,EAEAnB,GAAI,SAAUmB,GACb,IAAIc,EAAM/H,KAAKyE,OACd2D,GAAKnB,GAAMA,EAAI,EAAIc,EAAM,GAC1B,OAAO/H,KAAKmjB,UAAW/a,GAAK,GAAKA,EAAIL,EAAM,CAAE/H,KAAMoI,IAAQ,GAC5D,EAEAoK,IAAK,WACJ,OAAOxS,KAAKujB,YAAcvjB,KAAK4L,aAChC,EAIAsJ,KAAMA,EACNQ,KAAM6L,EAAI7L,KACVqO,OAAQxC,EAAIwC,QAGb9f,EAAOxD,OAASwD,EAAOJ,GAAGpD,OAAS,WAClC,IAAID,EAASqS,EAAMuP,EAAKxL,EAAMoN,EAAanL,EAC1ClY,EAAS+S,UAAW,IAAO,CAAC,EAC5BzM,EAAI,EACJxC,EAASiP,UAAUjP,OACnBwf,GAAO,EAsBR,IAnBuB,kBAAXtjB,IACXsjB,EAAOtjB,EAGPA,EAAS+S,UAAWzM,IAAO,CAAC,EAC5BA,KAIsB,iBAAXtG,GAAwB6K,EAAY7K,KAC/CA,EAAS,CAAC,GAINsG,IAAMxC,IACV9D,EAASX,KACTiH,KAGOA,EAAIxC,EAAQwC,IAGnB,GAAqC,OAA9BzG,EAAUkT,UAAWzM,IAG3B,IAAM4L,KAAQrS,EACboW,EAAOpW,EAASqS,GAIF,cAATA,GAAwBlS,IAAWiW,IAKnCqN,GAAQrN,IAAU3S,EAAOigB,cAAetN,KAC1CoN,EAActkB,MAAMU,QAASwW,MAC/BwL,EAAMzhB,EAAQkS,GAIbgG,EADImL,IAAgBtkB,MAAMU,QAASgiB,GAC3B,GACI4B,GAAgB/f,EAAOigB,cAAe9B,GAG1CA,EAFA,CAAC,EAIV4B,GAAc,EAGdrjB,EAAQkS,GAAS5O,EAAOxD,OAAQwjB,EAAMpL,EAAOjC,SAGzB9D,IAAT8D,IACXjW,EAAQkS,GAAS+D,IAOrB,OAAOjW,CACR,EAEAsD,EAAOxD,OAAQ,CAGd0jB,QAAS,UAAa/C,EAAUne,KAAK0O,UAAWhO,QAAS,MAAO,IAGhEygB,SAAS,EAETC,MAAO,SAAUC,GAChB,MAAM,IAAIzY,MAAOyY,EAClB,EAEAC,KAAM,WAAY,EAElBL,cAAe,SAAUnX,GACxB,IAAIyX,EAAOC,EAIX,SAAM1X,GAAgC,oBAAzBwO,EAASxb,KAAMgN,KAI5ByX,EAAQhD,EAAUzU,MASK,mBADvB0X,EAAO5C,EAAO9hB,KAAMykB,EAAO,gBAAmBA,EAAM5Y,cACfkW,EAAW/hB,KAAM0kB,KAAW1C,GAClE,EAEA2C,cAAe,SAAU3X,GACxB,IAAI8F,EAEJ,IAAMA,KAAQ9F,EACb,OAAO,EAER,OAAO,CACR,EAIA4X,WAAY,SAAU5a,EAAMvJ,EAASiiB,GACpCF,EAASxY,EAAM,CAAEsY,MAAO7hB,GAAWA,EAAQ6hB,OAASI,EACrD,EAEAhhB,KAAM,SAAUsL,EAAKyD,GACpB,IAAI/L,EAAQwC,EAAI,EAEhB,GAAK8b,EAAahW,GAEjB,IADAtI,EAASsI,EAAItI,OACLwC,EAAIxC,IACqC,IAA3C+L,EAASzQ,KAAMgN,EAAK9F,GAAKA,EAAG8F,EAAK9F,IADnBA,UAMpB,IAAMA,KAAK8F,EACV,IAAgD,IAA3CyD,EAASzQ,KAAMgN,EAAK9F,GAAKA,EAAG8F,EAAK9F,IACrC,MAKH,OAAO8F,CACR,EAGA6X,UAAW,SAAUrD,EAAKsD,GACzB,IAAIxB,EAAMwB,GAAW,GAarB,OAXY,MAAPtD,IACCwB,EAAatB,OAAQF,IACzBtd,EAAOqf,MAAOD,EACE,iBAAR9B,EACN,CAAEA,GAAQA,GAGZrM,EAAKnV,KAAMsjB,EAAK9B,IAIX8B,CACR,EAEA5c,QAAS,SAAU+c,EAAMjC,EAAKta,GAC7B,OAAc,MAAPsa,GAAe,EAAIL,EAAQnhB,KAAMwhB,EAAKiC,EAAMvc,EACpD,EAIAqc,MAAO,SAAUG,EAAOqB,GAKvB,IAJA,IAAI/c,GAAO+c,EAAOrgB,OACjB2D,EAAI,EACJnB,EAAIwc,EAAMhf,OAEH2D,EAAIL,EAAKK,IAChBqb,EAAOxc,KAAQ6d,EAAQ1c,GAKxB,OAFAqb,EAAMhf,OAASwC,EAERwc,CACR,EAEAG,KAAM,SAAUR,EAAO5S,EAAUuU,GAShC,IARA,IACCC,EAAU,GACV/d,EAAI,EACJxC,EAAS2e,EAAM3e,OACfwgB,GAAkBF,EAIX9d,EAAIxC,EAAQwC,KACAuJ,EAAU4S,EAAOnc,GAAKA,KAChBge,GACxBD,EAAQ9P,KAAMkO,EAAOnc,IAIvB,OAAO+d,CACR,EAGApd,IAAK,SAAUwb,EAAO5S,EAAU0U,GAC/B,IAAIzgB,EAAQsC,EACXE,EAAI,EACJoc,EAAM,GAGP,GAAKN,EAAaK,GAEjB,IADA3e,EAAS2e,EAAM3e,OACPwC,EAAIxC,EAAQwC,IAGL,OAFdF,EAAQyJ,EAAU4S,EAAOnc,GAAKA,EAAGie,KAGhC7B,EAAInO,KAAMnO,QAMZ,IAAME,KAAKmc,EAGI,OAFdrc,EAAQyJ,EAAU4S,EAAOnc,GAAKA,EAAGie,KAGhC7B,EAAInO,KAAMnO,GAMb,OAAOnH,EAAMyjB,EACd,EAGA8B,KAAM,EAINjW,QAASA,IAGa,mBAAXkW,SACXnhB,EAAOJ,GAAIuhB,OAAOC,UAAa9D,EAAK6D,OAAOC,WAI5CphB,EAAOxC,KAAM,uEAAuEsK,MAAO,MAC1F,SAAUuZ,EAAIzS,GACb+O,EAAY,WAAa/O,EAAO,KAAQA,EAAKrM,aAC9C,IAkBD,IAAI+e,EAWF,SAAUxjB,GACZ,IAAIkF,EACHiI,EACAsW,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACArlB,EACAslB,EACAC,EACAC,EACAC,EACArB,EACA9f,EAGAif,EAAU,SAAW,EAAI,IAAIlK,KAC7BqM,EAAevkB,EAAOnB,SACtB2lB,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAUpd,EAAGE,GAIxB,OAHKF,IAAME,IACVoc,GAAe,GAET,CACR,EAGAnE,EAAW,CAAC,EAAIpV,eAChB8U,EAAM,GACN3L,EAAM2L,EAAI3L,IACVmR,EAAaxF,EAAIrM,KACjBA,EAAOqM,EAAIrM,KACXK,EAAQgM,EAAIhM,MAIZ2L,EAAU,SAAU8F,EAAMxD,GAGzB,IAFA,IAAIvc,EAAI,EACPc,EAAMif,EAAKviB,OACJwC,EAAIc,EAAKd,IAChB,GAAK+f,EAAM/f,KAAQuc,EAClB,OAAOvc,EAGT,OAAQ,CACT,EAEAggB,EAAW,6HAMXC,EAAa,sBAGbC,EAAa,oFAIbjf,EAAa,2BAA4Bif,EAAa,OAASD,EAG9D,gBAAkBA,EAIlB,2DAA6DC,EAAa,OAC1ED,EAAa,OAEdE,EAAU,KAAOD,EAAP,wFAOoBjf,EAPpB,eAcVmf,EAAc,IAAIrgB,OAAQkgB,EAAa,IAAK,KAC5CI,EAAQ,IAAItgB,OAAQ,uEACA,KAEpBugB,EAAS,IAAIvgB,OAAQ,8CACrBwgB,EAAe,IAAIxgB,OAAQ,wEAE3BygB,EAAW,IAAIzgB,OAAQkgB,EAAa,MAEpCQ,EAAU,IAAI1gB,OAAQogB,GACtBO,EAAc,IAAI3gB,OAAQ,IAAMmgB,EAAa,KAE7CS,EAAY,CACX,GAAM,IAAI5gB,OAAQ,MAAQmgB,EAAa,KACvC,MAAS,IAAIngB,OAAQ,QAAUmgB,EAAa,KAC5C,IAAO,IAAIngB,OAAQ,KAAOmgB,EAAa,SACvC,KAAQ,IAAIngB,OAAQ,IAAMkB,GAC1B,OAAU,IAAIlB,OAAQ,IAAMogB,GAC5B,MAAS,IAAIpgB,OAAQ,4LAE+B,KACpD,KAAQ,IAAIA,OAAQ,OAASigB,EAAW,KAAM,KAI9C,aAAgB,IAAIjgB,OAAQ,6IAE2B,MAGxD6gB,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAInhB,OAAQ,8DAA8D,KACtFohB,GAAY,SAAUC,EAAQC,GAC7B,IAAIC,EAAO,KAAOF,EAAO9S,MAAO,GAAM,MAEtC,OAAO+S,IASNC,EAAO,EACNpQ,OAAOyI,aAAc2H,EAAO,OAC5BpQ,OAAOyI,aAAc2H,GAAQ,GAAK,MAAe,KAAPA,EAAe,OAC5D,EAIAC,GAAa,sDACbC,GAAa,SAAUC,EAAIC,GAC1B,OAAKA,EAGQ,OAAPD,EACG,IAIDA,EAAGnT,MAAO,GAAI,GAAM,KAC1BmT,EAAGE,WAAYF,EAAGjkB,OAAS,GAAI8W,SAAU,IAAO,IAI3C,KAAOmN,CACf,EAMAG,GAAgB,WACf5C,GACD,EAEA6C,GAAqBC,IACpB,SAAUvF,GACT,OAAyB,IAAlBA,EAAKwF,UAAqD,aAAhCxF,EAAKjd,SAASC,aAChD,GACA,CAAEyiB,IAAK,aAAcC,KAAM,WAI7B,IACChU,EAAKzB,MACF8N,EAAMhM,EAAMxV,KAAMumB,EAAa6C,YACjC7C,EAAa6C,YAMd5H,EAAK+E,EAAa6C,WAAW1kB,QAASud,QAoBvC,CAnBE,MAAQze,GACT2R,EAAO,CAAEzB,MAAO8N,EAAI9c,OAGnB,SAAU9D,EAAQyoB,GACjBrC,EAAWtT,MAAO9S,EAAQ4U,EAAMxV,KAAMqpB,GACvC,EAIA,SAAUzoB,EAAQyoB,GAKjB,IAJA,IAAIhhB,EAAIzH,EAAO8D,OACdwC,EAAI,EAGKtG,EAAQyH,KAAQghB,EAAKniB,OAC/BtG,EAAO8D,OAAS2D,EAAI,CACrB,EAEF,CAEA,SAASmd,GAAQlhB,EAAUwP,EAASgR,EAASwE,GAC5C,IAAIrU,EAAG/N,EAAGuc,EAAM8F,EAAK1iB,EAAO2iB,EAAQC,EACnCC,EAAa5V,GAAWA,EAAQtG,cAGhCyU,EAAWnO,EAAUA,EAAQmO,SAAW,EAKzC,GAHA6C,EAAUA,GAAW,GAGI,iBAAbxgB,IAA0BA,GACxB,IAAb2d,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAO6C,EAIR,IAAMwE,IACLpD,EAAapS,GACbA,EAAUA,GAAWjT,EAEhBulB,GAAiB,CAIrB,GAAkB,KAAbnE,IAAqBpb,EAAQqhB,EAAWyB,KAAMrlB,IAGlD,GAAO2Q,EAAIpO,EAAO,IAGjB,GAAkB,IAAbob,EAAiB,CACrB,KAAOwB,EAAO3P,EAAQjC,eAAgBoD,IAUrC,OAAO6P,EALP,GAAKrB,EAAKmG,KAAO3U,EAEhB,OADA6P,EAAQ3P,KAAMsO,GACPqB,CAOV,MAKC,GAAK4E,IAAgBjG,EAAOiG,EAAW7X,eAAgBoD,KACtD9P,EAAU2O,EAAS2P,IACnBA,EAAKmG,KAAO3U,EAGZ,OADA6P,EAAQ3P,KAAMsO,GACPqB,MAKH,IAAKje,EAAO,GAElB,OADAsO,EAAKzB,MAAOoR,EAAShR,EAAQ+V,qBAAsBvlB,IAC5CwgB,EAGD,IAAO7P,EAAIpO,EAAO,KAASsI,EAAQ2a,wBACzChW,EAAQgW,uBAGR,OADA3U,EAAKzB,MAAOoR,EAAShR,EAAQgW,uBAAwB7U,IAC9C6P,CACR,CAID,GAAK3V,EAAQ4a,MACXjD,EAAwBxiB,EAAW,QACjC+hB,IAAcA,EAAU7hB,KAAMF,MAIlB,IAAb2d,GAAqD,WAAnCnO,EAAQtN,SAASC,eAA+B,CAYpE,GAVAgjB,EAAcnlB,EACdolB,EAAa5V,EASK,IAAbmO,IACFyF,EAASljB,KAAMF,IAAcmjB,EAAajjB,KAAMF,IAAe,CAqBjE,KAlBAolB,EAAavB,GAAS3jB,KAAMF,IAAc0lB,GAAalW,EAAQtL,aAC9DsL,KAImBA,GAAY3E,EAAQ8a,SAGhCV,EAAMzV,EAAQ8O,aAAc,OAClC2G,EAAMA,EAAI3lB,QAAS6kB,GAAYC,IAE/B5U,EAAQ+O,aAAc,KAAQ0G,EAAMnF,IAMtCld,GADAsiB,EAAS5D,EAAUthB,IACRI,OACHwC,KACPsiB,EAAQtiB,IAAQqiB,EAAM,IAAMA,EAAM,UAAa,IAC9CW,GAAYV,EAAQtiB,IAEtBuiB,EAAcD,EAAOnR,KAAM,IAC5B,CAEA,IAIC,OAHAlD,EAAKzB,MAAOoR,EACX4E,EAAWS,iBAAkBV,IAEvB3E,CAOR,CANE,MAAQsF,GACTtD,EAAwBxiB,GAAU,EACnC,CAAE,QACIilB,IAAQnF,GACZtQ,EAAQvL,gBAAiB,KAE3B,CACD,CACD,CAID,OAAOud,EAAQxhB,EAASV,QAAS2jB,EAAO,MAAQzT,EAASgR,EAASwE,EACnE,CAQA,SAAS3C,KACR,IAAIxG,EAAO,GAYX,OAVA,SAASkK,EAAOtd,EAAK/F,GAQpB,OALKmZ,EAAKhL,KAAMpI,EAAM,KAAQ0Y,EAAK6E,oBAG3BD,EAAOlK,EAAKoK,SAEXF,EAAOtd,EAAM,KAAQ/F,CAC/B,CAED,CAMA,SAASwjB,GAAc1mB,GAEtB,OADAA,EAAIsgB,IAAY,EACTtgB,CACR,CAMA,SAAS2mB,GAAQ3mB,GAChB,IAAIgE,EAAKjH,EAAS0E,cAAe,YAEjC,IACC,QAASzB,EAAIgE,EAYd,CAXE,MAAQtE,GACT,OAAO,CACR,CAAE,QAGIsE,EAAGU,YACPV,EAAGU,WAAWC,YAAaX,GAI5BA,EAAK,IACN,CACD,CAOA,SAAS4iB,GAAWC,EAAOlX,GAI1B,IAHA,IAAI+N,EAAMmJ,EAAM3e,MAAO,KACtB9E,EAAIsa,EAAI9c,OAEDwC,KACPue,EAAKmF,WAAYpJ,EAAKta,IAAQuM,CAEhC,CAQA,SAASoX,GAAclhB,EAAGE,GACzB,IAAIihB,EAAMjhB,GAAKF,EACdwU,EAAO2M,GAAsB,IAAfnhB,EAAEsY,UAAiC,IAAfpY,EAAEoY,UACnCtY,EAAEohB,YAAclhB,EAAEkhB,YAGpB,GAAK5M,EACJ,OAAOA,EAIR,GAAK2M,EACJ,KAAUA,EAAMA,EAAIE,aACnB,GAAKF,IAAQjhB,EACZ,OAAQ,EAKX,OAAOF,EAAI,GAAK,CACjB,CAMA,SAASshB,GAAmBhmB,GAC3B,OAAO,SAAUwe,GAEhB,MAAgB,UADLA,EAAKjd,SAASC,eACEgd,EAAKxe,OAASA,CAC1C,CACD,CAMA,SAASimB,GAAoBjmB,GAC5B,OAAO,SAAUwe,GAChB,IAAI3Q,EAAO2Q,EAAKjd,SAASC,cACzB,OAAkB,UAATqM,GAA6B,WAATA,IAAuB2Q,EAAKxe,OAASA,CACnE,CACD,CAMA,SAASkmB,GAAsBlC,GAG9B,OAAO,SAAUxF,GAKhB,MAAK,SAAUA,EASTA,EAAKjb,aAAgC,IAAlBib,EAAKwF,SAGvB,UAAWxF,EACV,UAAWA,EAAKjb,WACbib,EAAKjb,WAAWygB,WAAaA,EAE7BxF,EAAKwF,WAAaA,EAMpBxF,EAAK2H,aAAenC,GAI1BxF,EAAK2H,cAAgBnC,GACrBF,GAAoBtF,KAAWwF,EAG1BxF,EAAKwF,WAAaA,EAKd,UAAWxF,GACfA,EAAKwF,WAAaA,CAK3B,CACD,CAMA,SAASoC,GAAwBvnB,GAChC,OAAO0mB,IAAc,SAAUc,GAE9B,OADAA,GAAYA,EACLd,IAAc,SAAUlB,EAAMrE,GAMpC,IALA,IAAI5c,EACHkjB,EAAeznB,EAAI,GAAIwlB,EAAK5kB,OAAQ4mB,GACpCpkB,EAAIqkB,EAAa7mB,OAGVwC,KACFoiB,EAAQjhB,EAAIkjB,EAAcrkB,MAC9BoiB,EAAMjhB,KAAS4c,EAAS5c,GAAMihB,EAAMjhB,IAGvC,GACD,GACD,CAOA,SAAS2hB,GAAalW,GACrB,OAAOA,QAAmD,IAAjCA,EAAQ+V,sBAAwC/V,CAC1E,CAirCA,IAAM5M,KA9qCNiI,EAAUqW,GAAOrW,QAAU,CAAC,EAO5BwW,EAAQH,GAAOG,MAAQ,SAAUlC,GAChC,IAAI+H,EAAY/H,GAAQA,EAAKgI,aAC5BtF,EAAU1C,IAAUA,EAAKjW,eAAiBiW,GAAOpe,gBAKlD,OAAQyiB,EAAMtjB,KAAMgnB,GAAarF,GAAWA,EAAQ3f,UAAY,OACjE,EAOA0f,EAAcV,GAAOU,YAAc,SAAUzD,GAC5C,IAAIiJ,EAAYC,EACfjJ,EAAMD,EAAOA,EAAKjV,eAAiBiV,EAAO8D,EAO3C,OAAK7D,GAAO7hB,GAA6B,IAAjB6hB,EAAIT,UAAmBS,EAAIrd,iBAMnD8gB,GADAtlB,EAAW6hB,GACQrd,gBACnB+gB,GAAkBT,EAAO9kB,GAQpB0lB,GAAgB1lB,IAClB8qB,EAAY9qB,EAAS+qB,cAAiBD,EAAUlpB,MAAQkpB,IAGrDA,EAAUE,iBACdF,EAAUE,iBAAkB,SAAU/C,IAAe,GAG1C6C,EAAUG,aACrBH,EAAUG,YAAa,WAAYhD,KASrC3Z,EAAQ8a,MAAQQ,IAAQ,SAAU3iB,GAEjC,OADAqe,EAAQnS,YAAalM,GAAKkM,YAAanT,EAAS0E,cAAe,aACzB,IAAxBuC,EAAGqiB,mBACfriB,EAAGqiB,iBAAkB,uBAAwBzlB,MAChD,IAQAyK,EAAQhH,WAAasiB,IAAQ,SAAU3iB,GAEtC,OADAA,EAAGikB,UAAY,KACPjkB,EAAG8a,aAAc,YAC1B,IAMAzT,EAAQ0a,qBAAuBY,IAAQ,SAAU3iB,GAEhD,OADAA,EAAGkM,YAAanT,EAASmrB,cAAe,MAChClkB,EAAG+hB,qBAAsB,KAAMnlB,MACxC,IAGAyK,EAAQ2a,uBAAyB7B,EAAQzjB,KAAM3D,EAASipB,wBAMxD3a,EAAQ8c,QAAUxB,IAAQ,SAAU3iB,GAEnC,OADAqe,EAAQnS,YAAalM,GAAK8hB,GAAKxF,GACvBvjB,EAASqrB,oBAAsBrrB,EAASqrB,kBAAmB9H,GAAU1f,MAC9E,IAGKyK,EAAQ8c,SACZxG,EAAK1e,OAAY,GAAK,SAAU6iB,GAC/B,IAAIuC,EAASvC,EAAGhmB,QAASwkB,GAAWC,IACpC,OAAO,SAAU5E,GAChB,OAAOA,EAAKb,aAAc,QAAWuJ,CACtC,CACD,EACA1G,EAAK3kB,KAAU,GAAK,SAAU8oB,EAAI9V,GACjC,QAAuC,IAA3BA,EAAQjC,gBAAkCuU,EAAiB,CACtE,IAAI3C,EAAO3P,EAAQjC,eAAgB+X,GACnC,OAAOnG,EAAO,CAAEA,GAAS,EAC1B,CACD,IAEAgC,EAAK1e,OAAY,GAAM,SAAU6iB,GAChC,IAAIuC,EAASvC,EAAGhmB,QAASwkB,GAAWC,IACpC,OAAO,SAAU5E,GAChB,IAAIhB,OAAwC,IAA1BgB,EAAK2I,kBACtB3I,EAAK2I,iBAAkB,MACxB,OAAO3J,GAAQA,EAAKzb,QAAUmlB,CAC/B,CACD,EAIA1G,EAAK3kB,KAAU,GAAK,SAAU8oB,EAAI9V,GACjC,QAAuC,IAA3BA,EAAQjC,gBAAkCuU,EAAiB,CACtE,IAAI3D,EAAMvb,EAAGmc,EACZI,EAAO3P,EAAQjC,eAAgB+X,GAEhC,GAAKnG,EAAO,CAIX,IADAhB,EAAOgB,EAAK2I,iBAAkB,QACjB3J,EAAKzb,QAAU4iB,EAC3B,MAAO,CAAEnG,GAMV,IAFAJ,EAAQvP,EAAQoY,kBAAmBtC,GACnC1iB,EAAI,EACMuc,EAAOJ,EAAOnc,MAEvB,IADAub,EAAOgB,EAAK2I,iBAAkB,QACjB3J,EAAKzb,QAAU4iB,EAC3B,MAAO,CAAEnG,EAGZ,CAEA,MAAO,EACR,CACD,GAIDgC,EAAK3kB,KAAW,IAAKqO,EAAQ0a,qBAC5B,SAAUwC,EAAKvY,GACd,YAA6C,IAAjCA,EAAQ+V,qBACZ/V,EAAQ+V,qBAAsBwC,GAG1Bld,EAAQ4a,IACZjW,EAAQqW,iBAAkBkC,QAD3B,CAGR,EAEA,SAAUA,EAAKvY,GACd,IAAI2P,EACH6I,EAAM,GACNplB,EAAI,EAGJ4d,EAAUhR,EAAQ+V,qBAAsBwC,GAGzC,GAAa,MAARA,EAAc,CAClB,KAAU5I,EAAOqB,EAAS5d,MACF,IAAlBuc,EAAKxB,UACTqK,EAAInX,KAAMsO,GAIZ,OAAO6I,CACR,CACA,OAAOxH,CACR,EAGDW,EAAK3kB,KAAa,MAAKqO,EAAQ2a,wBAA0B,SAAUiC,EAAWjY,GAC7E,QAA+C,IAAnCA,EAAQgW,wBAA0C1D,EAC7D,OAAOtS,EAAQgW,uBAAwBiC,EAEzC,EAQAzF,EAAgB,GAOhBD,EAAY,IAELlX,EAAQ4a,IAAM9B,EAAQzjB,KAAM3D,EAASspB,qBAI3CM,IAAQ,SAAU3iB,GAEjB,IAAIykB,EAOJpG,EAAQnS,YAAalM,GAAKH,UAAY,UAAYyc,EAAZ,qBACpBA,EADoB,kEAQjCtc,EAAGqiB,iBAAkB,wBAAyBzlB,QAClD2hB,EAAUlR,KAAM,yCAKXrN,EAAGqiB,iBAAkB,cAAezlB,QACzC2hB,EAAUlR,KAAM,mCAAoC+R,EAAW,KAI1Dpf,EAAGqiB,iBAAkB,QAAU/F,EAAU,MAAO1f,QACrD2hB,EAAUlR,KAAM,OAQjBoX,EAAQ1rB,EAAS0E,cAAe,UAC1Bsd,aAAc,OAAQ,IAC5B/a,EAAGkM,YAAauY,GACVzkB,EAAGqiB,iBAAkB,aAAczlB,QACxC2hB,EAAUlR,KAAM,mFAOXrN,EAAGqiB,iBAAkB,YAAazlB,QACvC2hB,EAAUlR,KAAM,YAMXrN,EAAGqiB,iBAAkB,KAAO/F,EAAU,MAAO1f,QAClD2hB,EAAUlR,KAAM,YAKjBrN,EAAGqiB,iBAAkB,QACrB9D,EAAUlR,KAAM,cACjB,IAEAsV,IAAQ,SAAU3iB,GACjBA,EAAGH,UAAY,oFAKf,IAAI4kB,EAAQ1rB,EAAS0E,cAAe,SACpCgnB,EAAM1J,aAAc,OAAQ,UAC5B/a,EAAGkM,YAAauY,GAAQ1J,aAAc,OAAQ,KAIzC/a,EAAGqiB,iBAAkB,YAAazlB,QACtC2hB,EAAUlR,KAAM,sCAKiC,IAA7CrN,EAAGqiB,iBAAkB,YAAazlB,QACtC2hB,EAAUlR,KAAM,WAAY,aAK7BgR,EAAQnS,YAAalM,GAAKmhB,UAAW,EACc,IAA9CnhB,EAAGqiB,iBAAkB,aAAczlB,QACvC2hB,EAAUlR,KAAM,WAAY,aAK7BrN,EAAGqiB,iBAAkB,QACrB9D,EAAUlR,KAAM,OACjB,MAGMhG,EAAQqd,gBAAkBvE,EAAQzjB,KAAQygB,EAAUkB,EAAQlB,SAClEkB,EAAQsG,uBACRtG,EAAQuG,oBACRvG,EAAQwG,kBACRxG,EAAQyG,qBAERnC,IAAQ,SAAU3iB,GAIjBqH,EAAQ0d,kBAAoB5H,EAAQjlB,KAAM8H,EAAI,KAI9Cmd,EAAQjlB,KAAM8H,EAAI,aAClBwe,EAAcnR,KAAM,KAAMkS,EAC3B,IAGDhB,EAAYA,EAAU3hB,QAAU,IAAIuC,OAAQof,EAAUhO,KAAM,MAC5DiO,EAAgBA,EAAc5hB,QAAU,IAAIuC,OAAQqf,EAAcjO,KAAM,MAIxEqT,EAAazD,EAAQzjB,KAAM2hB,EAAQ2G,yBAKnC3nB,EAAWumB,GAAczD,EAAQzjB,KAAM2hB,EAAQhhB,UAC9C,SAAUwE,EAAGE,GACZ,IAAIkjB,EAAuB,IAAfpjB,EAAEsY,SAAiBtY,EAAEtE,gBAAkBsE,EAClDqjB,EAAMnjB,GAAKA,EAAErB,WACd,OAAOmB,IAAMqjB,MAAWA,GAAwB,IAAjBA,EAAI/K,YAClC8K,EAAM5nB,SACL4nB,EAAM5nB,SAAU6nB,GAChBrjB,EAAEmjB,yBAA8D,GAAnCnjB,EAAEmjB,wBAAyBE,IAE3D,EACA,SAAUrjB,EAAGE,GACZ,GAAKA,EACJ,KAAUA,EAAIA,EAAErB,YACf,GAAKqB,IAAMF,EACV,OAAO,EAIV,OAAO,CACR,EAMDod,EAAY2E,EACZ,SAAU/hB,EAAGE,GAGZ,GAAKF,IAAME,EAEV,OADAoc,GAAe,EACR,EAIR,IAAIgH,GAAWtjB,EAAEmjB,yBAA2BjjB,EAAEijB,wBAC9C,OAAKG,IAgBU,GAPfA,GAAYtjB,EAAE6D,eAAiB7D,KAASE,EAAE2D,eAAiB3D,GAC1DF,EAAEmjB,wBAAyBjjB,GAG3B,KAIGsF,EAAQ+d,cAAgBrjB,EAAEijB,wBAAyBnjB,KAAQsjB,EAOzDtjB,GAAK9I,GAAY8I,EAAE6D,eAAiB+Y,GACxCphB,EAAUohB,EAAc5c,IAChB,EAOJE,GAAKhJ,GAAYgJ,EAAE2D,eAAiB+Y,GACxCphB,EAAUohB,EAAc1c,GACjB,EAIDmc,EACJ7E,EAAS6E,EAAWrc,GAAMwX,EAAS6E,EAAWnc,GAChD,EAGe,EAAVojB,GAAe,EAAI,EAC3B,EACA,SAAUtjB,EAAGE,GAGZ,GAAKF,IAAME,EAEV,OADAoc,GAAe,EACR,EAGR,IAAI6E,EACH5jB,EAAI,EACJimB,EAAMxjB,EAAEnB,WACRwkB,EAAMnjB,EAAErB,WACR4kB,EAAK,CAAEzjB,GACP0jB,EAAK,CAAExjB,GAGR,IAAMsjB,IAAQH,EAMb,OAAOrjB,GAAK9I,GAAY,EACvBgJ,GAAKhJ,EAAW,EAEhBssB,GAAO,EACPH,EAAM,EACNhH,EACE7E,EAAS6E,EAAWrc,GAAMwX,EAAS6E,EAAWnc,GAChD,EAGK,GAAKsjB,IAAQH,EACnB,OAAOnC,GAAclhB,EAAGE,GAKzB,IADAihB,EAAMnhB,EACImhB,EAAMA,EAAItiB,YACnB4kB,EAAGE,QAASxC,GAGb,IADAA,EAAMjhB,EACIihB,EAAMA,EAAItiB,YACnB6kB,EAAGC,QAASxC,GAIb,KAAQsC,EAAIlmB,KAAQmmB,EAAInmB,IACvBA,IAGD,OAAOA,EAGN2jB,GAAcuC,EAAIlmB,GAAKmmB,EAAInmB,IAO3BkmB,EAAIlmB,IAAOqf,GAAgB,EAC3B8G,EAAInmB,IAAOqf,EAAe,EAE1B,CACF,EAEO1lB,GA/cCA,CAgdT,EAEA2kB,GAAOP,QAAU,SAAUsI,EAAMxlB,GAChC,OAAOyd,GAAQ+H,EAAM,KAAM,KAAMxlB,EAClC,EAEAyd,GAAOgH,gBAAkB,SAAU/I,EAAM8J,GAGxC,GAFArH,EAAazC,GAERtU,EAAQqd,iBAAmBpG,IAC9BU,EAAwByG,EAAO,QAC7BjH,IAAkBA,EAAc9hB,KAAM+oB,OACtClH,IAAkBA,EAAU7hB,KAAM+oB,IAErC,IACC,IAAIjK,EAAM2B,EAAQjlB,KAAMyjB,EAAM8J,GAG9B,GAAKjK,GAAOnU,EAAQ0d,mBAInBpJ,EAAK5iB,UAAuC,KAA3B4iB,EAAK5iB,SAASohB,SAC/B,OAAOqB,CAIT,CAFE,MAAQ9f,GACTsjB,EAAwByG,GAAM,EAC/B,CAGD,OAAO/H,GAAQ+H,EAAM1sB,EAAU,KAAM,CAAE4iB,IAAS/e,OAAS,CAC1D,EAEA8gB,GAAOrgB,SAAW,SAAU2O,EAAS2P,GAUpC,OAHO3P,EAAQtG,eAAiBsG,IAAajT,GAC5CqlB,EAAapS,GAEP3O,EAAU2O,EAAS2P,EAC3B,EAEA+B,GAAOjhB,KAAO,SAAUkf,EAAM3Q,IAOtB2Q,EAAKjW,eAAiBiW,IAAU5iB,GACtCqlB,EAAazC,GAGd,IAAI3f,EAAK2hB,EAAKmF,WAAY9X,EAAKrM,eAG9BtG,EAAM2D,GAAMge,EAAO9hB,KAAMylB,EAAKmF,WAAY9X,EAAKrM,eAC9C3C,EAAI2f,EAAM3Q,GAAOsT,QACjBrT,EAEF,YAAeA,IAAR5S,EACNA,EACAgP,EAAQhH,aAAeie,EACtB3C,EAAKb,aAAc9P,IACjB3S,EAAMsjB,EAAK2I,iBAAkBtZ,KAAY3S,EAAIqtB,UAC9CrtB,EAAI6G,MACJ,IACJ,EAEAwe,GAAO8C,OAAS,SAAUmF,GACzB,OAASA,EAAM,IAAK7pB,QAAS6kB,GAAYC,GAC1C,EAEAlD,GAAOlB,MAAQ,SAAUC,GACxB,MAAM,IAAIzY,MAAO,0CAA4CyY,EAC9D,EAMAiB,GAAOkI,WAAa,SAAU5I,GAC7B,IAAIrB,EACHkK,EAAa,GACbtlB,EAAI,EACJnB,EAAI,EAOL,GAJA+e,GAAgB9W,EAAQye,iBACxB5H,GAAa7W,EAAQ0e,YAAc/I,EAAQtP,MAAO,GAClDsP,EAAQnP,KAAMoR,GAETd,EAAe,CACnB,KAAUxC,EAAOqB,EAAS5d,MACpBuc,IAASqB,EAAS5d,KACtBmB,EAAIslB,EAAWxY,KAAMjO,IAGvB,KAAQmB,KACPyc,EAAQd,OAAQ2J,EAAYtlB,GAAK,EAEnC,CAMA,OAFA2d,EAAY,KAELlB,CACR,EAMAY,EAAUF,GAAOE,QAAU,SAAUjC,GACpC,IAAIhB,EACHa,EAAM,GACNpc,EAAI,EACJ+a,EAAWwB,EAAKxB,SAEjB,GAAMA,GAQC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAIjE,GAAiC,iBAArBwB,EAAKqK,YAChB,OAAOrK,EAAKqK,YAIZ,IAAMrK,EAAOA,EAAKsK,WAAYtK,EAAMA,EAAOA,EAAKuH,YAC/C1H,GAAOoC,EAASjC,EAGnB,MAAO,GAAkB,IAAbxB,GAA+B,IAAbA,EAC7B,OAAOwB,EAAK7c,eAnBZ,KAAU6b,EAAOgB,EAAMvc,MAGtBoc,GAAOoC,EAASjD,GAqBlB,OAAOa,CACR,EAEAmC,EAAOD,GAAOwI,UAAY,CAGzB1D,YAAa,GAEb2D,aAAczD,GAEd3jB,MAAOghB,EAEP+C,WAAY,CAAC,EAEb9pB,KAAM,CAAC,EAEPotB,SAAU,CACT,IAAK,CAAEhF,IAAK,aAAcxF,OAAO,GACjC,IAAK,CAAEwF,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmBxF,OAAO,GACtC,IAAK,CAAEwF,IAAK,oBAGbiF,UAAW,CACV,KAAQ,SAAUtnB,GAWjB,OAVAA,EAAO,GAAMA,EAAO,GAAIjD,QAASwkB,GAAWC,IAG5CxhB,EAAO,IAAQA,EAAO,IAAOA,EAAO,IACnCA,EAAO,IAAO,IAAKjD,QAASwkB,GAAWC,IAEpB,OAAfxhB,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAM2O,MAAO,EAAG,EACxB,EAEA,MAAS,SAAU3O,GAiClB,OArBAA,EAAO,GAAMA,EAAO,GAAIJ,cAEU,QAA7BI,EAAO,GAAI2O,MAAO,EAAG,IAGnB3O,EAAO,IACZ2e,GAAOlB,MAAOzd,EAAO,IAKtBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KACvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClB2e,GAAOlB,MAAOzd,EAAO,IAGfA,CACR,EAEA,OAAU,SAAUA,GACnB,IAAIunB,EACHC,GAAYxnB,EAAO,IAAOA,EAAO,GAElC,OAAKghB,EAAkB,MAAGrjB,KAAMqC,EAAO,IAC/B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9BwnB,GAAY1G,EAAQnjB,KAAM6pB,KAGnCD,EAASxI,EAAUyI,GAAU,MAG7BD,EAASC,EAASlN,QAAS,IAAKkN,EAAS3pB,OAAS0pB,GAAWC,EAAS3pB,UAGxEmC,EAAO,GAAMA,EAAO,GAAI2O,MAAO,EAAG4Y,GAClCvnB,EAAO,GAAMwnB,EAAS7Y,MAAO,EAAG4Y,IAI1BvnB,EAAM2O,MAAO,EAAG,GACxB,GAGDzO,OAAQ,CAEP,IAAO,SAAUunB,GAChB,IAAI9nB,EAAW8nB,EAAiB1qB,QAASwkB,GAAWC,IAAY5hB,cAChE,MAA4B,MAArB6nB,EACN,WACC,OAAO,CACR,EACA,SAAU7K,GACT,OAAOA,EAAKjd,UAAYid,EAAKjd,SAASC,gBAAkBD,CACzD,CACF,EAEA,MAAS,SAAUulB,GAClB,IAAIwC,EAAU7H,EAAYqF,EAAY,KAEtC,OAAOwC,IACJA,EAAU,IAAItnB,OAAQ,0BACjB8kB,EAAY,IAAM5E,EAAa,SAAaT,EACjDqF,GAAW,SAAUtI,GACpB,OAAO8K,EAAQ/pB,KACY,iBAAnBif,EAAKsI,WAA0BtI,EAAKsI,gBACd,IAAtBtI,EAAKb,cACXa,EAAKb,aAAc,UACpB,GAEJ,GACF,EAEA,KAAQ,SAAU9P,EAAM0b,EAAUC,GACjC,OAAO,SAAUhL,GAChB,IAAIiL,EAASlJ,GAAOjhB,KAAMkf,EAAM3Q,GAEhC,OAAe,MAAV4b,EACgB,OAAbF,GAEFA,IAINE,GAAU,GAIU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOvN,QAASsN,GAChC,OAAbD,EAAoBC,GAASC,EAAOvN,QAASsN,IAAW,EAC3C,OAAbD,EAAoBC,GAASC,EAAOlZ,OAAQiZ,EAAM/pB,UAAa+pB,EAClD,OAAbD,GAAsB,IAAME,EAAO9qB,QAAS0jB,EAAa,KAAQ,KAAMnG,QAASsN,IAAW,EAC9E,OAAbD,IAAoBE,IAAWD,GAASC,EAAOlZ,MAAO,EAAGiZ,EAAM/pB,OAAS,KAAQ+pB,EAAQ,KAI1F,CACD,EAEA,MAAS,SAAUxpB,EAAM0pB,EAAMC,EAAWlL,EAAOC,GAChD,IAAIkL,EAAgC,QAAvB5pB,EAAKuQ,MAAO,EAAG,GAC3BsZ,EAA+B,SAArB7pB,EAAKuQ,OAAQ,GACvBuZ,EAAkB,YAATJ,EAEV,OAAiB,IAAVjL,GAAwB,IAATC,EAGrB,SAAUF,GACT,QAASA,EAAKjb,UACf,EAEA,SAAUib,EAAMuL,EAAUC,GACzB,IAAI5E,EAAO6E,EAAaC,EAAY1M,EAAM2M,EAAWC,EACpDnG,EAAM2F,IAAWC,EAAU,cAAgB,kBAC3CnqB,EAAS8e,EAAKjb,WACdsK,EAAOic,GAAUtL,EAAKjd,SAASC,cAC/B6oB,GAAYL,IAAQF,EACpB5Q,GAAO,EAER,GAAKxZ,EAAS,CAGb,GAAKkqB,EAAS,CACb,KAAQ3F,GAAM,CAEb,IADAzG,EAAOgB,EACGhB,EAAOA,EAAMyG,IACtB,GAAK6F,EACJtM,EAAKjc,SAASC,gBAAkBqM,EACd,IAAlB2P,EAAKR,SAEL,OAAO,EAKToN,EAAQnG,EAAe,SAATjkB,IAAoBoqB,GAAS,aAC5C,CACA,OAAO,CACR,CAKA,GAHAA,EAAQ,CAAEP,EAAUnqB,EAAOopB,WAAappB,EAAO4qB,WAG1CT,GAAWQ,GAkBf,IAHAnR,GADAiR,GADA/E,GAHA6E,GAJAC,GADA1M,EAAO9d,GACYyf,KAAe3B,EAAM2B,GAAY,CAAC,IAI3B3B,EAAK+M,YAC5BL,EAAY1M,EAAK+M,UAAa,CAAC,IAEbvqB,IAAU,IACZ,KAAQuhB,GAAW6D,EAAO,KACzBA,EAAO,GAC3B5H,EAAO2M,GAAazqB,EAAOykB,WAAYgG,GAE7B3M,IAAS2M,GAAa3M,GAAQA,EAAMyG,KAG3C/K,EAAOiR,EAAY,IAAOC,EAAMxZ,OAGlC,GAAuB,IAAlB4M,EAAKR,YAAoB9D,GAAQsE,IAASgB,EAAO,CACrDyL,EAAajqB,GAAS,CAAEuhB,EAAS4I,EAAWjR,GAC5C,KACD,OAwBD,GAlBKmR,IAaJnR,EADAiR,GADA/E,GAHA6E,GAJAC,GADA1M,EAAOgB,GACYW,KAAe3B,EAAM2B,GAAY,CAAC,IAI3B3B,EAAK+M,YAC5BL,EAAY1M,EAAK+M,UAAa,CAAC,IAEbvqB,IAAU,IACZ,KAAQuhB,GAAW6D,EAAO,KAMhC,IAATlM,EAGJ,MAAUsE,IAAS2M,GAAa3M,GAAQA,EAAMyG,KAC3C/K,EAAOiR,EAAY,IAAOC,EAAMxZ,UAE3BkZ,EACNtM,EAAKjc,SAASC,gBAAkBqM,EACd,IAAlB2P,EAAKR,cACH9D,IAGGmR,KAMJJ,GALAC,EAAa1M,EAAM2B,KAChB3B,EAAM2B,GAAY,CAAC,IAII3B,EAAK+M,YAC5BL,EAAY1M,EAAK+M,UAAa,CAAC,IAErBvqB,GAAS,CAAEuhB,EAASrI,IAG7BsE,IAASgB,MAUlB,OADAtF,GAAQwF,KACQD,GAAWvF,EAAOuF,GAAU,GAAKvF,EAAOuF,GAAS,CAClE,CACD,CACF,EAEA,OAAU,SAAU+L,EAAQnE,GAM3B,IAAI/R,EACHzV,EAAK2hB,EAAK4B,QAASoI,IAAYhK,EAAKiK,WAAYD,EAAOhpB,gBACtD+e,GAAOlB,MAAO,uBAAyBmL,GAKzC,OAAK3rB,EAAIsgB,GACDtgB,EAAIwnB,GAIPxnB,EAAGY,OAAS,GAChB6U,EAAO,CAAEkW,EAAQA,EAAQ,GAAInE,GACtB7F,EAAKiK,WAAWhjB,eAAgB+iB,EAAOhpB,eAC7C+jB,IAAc,SAAUlB,EAAMrE,GAI7B,IAHA,IAAI0K,EACHC,EAAU9rB,EAAIwlB,EAAMgC,GACpBpkB,EAAI0oB,EAAQlrB,OACLwC,KAEPoiB,EADAqG,EAAMxO,EAASmI,EAAMsG,EAAS1oB,OACb+d,EAAS0K,GAAQC,EAAS1oB,GAE7C,IACA,SAAUuc,GACT,OAAO3f,EAAI2f,EAAM,EAAGlK,EACrB,GAGKzV,CACR,GAGDujB,QAAS,CAGR,IAAOmD,IAAc,SAAUlmB,GAK9B,IAAIioB,EAAQ,GACXzH,EAAU,GACV+K,EAAUhK,EAASvhB,EAASV,QAAS2jB,EAAO,OAE7C,OAAOsI,EAASzL,GACfoG,IAAc,SAAUlB,EAAMrE,EAAS+J,EAAUC,GAMhD,IALA,IAAIxL,EACHqM,EAAYD,EAASvG,EAAM,KAAM2F,EAAK,IACtC/nB,EAAIoiB,EAAK5kB,OAGFwC,MACAuc,EAAOqM,EAAW5oB,MACxBoiB,EAAMpiB,KAAS+d,EAAS/d,GAAMuc,GAGjC,IACA,SAAUA,EAAMuL,EAAUC,GAMzB,OALA1C,EAAO,GAAM9I,EACboM,EAAStD,EAAO,KAAM0C,EAAKnK,GAG3ByH,EAAO,GAAM,MACLzH,EAAQjP,KACjB,CACF,IAEA,IAAO2U,IAAc,SAAUlmB,GAC9B,OAAO,SAAUmf,GAChB,OAAO+B,GAAQlhB,EAAUmf,GAAO/e,OAAS,CAC1C,CACD,IAEA,SAAY8lB,IAAc,SAAUha,GAEnC,OADAA,EAAOA,EAAK5M,QAASwkB,GAAWC,IACzB,SAAU5E,GAChB,OAASA,EAAKqK,aAAepI,EAASjC,IAAStC,QAAS3Q,IAAU,CACnE,CACD,IASA,KAAQga,IAAc,SAAUuF,GAO/B,OAJMnI,EAAYpjB,KAAMurB,GAAQ,KAC/BvK,GAAOlB,MAAO,qBAAuByL,GAEtCA,EAAOA,EAAKnsB,QAASwkB,GAAWC,IAAY5hB,cACrC,SAAUgd,GAChB,IAAIuM,EACJ,GACC,GAAOA,EAAW5J,EACjB3C,EAAKsM,KACLtM,EAAKb,aAAc,aAAgBa,EAAKb,aAAc,QAGtD,OADAoN,EAAWA,EAASvpB,iBACAspB,GAA2C,IAAnCC,EAAS7O,QAAS4O,EAAO,YAE3CtM,EAAOA,EAAKjb,aAAkC,IAAlBib,EAAKxB,UAC7C,OAAO,CACR,CACD,IAGA,OAAU,SAAUwB,GACnB,IAAIwM,EAAOjuB,EAAOkuB,UAAYluB,EAAOkuB,SAASD,KAC9C,OAAOA,GAAQA,EAAKza,MAAO,KAAQiO,EAAKmG,EACzC,EAEA,KAAQ,SAAUnG,GACjB,OAAOA,IAAS0C,CACjB,EAEA,MAAS,SAAU1C,GAClB,OAAOA,IAAS5iB,EAASsvB,iBACrBtvB,EAASuvB,UAAYvvB,EAASuvB,gBAC7B3M,EAAKxe,MAAQwe,EAAK4M,OAAS5M,EAAK6M,SACtC,EAGA,QAAWnF,IAAsB,GACjC,SAAYA,IAAsB,GAElC,QAAW,SAAU1H,GAIpB,IAAIjd,EAAWid,EAAKjd,SAASC,cAC7B,MAAsB,UAAbD,KAA0Bid,EAAK8M,SACxB,WAAb/pB,KAA2Bid,EAAK+M,QACpC,EAEA,SAAY,SAAU/M,GASrB,OALKA,EAAKjb,YAETib,EAAKjb,WAAWioB,eAGQ,IAAlBhN,EAAK+M,QACb,EAGA,MAAS,SAAU/M,GAMlB,IAAMA,EAAOA,EAAKsK,WAAYtK,EAAMA,EAAOA,EAAKuH,YAC/C,GAAKvH,EAAKxB,SAAW,EACpB,OAAO,EAGT,OAAO,CACR,EAEA,OAAU,SAAUwB,GACnB,OAAQgC,EAAK4B,QAAgB,MAAI5D,EAClC,EAGA,OAAU,SAAUA,GACnB,OAAOuE,EAAQxjB,KAAMif,EAAKjd,SAC3B,EAEA,MAAS,SAAUid,GAClB,OAAOsE,EAAQvjB,KAAMif,EAAKjd,SAC3B,EAEA,OAAU,SAAUid,GACnB,IAAI3Q,EAAO2Q,EAAKjd,SAASC,cACzB,MAAgB,UAATqM,GAAkC,WAAd2Q,EAAKxe,MAA8B,WAAT6N,CACtD,EAEA,KAAQ,SAAU2Q,GACjB,IAAIlf,EACJ,MAAuC,UAAhCkf,EAAKjd,SAASC,eACN,SAAdgd,EAAKxe,OAIuC,OAAxCV,EAAOkf,EAAKb,aAAc,UACN,SAAvBre,EAAKkC,cACR,EAGA,MAAS4kB,IAAwB,WAChC,MAAO,CAAE,EACV,IAEA,KAAQA,IAAwB,SAAUqF,EAAehsB,GACxD,MAAO,CAAEA,EAAS,EACnB,IAEA,GAAM2mB,IAAwB,SAAUqF,EAAehsB,EAAQ4mB,GAC9D,MAAO,CAAEA,EAAW,EAAIA,EAAW5mB,EAAS4mB,EAC7C,IAEA,KAAQD,IAAwB,SAAUE,EAAc7mB,GAEvD,IADA,IAAIwC,EAAI,EACAA,EAAIxC,EAAQwC,GAAK,EACxBqkB,EAAapW,KAAMjO,GAEpB,OAAOqkB,CACR,IAEA,IAAOF,IAAwB,SAAUE,EAAc7mB,GAEtD,IADA,IAAIwC,EAAI,EACAA,EAAIxC,EAAQwC,GAAK,EACxBqkB,EAAapW,KAAMjO,GAEpB,OAAOqkB,CACR,IAEA,GAAMF,IAAwB,SAAUE,EAAc7mB,EAAQ4mB,GAM7D,IALA,IAAIpkB,EAAIokB,EAAW,EAClBA,EAAW5mB,EACX4mB,EAAW5mB,EACVA,EACA4mB,IACQpkB,GAAK,GACdqkB,EAAapW,KAAMjO,GAEpB,OAAOqkB,CACR,IAEA,GAAMF,IAAwB,SAAUE,EAAc7mB,EAAQ4mB,GAE7D,IADA,IAAIpkB,EAAIokB,EAAW,EAAIA,EAAW5mB,EAAS4mB,IACjCpkB,EAAIxC,GACb6mB,EAAapW,KAAMjO,GAEpB,OAAOqkB,CACR,MAIF9F,EAAK4B,QAAc,IAAK5B,EAAK4B,QAAa,GAG/B,CAAEsJ,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5EtL,EAAK4B,QAASngB,GAAM+jB,GAAmB/jB,GAExC,IAAMA,IAAK,CAAE8pB,QAAQ,EAAMC,OAAO,GACjCxL,EAAK4B,QAASngB,GAAMgkB,GAAoBhkB,GAIzC,SAASwoB,KAAc,CA0EvB,SAASxF,GAAYgH,GAIpB,IAHA,IAAIhqB,EAAI,EACPc,EAAMkpB,EAAOxsB,OACbJ,EAAW,GACJ4C,EAAIc,EAAKd,IAChB5C,GAAY4sB,EAAQhqB,GAAIF,MAEzB,OAAO1C,CACR,CAEA,SAAS0kB,GAAe6G,EAASsB,EAAYC,GAC5C,IAAIlI,EAAMiI,EAAWjI,IACpBmI,EAAOF,EAAWhI,KAClBpc,EAAMskB,GAAQnI,EACdoI,EAAmBF,GAAgB,eAARrkB,EAC3BwkB,EAAW9K,IAEZ,OAAO0K,EAAWzN,MAGjB,SAAUD,EAAM3P,EAASmb,GACxB,KAAUxL,EAAOA,EAAMyF,IACtB,GAAuB,IAAlBzF,EAAKxB,UAAkBqP,EAC3B,OAAOzB,EAASpM,EAAM3P,EAASmb,GAGjC,OAAO,CACR,EAGA,SAAUxL,EAAM3P,EAASmb,GACxB,IAAIuC,EAAUtC,EAAaC,EAC1BsC,EAAW,CAAEjL,EAAS+K,GAGvB,GAAKtC,GACJ,KAAUxL,EAAOA,EAAMyF,IACtB,IAAuB,IAAlBzF,EAAKxB,UAAkBqP,IACtBzB,EAASpM,EAAM3P,EAASmb,GAC5B,OAAO,OAKV,KAAUxL,EAAOA,EAAMyF,IACtB,GAAuB,IAAlBzF,EAAKxB,UAAkBqP,EAQ3B,GAHApC,GAJAC,EAAa1L,EAAMW,KAAeX,EAAMW,GAAY,CAAC,IAI3BX,EAAK+L,YAC5BL,EAAY1L,EAAK+L,UAAa,CAAC,GAE7B6B,GAAQA,IAAS5N,EAAKjd,SAASC,cACnCgd,EAAOA,EAAMyF,IAASzF,MAChB,KAAO+N,EAAWtC,EAAaniB,KACrCykB,EAAU,KAAQhL,GAAWgL,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHAtC,EAAaniB,GAAQ0kB,EAGdA,EAAU,GAAM5B,EAASpM,EAAM3P,EAASmb,GAC9C,OAAO,CAET,CAIH,OAAO,CACR,CACF,CAEA,SAASyC,GAAgBC,GACxB,OAAOA,EAASjtB,OAAS,EACxB,SAAU+e,EAAM3P,EAASmb,GAExB,IADA,IAAI/nB,EAAIyqB,EAASjtB,OACTwC,KACP,IAAMyqB,EAAUzqB,GAAKuc,EAAM3P,EAASmb,GACnC,OAAO,EAGT,OAAO,CACR,EACA0C,EAAU,EACZ,CAWA,SAASC,GAAU9B,EAAWjoB,EAAKd,EAAQ+M,EAASmb,GAOnD,IANA,IAAIxL,EACHoO,EAAe,GACf3qB,EAAI,EACJc,EAAM8nB,EAAUprB,OAChBotB,EAAgB,MAAPjqB,EAEFX,EAAIc,EAAKd,KACTuc,EAAOqM,EAAW5oB,MAClBH,IAAUA,EAAQ0c,EAAM3P,EAASmb,KACtC4C,EAAa1c,KAAMsO,GACdqO,GACJjqB,EAAIsN,KAAMjO,KAMd,OAAO2qB,CACR,CAEA,SAASE,GAAY5D,EAAW7pB,EAAUurB,EAASmC,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAY5N,KAC/B4N,EAAaD,GAAYC,IAErBC,IAAeA,EAAY7N,KAC/B6N,EAAaF,GAAYE,EAAYC,IAE/B1H,IAAc,SAAUlB,EAAMxE,EAAShR,EAASmb,GACtD,IAAIkD,EAAMjrB,EAAGuc,EACZ2O,EAAS,GACTC,EAAU,GACVC,EAAcxN,EAAQpgB,OAGtB2e,EAAQiG,GA5CX,SAA2BhlB,EAAUiuB,EAAUzN,GAG9C,IAFA,IAAI5d,EAAI,EACPc,EAAMuqB,EAAS7tB,OACRwC,EAAIc,EAAKd,IAChBse,GAAQlhB,EAAUiuB,EAAUrrB,GAAK4d,GAElC,OAAOA,CACR,CAqCmB0N,CACfluB,GAAY,IACZwP,EAAQmO,SAAW,CAAEnO,GAAYA,EACjC,IAID2e,GAAYtE,IAAe7E,GAAShlB,EAEnC+e,EADAuO,GAAUvO,EAAO+O,EAAQjE,EAAWra,EAASmb,GAG9CyD,EAAa7C,EAGZoC,IAAgB3I,EAAO6E,EAAYmE,GAAeN,GAGjD,GAGAlN,EACD2N,EAQF,GALK5C,GACJA,EAAS4C,EAAWC,EAAY5e,EAASmb,GAIrC+C,EAMJ,IALAG,EAAOP,GAAUc,EAAYL,GAC7BL,EAAYG,EAAM,GAAIre,EAASmb,GAG/B/nB,EAAIirB,EAAKztB,OACDwC,MACAuc,EAAO0O,EAAMjrB,MACnBwrB,EAAYL,EAASnrB,MAAWurB,EAAWJ,EAASnrB,IAAQuc,IAK/D,GAAK6F,GACJ,GAAK2I,GAAc9D,EAAY,CAC9B,GAAK8D,EAAa,CAKjB,IAFAE,EAAO,GACPjrB,EAAIwrB,EAAWhuB,OACPwC,MACAuc,EAAOiP,EAAYxrB,KAGzBirB,EAAKhd,KAAQsd,EAAWvrB,GAAMuc,GAGhCwO,EAAY,KAAQS,EAAa,GAAMP,EAAMlD,EAC9C,CAIA,IADA/nB,EAAIwrB,EAAWhuB,OACPwC,MACAuc,EAAOiP,EAAYxrB,MACvBirB,EAAOF,EAAa9Q,EAASmI,EAAM7F,GAAS2O,EAAQlrB,KAAS,IAE/DoiB,EAAM6I,KAAYrN,EAASqN,GAAS1O,GAGvC,OAIAiP,EAAad,GACZc,IAAe5N,EACd4N,EAAW1O,OAAQsO,EAAaI,EAAWhuB,QAC3CguB,GAEGT,EACJA,EAAY,KAAMnN,EAAS4N,EAAYzD,GAEvC9Z,EAAKzB,MAAOoR,EAAS4N,EAGxB,GACD,CAEA,SAASC,GAAmBzB,GAyB3B,IAxBA,IAAI0B,EAAc/C,EAASxnB,EAC1BL,EAAMkpB,EAAOxsB,OACbmuB,EAAkBpN,EAAKyI,SAAUgD,EAAQ,GAAIjsB,MAC7C6tB,EAAmBD,GAAmBpN,EAAKyI,SAAU,KACrDhnB,EAAI2rB,EAAkB,EAAI,EAG1BE,EAAe/J,IAAe,SAAUvF,GACvC,OAAOA,IAASmP,CACjB,GAAGE,GAAkB,GACrBE,EAAkBhK,IAAe,SAAUvF,GAC1C,OAAOtC,EAASyR,EAAcnP,IAAU,CACzC,GAAGqP,GAAkB,GACrBnB,EAAW,CAAE,SAAUlO,EAAM3P,EAASmb,GACrC,IAAI3L,GAASuP,IAAqB5D,GAAOnb,IAAYiS,MAClD6M,EAAe9e,GAAUmO,SAC1B8Q,EAActP,EAAM3P,EAASmb,GAC7B+D,EAAiBvP,EAAM3P,EAASmb,IAIlC,OADA2D,EAAe,KACRtP,CACR,GAEOpc,EAAIc,EAAKd,IAChB,GAAO2oB,EAAUpK,EAAKyI,SAAUgD,EAAQhqB,GAAIjC,MAC3C0sB,EAAW,CAAE3I,GAAe0I,GAAgBC,GAAY9B,QAClD,CAIN,IAHAA,EAAUpK,EAAK1e,OAAQmqB,EAAQhqB,GAAIjC,MAAOyO,MAAO,KAAMwd,EAAQhqB,GAAI+d,UAGrDb,GAAY,CAIzB,IADA/b,IAAMnB,EACEmB,EAAIL,IACNyd,EAAKyI,SAAUgD,EAAQ7oB,GAAIpD,MADhBoD,KAKjB,OAAO0pB,GACN7qB,EAAI,GAAKwqB,GAAgBC,GACzBzqB,EAAI,GAAKgjB,GAGTgH,EACE1b,MAAO,EAAGtO,EAAI,GACd9G,OAAQ,CAAE4G,MAAgC,MAAzBkqB,EAAQhqB,EAAI,GAAIjC,KAAe,IAAM,MACtDrB,QAAS2jB,EAAO,MAClBsI,EACA3oB,EAAImB,GAAKsqB,GAAmBzB,EAAO1b,MAAOtO,EAAGmB,IAC7CA,EAAIL,GAAO2qB,GAAqBzB,EAASA,EAAO1b,MAAOnN,IACvDA,EAAIL,GAAOkiB,GAAYgH,GAEzB,CACAS,EAASxc,KAAM0a,EAChB,CAGD,OAAO6B,GAAgBC,EACxB,CAmTA,OAtpBAjC,GAAW9vB,UAAY6lB,EAAKwN,QAAUxN,EAAK4B,QAC3C5B,EAAKiK,WAAa,IAAIA,GAEtB9J,EAAWJ,GAAOI,SAAW,SAAUthB,EAAU4uB,GAChD,IAAItD,EAAS/oB,EAAOqqB,EAAQjsB,EAC3BkuB,EAAO3J,EAAQ4J,EACfC,EAASzM,EAAYtiB,EAAW,KAEjC,GAAK+uB,EACJ,OAAOH,EAAY,EAAIG,EAAO7d,MAAO,GAOtC,IAJA2d,EAAQ7uB,EACRklB,EAAS,GACT4J,EAAa3N,EAAK0I,UAEVgF,GAAQ,CA2Bf,IAAMluB,KAxBA2qB,KAAa/oB,EAAQ2gB,EAAOmC,KAAMwJ,MAClCtsB,IAGJssB,EAAQA,EAAM3d,MAAO3O,EAAO,GAAInC,SAAYyuB,GAE7C3J,EAAOrU,KAAQ+b,EAAS,KAGzBtB,GAAU,GAGH/oB,EAAQ4gB,EAAakC,KAAMwJ,MACjCvD,EAAU/oB,EAAM0jB,QAChB2G,EAAO/b,KAAM,CACZnO,MAAO4oB,EAGP3qB,KAAM4B,EAAO,GAAIjD,QAAS2jB,EAAO,OAElC4L,EAAQA,EAAM3d,MAAOoa,EAAQlrB,SAIhB+gB,EAAK1e,SACXF,EAAQghB,EAAW5iB,GAAO0kB,KAAMwJ,KAAgBC,EAAYnuB,MAChE4B,EAAQusB,EAAYnuB,GAAQ4B,MAC9B+oB,EAAU/oB,EAAM0jB,QAChB2G,EAAO/b,KAAM,CACZnO,MAAO4oB,EACP3qB,KAAMA,EACNggB,QAASpe,IAEVssB,EAAQA,EAAM3d,MAAOoa,EAAQlrB,SAI/B,IAAMkrB,EACL,KAEF,CAKA,OAAOsD,EACNC,EAAMzuB,OACNyuB,EACC3N,GAAOlB,MAAOhgB,GAGdsiB,EAAYtiB,EAAUklB,GAAShU,MAAO,EACzC,EA2ZAqQ,EAAUL,GAAOK,QAAU,SAAUvhB,EAAUuC,GAC9C,IAAIK,EACHosB,EAAc,GACdC,EAAkB,GAClBF,EAASxM,EAAeviB,EAAW,KAEpC,IAAM+uB,EAAS,CAOd,IAJMxsB,IACLA,EAAQ+e,EAAUthB,IAEnB4C,EAAIL,EAAMnC,OACFwC,MACPmsB,EAASV,GAAmB9rB,EAAOK,KACtBkd,GACZkP,EAAYne,KAAMke,GAElBE,EAAgBpe,KAAMke,GAKxBA,EAASxM,EACRviB,EArJH,SAAmCivB,EAAiBD,GACnD,IAAIE,EAAQF,EAAY5uB,OAAS,EAChC+uB,EAAYF,EAAgB7uB,OAAS,EACrCgvB,EAAe,SAAUpK,EAAMxV,EAASmb,EAAKnK,EAAS6O,GACrD,IAAIlQ,EAAMpb,EAAGwnB,EACZ+D,EAAe,EACf1sB,EAAI,IACJ4oB,EAAYxG,GAAQ,GACpBuK,EAAa,GACbC,EAAgB/N,EAGhB1C,EAAQiG,GAAQmK,GAAahO,EAAK3kB,KAAW,IAAI,IAAK6yB,GAGtDI,EAAkBvN,GAA4B,MAAjBsN,EAAwB,EAAI5wB,KAAK0O,UAAY,GAC1E5J,EAAMqb,EAAM3e,OAcb,IAZKivB,IAMJ5N,EAAmBjS,GAAWjT,GAAYiT,GAAW6f,GAM9CzsB,IAAMc,GAAgC,OAAvByb,EAAOJ,EAAOnc,IAAeA,IAAM,CACzD,GAAKusB,GAAahQ,EAAO,CAWxB,IAVApb,EAAI,EAMEyL,GAAW2P,EAAKjW,eAAiB3M,IACtCqlB,EAAazC,GACbwL,GAAO7I,GAEEyJ,EAAU0D,EAAiBlrB,MACpC,GAAKwnB,EAASpM,EAAM3P,GAAWjT,EAAUouB,GAAQ,CAChDnK,EAAQ3P,KAAMsO,GACd,KACD,CAEIkQ,IACJnN,EAAUuN,EAEZ,CAGKP,KAGG/P,GAAQoM,GAAWpM,IACzBmQ,IAIItK,GACJwG,EAAU3a,KAAMsO,GAGnB,CAaA,GATAmQ,GAAgB1sB,EASXssB,GAAStsB,IAAM0sB,EAAe,CAElC,IADAvrB,EAAI,EACMwnB,EAAUyD,EAAajrB,MAChCwnB,EAASC,EAAW+D,EAAY/f,EAASmb,GAG1C,GAAK3F,EAAO,CAGX,GAAKsK,EAAe,EACnB,KAAQ1sB,KACC4oB,EAAW5oB,IAAO2sB,EAAY3sB,KACrC2sB,EAAY3sB,GAAM2O,EAAI7V,KAAM8kB,IAM/B+O,EAAajC,GAAUiC,EACxB,CAGA1e,EAAKzB,MAAOoR,EAAS+O,GAGhBF,IAAcrK,GAAQuK,EAAWnvB,OAAS,GAC5CkvB,EAAeN,EAAY5uB,OAAW,GAExC8gB,GAAOkI,WAAY5I,EAErB,CAQA,OALK6O,IACJnN,EAAUuN,EACVhO,EAAmB+N,GAGbhE,CACR,EAED,OAAO0D,EACNhJ,GAAckJ,GACdA,CACF,CA2BGM,CAA0BT,EAAiBD,IAI5CD,EAAO/uB,SAAWA,CACnB,CACA,OAAO+uB,CACR,EAWAvN,EAASN,GAAOM,OAAS,SAAUxhB,EAAUwP,EAASgR,EAASwE,GAC9D,IAAIpiB,EAAGgqB,EAAQ+C,EAAOhvB,EAAMnE,EAC3BozB,EAA+B,mBAAb5vB,GAA2BA,EAC7CuC,GAASyiB,GAAQ1D,EAAYthB,EAAW4vB,EAAS5vB,UAAYA,GAM9D,GAJAwgB,EAAUA,GAAW,GAIC,IAAjBje,EAAMnC,OAAe,CAIzB,IADAwsB,EAASrqB,EAAO,GAAMA,EAAO,GAAI2O,MAAO,IAC5B9Q,OAAS,GAAsC,QAA/BuvB,EAAQ/C,EAAQ,IAAMjsB,MAC5B,IAArB6O,EAAQmO,UAAkBmE,GAAkBX,EAAKyI,SAAUgD,EAAQ,GAAIjsB,MAAS,CAIhF,KAFA6O,GAAY2R,EAAK3kB,KAAU,GAAImzB,EAAMhP,QAAS,GAC5CrhB,QAASwkB,GAAWC,IAAavU,IAAa,IAAM,IAErD,OAAOgR,EAGIoP,IACXpgB,EAAUA,EAAQtL,YAGnBlE,EAAWA,EAASkR,MAAO0b,EAAO3G,QAAQvjB,MAAMtC,OACjD,CAIA,IADAwC,EAAI2gB,EAAyB,aAAGrjB,KAAMF,GAAa,EAAI4sB,EAAOxsB,OACtDwC,MACP+sB,EAAQ/C,EAAQhqB,IAGXue,EAAKyI,SAAYjpB,EAAOgvB,EAAMhvB,QAGnC,IAAOnE,EAAO2kB,EAAK3kB,KAAMmE,MAGjBqkB,EAAOxoB,EACbmzB,EAAMhP,QAAS,GAAIrhB,QAASwkB,GAAWC,IACvCF,GAAS3jB,KAAM0sB,EAAQ,GAAIjsB,OAAU+kB,GAAalW,EAAQtL,aACzDsL,IACI,CAKL,GAFAod,EAAOlN,OAAQ9c,EAAG,KAClB5C,EAAWglB,EAAK5kB,QAAUwlB,GAAYgH,IAGrC,OADA/b,EAAKzB,MAAOoR,EAASwE,GACdxE,EAGR,KACD,CAGH,CAWA,OAPEoP,GAAYrO,EAASvhB,EAAUuC,IAChCyiB,EACAxV,GACCsS,EACDtB,GACChR,GAAWqU,GAAS3jB,KAAMF,IAAc0lB,GAAalW,EAAQtL,aAAgBsL,GAExEgR,CACR,EAKA3V,EAAQ0e,WAAazJ,EAAQpY,MAAO,IAAK2J,KAAMoR,GAAY1O,KAAM,MAAS+L,EAI1EjV,EAAQye,mBAAqB3H,EAG7BC,IAIA/W,EAAQ+d,aAAezC,IAAQ,SAAU3iB,GAGxC,OAA4E,EAArEA,EAAGglB,wBAAyBjsB,EAAS0E,cAAe,YAC5D,IAKMklB,IAAQ,SAAU3iB,GAEvB,OADAA,EAAGH,UAAY,mBACiC,MAAzCG,EAAGimB,WAAWnL,aAAc,OACpC,KACC8H,GAAW,0BAA0B,SAAUjH,EAAM3Q,EAAM6S,GAC1D,IAAMA,EACL,OAAOlC,EAAKb,aAAc9P,EAA6B,SAAvBA,EAAKrM,cAA2B,EAAI,EAEtE,IAKK0I,EAAQhH,YAAesiB,IAAQ,SAAU3iB,GAG9C,OAFAA,EAAGH,UAAY,WACfG,EAAGimB,WAAWlL,aAAc,QAAS,IACY,KAA1C/a,EAAGimB,WAAWnL,aAAc,QACpC,KACC8H,GAAW,SAAS,SAAUjH,EAAM0Q,EAAOxO,GAC1C,IAAMA,GAAyC,UAAhClC,EAAKjd,SAASC,cAC5B,OAAOgd,EAAK2Q,YAEd,IAKK3J,IAAQ,SAAU3iB,GACvB,OAAwC,MAAjCA,EAAG8a,aAAc,WACzB,KACC8H,GAAWxD,GAAU,SAAUzD,EAAM3Q,EAAM6S,GAC1C,IAAIxlB,EACJ,IAAMwlB,EACL,OAAwB,IAAjBlC,EAAM3Q,GAAkBA,EAAKrM,eACjCtG,EAAMsjB,EAAK2I,iBAAkBtZ,KAAY3S,EAAIqtB,UAC9CrtB,EAAI6G,MACJ,IAEJ,IAGMwe,EAEP,CA54EE,CA44EGxjB,GAILkC,EAAOpD,KAAO0kB,GACdthB,EAAOqpB,KAAO/H,EAAOwI,WAGR,KAAQ9pB,EAAOqpB,KAAKlG,QACjCnjB,EAAOwpB,WAAaxpB,EAAOmwB,OAAS7O,EAAOkI,WAC3CxpB,EAAOsM,KAAOgV,EAAOE,QACrBxhB,EAAOowB,SAAW9O,EAAOG,MACzBzhB,EAAOiB,SAAWqgB,EAAOrgB,SACzBjB,EAAOqwB,eAAiB/O,EAAO8C,OAK/B,IAAIY,EAAM,SAAUzF,EAAMyF,EAAKsL,GAI9B,IAHA,IAAI5E,EAAU,GACb6E,OAAqB1hB,IAAVyhB,GAEF/Q,EAAOA,EAAMyF,KAA6B,IAAlBzF,EAAKxB,UACtC,GAAuB,IAAlBwB,EAAKxB,SAAiB,CAC1B,GAAKwS,GAAYvwB,EAAQuf,GAAOzgB,GAAIwxB,GACnC,MAED5E,EAAQza,KAAMsO,EACf,CAED,OAAOmM,CACR,EAGI8E,EAAW,SAAUxf,EAAGuO,GAG3B,IAFA,IAAImM,EAAU,GAEN1a,EAAGA,EAAIA,EAAE8V,YACI,IAAf9V,EAAE+M,UAAkB/M,IAAMuO,GAC9BmM,EAAQza,KAAMD,GAIhB,OAAO0a,CACR,EAGI+E,EAAgBzwB,EAAOqpB,KAAK1mB,MAAM+tB,aAItC,SAASpuB,EAAUid,EAAM3Q,GAExB,OAAO2Q,EAAKjd,UAAYid,EAAKjd,SAASC,gBAAkBqM,EAAKrM,aAE9D,CACA,IAAIouB,EAAe,kEAKnB,SAASC,EAAQ/sB,EAAUgtB,EAAWC,GACrC,OAAKvpB,EAAYspB,GACT7wB,EAAO2f,KAAM9b,GAAU,SAAU0b,EAAMvc,GAC7C,QAAS6tB,EAAU/0B,KAAMyjB,EAAMvc,EAAGuc,KAAWuR,CAC9C,IAIID,EAAU9S,SACP/d,EAAO2f,KAAM9b,GAAU,SAAU0b,GACvC,OAASA,IAASsR,IAAgBC,CACnC,IAIyB,iBAAdD,EACJ7wB,EAAO2f,KAAM9b,GAAU,SAAU0b,GACvC,OAAStC,EAAQnhB,KAAM+0B,EAAWtR,IAAU,IAAQuR,CACrD,IAIM9wB,EAAO6C,OAAQguB,EAAWhtB,EAAUitB,EAC5C,CAEA9wB,EAAO6C,OAAS,SAAUwmB,EAAMlK,EAAO2R,GACtC,IAAIvR,EAAOJ,EAAO,GAMlB,OAJK2R,IACJzH,EAAO,QAAUA,EAAO,KAGH,IAAjBlK,EAAM3e,QAAkC,IAAlB+e,EAAKxB,SACxB/d,EAAOpD,KAAK0rB,gBAAiB/I,EAAM8J,GAAS,CAAE9J,GAAS,GAGxDvf,EAAOpD,KAAKmkB,QAASsI,EAAMrpB,EAAO2f,KAAMR,GAAO,SAAUI,GAC/D,OAAyB,IAAlBA,EAAKxB,QACb,IACD,EAEA/d,EAAOJ,GAAGpD,OAAQ,CACjBI,KAAM,SAAUwD,GACf,IAAI4C,EAAGoc,EACNtb,EAAM/H,KAAKyE,OACXuI,EAAOhN,KAER,GAAyB,iBAAbqE,EACX,OAAOrE,KAAKmjB,UAAWlf,EAAQI,GAAWyC,QAAQ,WACjD,IAAMG,EAAI,EAAGA,EAAIc,EAAKd,IACrB,GAAKhD,EAAOiB,SAAU8H,EAAM/F,GAAKjH,MAChC,OAAO,CAGV,KAKD,IAFAqjB,EAAMrjB,KAAKmjB,UAAW,IAEhBlc,EAAI,EAAGA,EAAIc,EAAKd,IACrBhD,EAAOpD,KAAMwD,EAAU2I,EAAM/F,GAAKoc,GAGnC,OAAOtb,EAAM,EAAI9D,EAAOwpB,WAAYpK,GAAQA,CAC7C,EACAvc,OAAQ,SAAUzC,GACjB,OAAOrE,KAAKmjB,UAAW0R,EAAQ70B,KAAMqE,GAAY,IAAI,GACtD,EACA0wB,IAAK,SAAU1wB,GACd,OAAOrE,KAAKmjB,UAAW0R,EAAQ70B,KAAMqE,GAAY,IAAI,GACtD,EACAtB,GAAI,SAAUsB,GACb,QAASwwB,EACR70B,KAIoB,iBAAbqE,GAAyBqwB,EAAcnwB,KAAMF,GACnDJ,EAAQI,GACRA,GAAY,IACb,GACCI,MACH,IAQD,IAAIuwB,EAMH/M,EAAa,uCAENhkB,EAAOJ,GAAGiF,KAAO,SAAUzE,EAAUwP,EAASohB,GACpD,IAAIruB,EAAO4c,EAGX,IAAMnf,EACL,OAAOrE,KAQR,GAHAi1B,EAAOA,GAAQD,EAGU,iBAAb3wB,EAAwB,CAanC,KAPCuC,EALsB,MAAlBvC,EAAU,IACsB,MAApCA,EAAUA,EAASI,OAAS,IAC5BJ,EAASI,QAAU,EAGX,CAAE,KAAMJ,EAAU,MAGlB4jB,EAAWyB,KAAMrlB,MAIVuC,EAAO,IAAQiN,EA6CxB,OAAMA,GAAWA,EAAQmP,QACtBnP,GAAWohB,GAAOp0B,KAAMwD,GAK1BrE,KAAK4L,YAAaiI,GAAUhT,KAAMwD,GAhDzC,GAAKuC,EAAO,GAAM,CAYjB,GAXAiN,EAAUA,aAAmB5P,EAAS4P,EAAS,GAAMA,EAIrD5P,EAAOqf,MAAOtjB,KAAMiE,EAAOixB,UAC1BtuB,EAAO,GACPiN,GAAWA,EAAQmO,SAAWnO,EAAQtG,eAAiBsG,EAAUjT,GACjE,IAIIg0B,EAAWrwB,KAAMqC,EAAO,KAAS3C,EAAOigB,cAAerQ,GAC3D,IAAMjN,KAASiN,EAGTrI,EAAYxL,KAAM4G,IACtB5G,KAAM4G,GAASiN,EAASjN,IAIxB5G,KAAKsE,KAAMsC,EAAOiN,EAASjN,IAK9B,OAAO5G,IAGR,CASC,OARAwjB,EAAO5iB,EAASgR,eAAgBhL,EAAO,OAKtC5G,KAAM,GAAMwjB,EACZxjB,KAAKyE,OAAS,GAERzE,IAcV,CAAO,OAAKqE,EAAS2d,UACpBhiB,KAAM,GAAMqE,EACZrE,KAAKyE,OAAS,EACPzE,MAIIwL,EAAYnH,QACDyO,IAAfmiB,EAAKE,MACXF,EAAKE,MAAO9wB,GAGZA,EAAUJ,GAGLA,EAAO2gB,UAAWvgB,EAAUrE,KACpC,GAGIL,UAAYsE,EAAOJ,GAGxBmxB,EAAa/wB,EAAQrD,GAGrB,IAAIw0B,EAAe,iCAGlBC,EAAmB,CAClBC,UAAU,EACVC,UAAU,EACVrM,MAAM,EACNsM,MAAM,GAoFR,SAASC,EAAS5K,EAAK5B,GACtB,MAAU4B,EAAMA,EAAK5B,KAA4B,IAAjB4B,EAAI7I,WACpC,OAAO6I,CACR,CApFA5mB,EAAOJ,GAAGpD,OAAQ,CACjBi1B,IAAK,SAAU/0B,GACd,IAAIg1B,EAAU1xB,EAAQtD,EAAQX,MAC7BkH,EAAIyuB,EAAQlxB,OAEb,OAAOzE,KAAK8G,QAAQ,WAEnB,IADA,IAAIG,EAAI,EACAA,EAAIC,EAAGD,IACd,GAAKhD,EAAOiB,SAAUlF,KAAM21B,EAAS1uB,IACpC,OAAO,CAGV,GACD,EAEA5B,QAAS,SAAU0oB,EAAWla,GAC7B,IAAIgX,EACH5jB,EAAI,EACJC,EAAIlH,KAAKyE,OACTkrB,EAAU,GACVgG,EAA+B,iBAAd5H,GAA0B9pB,EAAQ8pB,GAGpD,IAAM2G,EAAcnwB,KAAMwpB,GACzB,KAAQ9mB,EAAIC,EAAGD,IACd,IAAM4jB,EAAM7qB,KAAMiH,GAAK4jB,GAAOA,IAAQhX,EAASgX,EAAMA,EAAItiB,WAGxD,GAAKsiB,EAAI7I,SAAW,KAAQ2T,EAC3BA,EAAQ9vB,MAAOglB,IAAS,EAGP,IAAjBA,EAAI7I,UACH/d,EAAOpD,KAAK0rB,gBAAiB1B,EAAKkD,IAAgB,CAEnD4B,EAAQza,KAAM2V,GACd,KACD,CAKH,OAAO7qB,KAAKmjB,UAAWwM,EAAQlrB,OAAS,EAAIR,EAAOwpB,WAAYkC,GAAYA,EAC5E,EAGA9pB,MAAO,SAAU2d,GAGhB,OAAMA,EAKe,iBAATA,EACJtC,EAAQnhB,KAAMkE,EAAQuf,GAAQxjB,KAAM,IAIrCkhB,EAAQnhB,KAAMC,KAGpBwjB,EAAKR,OAASQ,EAAM,GAAMA,GAZjBxjB,KAAM,IAAOA,KAAM,GAAIuI,WAAevI,KAAKyjB,QAAQmS,UAAUnxB,QAAU,CAclF,EAEAqU,IAAK,SAAUzU,EAAUwP,GACxB,OAAO7T,KAAKmjB,UACXlf,EAAOwpB,WACNxpB,EAAOqf,MAAOtjB,KAAKuc,MAAOtY,EAAQI,EAAUwP,KAG/C,EAEAgiB,QAAS,SAAUxxB,GAClB,OAAOrE,KAAK8Y,IAAiB,MAAZzU,EAChBrE,KAAKujB,WAAavjB,KAAKujB,WAAWzc,OAAQzC,GAE5C,IAQDJ,EAAOxC,KAAM,CACZiD,OAAQ,SAAU8e,GACjB,IAAI9e,EAAS8e,EAAKjb,WAClB,OAAO7D,GAA8B,KAApBA,EAAOsd,SAAkBtd,EAAS,IACpD,EACAoxB,QAAS,SAAUtS,GAClB,OAAOyF,EAAKzF,EAAM,aACnB,EACAuS,aAAc,SAAUvS,EAAM8B,EAAIiP,GACjC,OAAOtL,EAAKzF,EAAM,aAAc+Q,EACjC,EACArL,KAAM,SAAU1F,GACf,OAAOiS,EAASjS,EAAM,cACvB,EACAgS,KAAM,SAAUhS,GACf,OAAOiS,EAASjS,EAAM,kBACvB,EACAwS,QAAS,SAAUxS,GAClB,OAAOyF,EAAKzF,EAAM,cACnB,EACAoS,QAAS,SAAUpS,GAClB,OAAOyF,EAAKzF,EAAM,kBACnB,EACAyS,UAAW,SAAUzS,EAAM8B,EAAIiP,GAC9B,OAAOtL,EAAKzF,EAAM,cAAe+Q,EAClC,EACA2B,UAAW,SAAU1S,EAAM8B,EAAIiP,GAC9B,OAAOtL,EAAKzF,EAAM,kBAAmB+Q,EACtC,EACAE,SAAU,SAAUjR,GACnB,OAAOiR,GAAYjR,EAAKjb,YAAc,CAAC,GAAIulB,WAAYtK,EACxD,EACA8R,SAAU,SAAU9R,GACnB,OAAOiR,EAAUjR,EAAKsK,WACvB,EACAyH,SAAU,SAAU/R,GACnB,OAA6B,MAAxBA,EAAK2S,iBAKT3U,EAAUgC,EAAK2S,iBAER3S,EAAK2S,iBAMR5vB,EAAUid,EAAM,cACpBA,EAAOA,EAAK4S,SAAW5S,GAGjBvf,EAAOqf,MAAO,GAAIE,EAAK2F,YAC/B,IACE,SAAUtW,EAAMhP,GAClBI,EAAOJ,GAAIgP,GAAS,SAAU0hB,EAAOlwB,GACpC,IAAIsrB,EAAU1rB,EAAO2D,IAAK5H,KAAM6D,EAAI0wB,GAuBpC,MArB0B,UAArB1hB,EAAK0C,OAAQ,KACjBlR,EAAWkwB,GAGPlwB,GAAgC,iBAAbA,IACvBsrB,EAAU1rB,EAAO6C,OAAQzC,EAAUsrB,IAG/B3vB,KAAKyE,OAAS,IAGZ4wB,EAAkBxiB,IACvB5O,EAAOwpB,WAAYkC,GAIfyF,EAAa7wB,KAAMsO,IACvB8c,EAAQ0G,WAIHr2B,KAAKmjB,UAAWwM,EACxB,CACD,IACA,IAAI2G,EAAkB,oBAsOtB,SAASC,EAAUle,GAClB,OAAOA,CACR,CACA,SAASme,EAASC,GACjB,MAAMA,CACP,CAEA,SAASC,EAAY3vB,EAAO4vB,EAASC,EAAQC,GAC5C,IAAIC,EAEJ,IAGM/vB,GAASyE,EAAcsrB,EAAS/vB,EAAMgwB,SAC1CD,EAAO/2B,KAAMgH,GAAQyf,KAAMmQ,GAAUK,KAAMJ,GAGhC7vB,GAASyE,EAAcsrB,EAAS/vB,EAAMkwB,MACjDH,EAAO/2B,KAAMgH,EAAO4vB,EAASC,GAQ7BD,EAAQljB,WAAOX,EAAW,CAAE/L,GAAQwO,MAAOshB,GAW7C,CALE,MAAQ9vB,GAIT6vB,EAAOnjB,WAAOX,EAAW,CAAE/L,GAC5B,CACD,CAzOA9C,EAAOizB,UAAY,SAAU12B,GAI5BA,EAA6B,iBAAZA,EAlClB,SAAwBA,GACvB,IAAI22B,EAAS,CAAC,EAId,OAHAlzB,EAAOxC,KAAMjB,EAAQoG,MAAO0vB,IAAmB,IAAI,SAAUld,EAAGge,GAC/DD,EAAQC,IAAS,CAClB,IACOD,CACR,CA6BEE,CAAe72B,GACfyD,EAAOxD,OAAQ,CAAC,EAAGD,GAEpB,IACC82B,EAGAC,EAGAC,EAGAC,EAGAzQ,EAAO,GAGP0Q,EAAQ,GAGRC,GAAe,EAGfC,EAAO,WAQN,IALAH,EAASA,GAAUj3B,EAAQq3B,KAI3BL,EAAQF,GAAS,EACTI,EAAMjzB,OAAQkzB,GAAe,EAEpC,IADAJ,EAASG,EAAMpN,UACLqN,EAAc3Q,EAAKviB,SAGmC,IAA1DuiB,EAAM2Q,GAAclkB,MAAO8jB,EAAQ,GAAKA,EAAQ,KACpD/2B,EAAQs3B,cAGRH,EAAc3Q,EAAKviB,OACnB8yB,GAAS,GAMN/2B,EAAQ+2B,SACbA,GAAS,GAGVD,GAAS,EAGJG,IAIHzQ,EADIuQ,EACG,GAIA,GAGV,EAGAvqB,EAAO,CAGN8L,IAAK,WA2BJ,OA1BKkO,IAGCuQ,IAAWD,IACfK,EAAc3Q,EAAKviB,OAAS,EAC5BizB,EAAMxiB,KAAMqiB,IAGb,SAAWze,EAAKQ,GACfrV,EAAOxC,KAAM6X,GAAM,SAAUF,EAAG8L,GAC1B1Z,EAAY0Z,GACV1kB,EAAQ4zB,QAAWpnB,EAAK0oB,IAAKxQ,IAClC8B,EAAK9R,KAAMgQ,GAEDA,GAAOA,EAAIzgB,QAA4B,WAAlBqe,EAAQoC,IAGxCpM,EAAKoM,EAEP,GACA,CAZD,CAYKxR,WAEA6jB,IAAWD,GACfM,KAGK53B,IACR,EAGA6E,OAAQ,WAYP,OAXAZ,EAAOxC,KAAMiS,WAAW,SAAU0F,EAAG8L,GAEpC,IADA,IAAIrf,GACMA,EAAQ5B,EAAOwC,QAASye,EAAK8B,EAAMnhB,KAAa,GACzDmhB,EAAKjD,OAAQle,EAAO,GAGfA,GAAS8xB,GACbA,GAGH,IACO33B,IACR,EAIA01B,IAAK,SAAU7xB,GACd,OAAOA,EACNI,EAAOwC,QAAS5C,EAAImjB,IAAU,EAC9BA,EAAKviB,OAAS,CAChB,EAGAszB,MAAO,WAIN,OAHK/Q,IACJA,EAAO,IAEDhnB,IACR,EAKA+R,QAAS,WAGR,OAFA0lB,EAASC,EAAQ,GACjB1Q,EAAOuQ,EAAS,GACTv3B,IACR,EACAgpB,SAAU,WACT,OAAQhC,CACT,EAKAgR,KAAM,WAKL,OAJAP,EAASC,EAAQ,GACXH,GAAWD,IAChBtQ,EAAOuQ,EAAS,IAEVv3B,IACR,EACAy3B,OAAQ,WACP,QAASA,CACV,EAGAQ,SAAU,SAAUpkB,EAASyF,GAS5B,OARMme,IAELne,EAAO,CAAEzF,GADTyF,EAAOA,GAAQ,IACQ/D,MAAQ+D,EAAK/D,QAAU+D,GAC9Coe,EAAMxiB,KAAMoE,GACNge,GACLM,KAGK53B,IACR,EAGA43B,KAAM,WAEL,OADA5qB,EAAKirB,SAAUj4B,KAAM0T,WACd1T,IACR,EAGAw3B,MAAO,WACN,QAASA,CACV,GAGF,OAAOxqB,CACR,EA2CA/I,EAAOxD,OAAQ,CAEdy3B,SAAU,SAAUC,GACnB,IAAIC,EAAS,CAIX,CAAE,SAAU,WAAYn0B,EAAOizB,UAAW,UACzCjzB,EAAOizB,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQjzB,EAAOizB,UAAW,eACtCjzB,EAAOizB,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQjzB,EAAOizB,UAAW,eACrCjzB,EAAOizB,UAAW,eAAiB,EAAG,aAExCmB,EAAQ,UACRtB,EAAU,CACTsB,MAAO,WACN,OAAOA,CACR,EACAC,OAAQ,WAEP,OADAC,EAAS/R,KAAM9S,WAAYsjB,KAAMtjB,WAC1B1T,IACR,EACA,MAAS,SAAU6D,GAClB,OAAOkzB,EAAQE,KAAM,KAAMpzB,EAC5B,EAGA20B,KAAM,WACL,IAAIC,EAAM/kB,UAEV,OAAOzP,EAAOi0B,UAAU,SAAUQ,GACjCz0B,EAAOxC,KAAM22B,GAAQ,SAAU9S,EAAIqT,GAGlC,IAAI90B,EAAK2H,EAAYitB,EAAKE,EAAO,MAAWF,EAAKE,EAAO,IAKxDJ,EAAUI,EAAO,KAAO,WACvB,IAAIC,EAAW/0B,GAAMA,EAAG4P,MAAOzT,KAAM0T,WAChCklB,GAAYptB,EAAYotB,EAAS7B,SACrC6B,EAAS7B,UACP8B,SAAUH,EAASI,QACnBtS,KAAMkS,EAAS/B,SACfK,KAAM0B,EAAS9B,QAEjB8B,EAAUC,EAAO,GAAM,QACtB34B,KACA6D,EAAK,CAAE+0B,GAAallB,UAGvB,GACD,IACA+kB,EAAM,IACP,IAAI1B,SACL,EACAE,KAAM,SAAU8B,EAAaC,EAAYC,GACxC,IAAIC,EAAW,EACf,SAASvC,EAAS92B,EAAO04B,EAAU/kB,EAASN,GAC3C,OAAO,WACN,IAAI1F,EAAOxN,KACVsZ,EAAO5F,UACPylB,EAAa,WACZ,IAAIP,EAAU3B,EAKd,KAAKp3B,EAAQq5B,GAAb,CAQA,IAJAN,EAAWplB,EAAQC,MAAOjG,EAAM8L,MAIdif,EAASxB,UAC1B,MAAM,IAAIqC,UAAW,4BAOtBnC,EAAO2B,IAKgB,iBAAbA,GACY,mBAAbA,IACRA,EAAS3B,KAGLzrB,EAAYyrB,GAGX/jB,EACJ+jB,EAAKl3B,KACJ64B,EACAjC,EAASuC,EAAUX,EAAUhC,EAAUrjB,GACvCyjB,EAASuC,EAAUX,EAAU/B,EAAStjB,KAOvCgmB,IAEAjC,EAAKl3B,KACJ64B,EACAjC,EAASuC,EAAUX,EAAUhC,EAAUrjB,GACvCyjB,EAASuC,EAAUX,EAAU/B,EAAStjB,GACtCyjB,EAASuC,EAAUX,EAAUhC,EAC5BgC,EAASc,eASP7lB,IAAY+iB,IAChB/oB,OAAOsF,EACPwG,EAAO,CAAEsf,KAKR1lB,GAAWqlB,EAASe,aAAe9rB,EAAM8L,GA7D5C,CA+DD,EAGAigB,EAAUrmB,EACTimB,EACA,WACC,IACCA,GAsBD,CArBE,MAAQ51B,GAEJU,EAAOi0B,SAASsB,eACpBv1B,EAAOi0B,SAASsB,cAAej2B,EAC9Bg2B,EAAQE,YAML55B,EAAQ,GAAKq5B,IAIZ1lB,IAAYgjB,IAChBhpB,OAAOsF,EACPwG,EAAO,CAAE/V,IAGVg1B,EAASmB,WAAYlsB,EAAM8L,GAE7B,CACD,EAMGzZ,EACJ05B,KAKKt1B,EAAOi0B,SAASyB,eACpBJ,EAAQE,WAAax1B,EAAOi0B,SAASyB,gBAEtC53B,EAAOe,WAAYy2B,GAErB,CACD,CAEA,OAAOt1B,EAAOi0B,UAAU,SAAUQ,GAGjCN,EAAQ,GAAK,GAAItf,IAChB6d,EACC,EACA+B,EACAltB,EAAYytB,GACXA,EACA1C,EACDmC,EAASW,aAKXjB,EAAQ,GAAK,GAAItf,IAChB6d,EACC,EACA+B,EACAltB,EAAYutB,GACXA,EACAxC,IAKH6B,EAAQ,GAAK,GAAItf,IAChB6d,EACC,EACA+B,EACAltB,EAAYwtB,GACXA,EACAxC,GAGJ,IAAIO,SACL,EAIAA,QAAS,SAAUhqB,GAClB,OAAc,MAAPA,EAAc9I,EAAOxD,OAAQsM,EAAKgqB,GAAYA,CACtD,GAEDwB,EAAW,CAAC,EAkEb,OA/DAt0B,EAAOxC,KAAM22B,GAAQ,SAAUnxB,EAAG0xB,GACjC,IAAI3R,EAAO2R,EAAO,GACjBiB,EAAcjB,EAAO,GAKtB5B,EAAS4B,EAAO,IAAQ3R,EAAKlO,IAGxB8gB,GACJ5S,EAAKlO,KACJ,WAICuf,EAAQuB,CACT,GAIAxB,EAAQ,EAAInxB,GAAK,GAAI8K,QAIrBqmB,EAAQ,EAAInxB,GAAK,GAAI8K,QAGrBqmB,EAAQ,GAAK,GAAIJ,KAGjBI,EAAQ,GAAK,GAAIJ,MAOnBhR,EAAKlO,IAAK6f,EAAO,GAAIf,MAKrBW,EAAUI,EAAO,IAAQ,WAExB,OADAJ,EAAUI,EAAO,GAAM,QAAU34B,OAASu4B,OAAWzlB,EAAY9S,KAAM0T,WAChE1T,IACR,EAKAu4B,EAAUI,EAAO,GAAM,QAAW3R,EAAKiR,QACxC,IAGAlB,EAAQA,QAASwB,GAGZJ,GACJA,EAAKp4B,KAAMw4B,EAAUA,GAIfA,CACR,EAGAsB,KAAM,SAAUC,GACf,IAGCC,EAAYrmB,UAAUjP,OAGtBwC,EAAI8yB,EAGJC,EAAkBt6B,MAAOuH,GACzBgzB,EAAgB1kB,EAAMxV,KAAM2T,WAG5BwmB,EAAUj2B,EAAOi0B,WAGjBiC,EAAa,SAAUlzB,GACtB,OAAO,SAAUF,GAChBizB,EAAiB/yB,GAAMjH,KACvBi6B,EAAehzB,GAAMyM,UAAUjP,OAAS,EAAI8Q,EAAMxV,KAAM2T,WAAc3M,IAC5DgzB,GACTG,EAAQZ,YAAaU,EAAiBC,EAExC,CACD,EAGD,GAAKF,GAAa,IACjBrD,EAAYoD,EAAaI,EAAQ1T,KAAM2T,EAAYlzB,IAAM0vB,QAASuD,EAAQtD,QACxEmD,GAGuB,YAApBG,EAAQ7B,SACZ7sB,EAAYyuB,EAAehzB,IAAOgzB,EAAehzB,GAAIgwB,OAErD,OAAOiD,EAAQjD,OAKjB,KAAQhwB,KACPyvB,EAAYuD,EAAehzB,GAAKkzB,EAAYlzB,GAAKizB,EAAQtD,QAG1D,OAAOsD,EAAQnD,SAChB,IAMD,IAAIqD,EAAc,yDAElBn2B,EAAOi0B,SAASsB,cAAgB,SAAUnV,EAAOgW,GAI3Ct4B,EAAOu4B,SAAWv4B,EAAOu4B,QAAQC,MAAQlW,GAAS+V,EAAY71B,KAAM8f,EAAMxR,OAC9E9Q,EAAOu4B,QAAQC,KAAM,8BAAgClW,EAAMmW,QAASnW,EAAMgW,MAAOA,EAEnF,EAKAp2B,EAAOw2B,eAAiB,SAAUpW,GACjCtiB,EAAOe,YAAY,WAClB,MAAMuhB,CACP,GACD,EAMA,IAAIqW,EAAYz2B,EAAOi0B,WAkDvB,SAASyC,IACR/5B,EAASg6B,oBAAqB,mBAAoBD,GAClD54B,EAAO64B,oBAAqB,OAAQD,GACpC12B,EAAOkxB,OACR,CApDAlxB,EAAOJ,GAAGsxB,MAAQ,SAAUtxB,GAY3B,OAVA62B,EACEzD,KAAMpzB,GAIP,OACQ,SAAUwgB,GACjBpgB,EAAOw2B,eAAgBpW,EACxB,IAEMrkB,IACR,EAEAiE,EAAOxD,OAAQ,CAGd2jB,SAAS,EAITyW,UAAW,EAGX1F,MAAO,SAAU2F,KAGF,IAATA,IAAkB72B,EAAO42B,UAAY52B,EAAOmgB,WAKjDngB,EAAOmgB,SAAU,GAGH,IAAT0W,KAAmB72B,EAAO42B,UAAY,GAK3CH,EAAUpB,YAAa14B,EAAU,CAAEqD,IACpC,IAGDA,EAAOkxB,MAAM8B,KAAOyD,EAAUzD,KAaD,aAAxBr2B,EAASm6B,YACa,YAAxBn6B,EAASm6B,aAA6Bn6B,EAASwE,gBAAgB41B,SAGjEj5B,EAAOe,WAAYmB,EAAOkxB,QAK1Bv0B,EAASgrB,iBAAkB,mBAAoB+O,GAG/C54B,EAAO6pB,iBAAkB,OAAQ+O,IAQlC,IAAIM,EAAS,SAATA,EAAmB7X,EAAOvf,EAAIiJ,EAAK/F,EAAOm0B,EAAWC,EAAUC,GAClE,IAAIn0B,EAAI,EACPc,EAAMqb,EAAM3e,OACZ42B,EAAc,MAAPvuB,EAGR,GAAuB,WAAlBgW,EAAQhW,GAEZ,IAAM7F,KADNi0B,GAAY,EACDpuB,EACVmuB,EAAQ7X,EAAOvf,EAAIoD,EAAG6F,EAAK7F,IAAK,EAAMk0B,EAAUC,QAI3C,QAAetoB,IAAV/L,IACXm0B,GAAY,EAEN1vB,EAAYzE,KACjBq0B,GAAM,GAGFC,IAGCD,GACJv3B,EAAG9D,KAAMqjB,EAAOrc,GAChBlD,EAAK,OAILw3B,EAAOx3B,EACPA,EAAK,SAAU2f,EAAM8X,EAAMv0B,GAC1B,OAAOs0B,EAAKt7B,KAAMkE,EAAQuf,GAAQzc,EACnC,IAIGlD,GACJ,KAAQoD,EAAIc,EAAKd,IAChBpD,EACCuf,EAAOnc,GAAK6F,EAAKsuB,EAChBr0B,EACAA,EAAMhH,KAAMqjB,EAAOnc,GAAKA,EAAGpD,EAAIuf,EAAOnc,GAAK6F,KAMhD,OAAKouB,EACG9X,EAIHiY,EACGx3B,EAAG9D,KAAMqjB,GAGVrb,EAAMlE,EAAIuf,EAAO,GAAKtW,GAAQquB,CACtC,EAIII,EAAY,QACfC,EAAa,YAGd,SAASC,EAAYC,EAAMC,GAC1B,OAAOA,EAAOzc,aACf,CAKA,SAAS0c,EAAWC,GACnB,OAAOA,EAAOl4B,QAAS43B,EAAW,OAAQ53B,QAAS63B,EAAYC,EAChE,CACA,IAAIK,EAAa,SAAUC,GAQ1B,OAA0B,IAAnBA,EAAM/Z,UAAqC,IAAnB+Z,EAAM/Z,YAAsB+Z,EAAM/Z,QAClE,EAKA,SAASga,IACRh8B,KAAKmkB,QAAUlgB,EAAOkgB,QAAU6X,EAAKC,KACtC,CAEAD,EAAKC,IAAM,EAEXD,EAAKr8B,UAAY,CAEhByqB,MAAO,SAAU2R,GAGhB,IAAIh1B,EAAQg1B,EAAO/7B,KAAKmkB,SA4BxB,OAzBMpd,IACLA,EAAQ,CAAC,EAKJ+0B,EAAYC,KAIXA,EAAM/Z,SACV+Z,EAAO/7B,KAAKmkB,SAAYpd,EAMxB0a,OAAOya,eAAgBH,EAAO/7B,KAAKmkB,QAAS,CAC3Cpd,MAAOA,EACPo1B,cAAc,MAMXp1B,CACR,EACA+U,IAAK,SAAUigB,EAAOp6B,EAAMoF,GAC3B,IAAIq1B,EACHhS,EAAQpqB,KAAKoqB,MAAO2R,GAIrB,GAAqB,iBAATp6B,EACXyoB,EAAOwR,EAAWj6B,IAAWoF,OAM7B,IAAMq1B,KAAQz6B,EACbyoB,EAAOwR,EAAWQ,IAAWz6B,EAAMy6B,GAGrC,OAAOhS,CACR,EACA7N,IAAK,SAAUwf,EAAOjvB,GACrB,YAAegG,IAARhG,EACN9M,KAAKoqB,MAAO2R,GAGZA,EAAO/7B,KAAKmkB,UAAa4X,EAAO/7B,KAAKmkB,SAAWyX,EAAW9uB,GAC7D,EACAmuB,OAAQ,SAAUc,EAAOjvB,EAAK/F,GAa7B,YAAa+L,IAARhG,GACCA,GAAsB,iBAARA,QAAgCgG,IAAV/L,EAElC/G,KAAKuc,IAAKwf,EAAOjvB,IASzB9M,KAAK8b,IAAKigB,EAAOjvB,EAAK/F,QAIL+L,IAAV/L,EAAsBA,EAAQ+F,EACtC,EACAjI,OAAQ,SAAUk3B,EAAOjvB,GACxB,IAAI7F,EACHmjB,EAAQ2R,EAAO/7B,KAAKmkB,SAErB,QAAerR,IAAVsX,EAAL,CAIA,QAAatX,IAARhG,EAAoB,CAkBxB7F,GAXC6F,EAJIpN,MAAMU,QAAS0M,GAIbA,EAAIlF,IAAKg0B,IAEf9uB,EAAM8uB,EAAW9uB,MAIJsd,EACZ,CAAEtd,GACAA,EAAIlG,MAAO0vB,IAAmB,IAG1B7xB,OAER,KAAQwC,YACAmjB,EAAOtd,EAAK7F,GAErB,OAGa6L,IAARhG,GAAqB7I,EAAOygB,cAAe0F,MAM1C2R,EAAM/Z,SACV+Z,EAAO/7B,KAAKmkB,cAAYrR,SAEjBipB,EAAO/7B,KAAKmkB,SArCrB,CAwCD,EACAkY,QAAS,SAAUN,GAClB,IAAI3R,EAAQ2R,EAAO/7B,KAAKmkB,SACxB,YAAiBrR,IAAVsX,IAAwBnmB,EAAOygB,cAAe0F,EACtD,GAED,IAAIkS,EAAW,IAAIN,EAEfO,EAAW,IAAIP,EAcfQ,GAAS,gCACZC,GAAa,SA2Bd,SAASjwB,GAAUgX,EAAM1W,EAAKnL,GAC7B,IAAIkR,EAIJ,QAAcC,IAATnR,GAAwC,IAAlB6hB,EAAKxB,SAI/B,GAHAnP,EAAO,QAAU/F,EAAInJ,QAAS84B,GAAY,OAAQj2B,cAG7B,iBAFrB7E,EAAO6hB,EAAKb,aAAc9P,IAEM,CAC/B,IACClR,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJ66B,GAAOj4B,KAAM5C,GACV+6B,KAAK3iB,MAAOpY,GAGbA,EACR,CAaWg7B,CAASh7B,EACF,CAAb,MAAQ4B,GAAK,CAGfg5B,EAASzgB,IAAK0H,EAAM1W,EAAKnL,EAC1B,MACCA,OAAOmR,EAGT,OAAOnR,CACR,CAEAsC,EAAOxD,OAAQ,CACd47B,QAAS,SAAU7Y,GAClB,OAAO+Y,EAASF,QAAS7Y,IAAU8Y,EAASD,QAAS7Y,EACtD,EAEA7hB,KAAM,SAAU6hB,EAAM3Q,EAAMlR,GAC3B,OAAO46B,EAAStB,OAAQzX,EAAM3Q,EAAMlR,EACrC,EAEAwQ,WAAY,SAAUqR,EAAM3Q,GAC3B0pB,EAAS13B,OAAQ2e,EAAM3Q,EACxB,EAIA+pB,MAAO,SAAUpZ,EAAM3Q,EAAMlR,GAC5B,OAAO26B,EAASrB,OAAQzX,EAAM3Q,EAAMlR,EACrC,EAEAk7B,YAAa,SAAUrZ,EAAM3Q,GAC5BypB,EAASz3B,OAAQ2e,EAAM3Q,EACxB,IAGD5O,EAAOJ,GAAGpD,OAAQ,CACjBkB,KAAM,SAAUmL,EAAK/F,GACpB,IAAIE,EAAG4L,EAAMlR,EACZ6hB,EAAOxjB,KAAM,GACb0qB,EAAQlH,GAAQA,EAAKtb,WAGtB,QAAa4K,IAARhG,EAAoB,CACxB,GAAK9M,KAAKyE,SACT9C,EAAO46B,EAAShgB,IAAKiH,GAEE,IAAlBA,EAAKxB,WAAmBsa,EAAS/f,IAAKiH,EAAM,iBAAmB,CAEnE,IADAvc,EAAIyjB,EAAMjmB,OACFwC,KAIFyjB,EAAOzjB,IAEsB,KADjC4L,EAAO6X,EAAOzjB,GAAI4L,MACRqO,QAAS,WAClBrO,EAAO+oB,EAAW/oB,EAAK0C,MAAO,IAC9B/I,GAAUgX,EAAM3Q,EAAMlR,EAAMkR,KAI/BypB,EAASxgB,IAAK0H,EAAM,gBAAgB,EACrC,CAGD,OAAO7hB,CACR,CAGA,MAAoB,iBAARmL,EACJ9M,KAAKyB,MAAM,WACjB86B,EAASzgB,IAAK9b,KAAM8M,EACrB,IAGMmuB,EAAQj7B,MAAM,SAAU+G,GAC9B,IAAIpF,EAOJ,GAAK6hB,QAAkB1Q,IAAV/L,EAKZ,YAAc+L,KADdnR,EAAO46B,EAAShgB,IAAKiH,EAAM1W,UAQbgG,KADdnR,EAAO6K,GAAUgX,EAAM1W,IALfnL,OAWR,EAID3B,KAAKyB,MAAM,WAGV86B,EAASzgB,IAAK9b,KAAM8M,EAAK/F,EAC1B,GACD,GAAG,KAAMA,EAAO2M,UAAUjP,OAAS,EAAG,MAAM,EAC7C,EAEA0N,WAAY,SAAUrF,GACrB,OAAO9M,KAAKyB,MAAM,WACjB86B,EAAS13B,OAAQ7E,KAAM8M,EACxB,GACD,IAID7I,EAAOxD,OAAQ,CACdi3B,MAAO,SAAUlU,EAAMxe,EAAMrD,GAC5B,IAAI+1B,EAEJ,GAAKlU,EAYJ,OAXAxe,GAASA,GAAQ,MAAS,QAC1B0yB,EAAQ4E,EAAS/f,IAAKiH,EAAMxe,GAGvBrD,KACE+1B,GAASh4B,MAAMU,QAASuB,GAC7B+1B,EAAQ4E,EAASrB,OAAQzX,EAAMxe,EAAMf,EAAO2gB,UAAWjjB,IAEvD+1B,EAAMxiB,KAAMvT,IAGP+1B,GAAS,EAElB,EAEAoF,QAAS,SAAUtZ,EAAMxe,GAGxB,IAAI0yB,EAAQzzB,EAAOyzB,MAAOlU,EAF1Bxe,EAAOA,GAAQ,MAGd+3B,EAAcrF,EAAMjzB,OACpBZ,EAAK6zB,EAAMpN,QACX0S,EAAQ/4B,EAAOg5B,YAAazZ,EAAMxe,GAMvB,eAAPnB,IACJA,EAAK6zB,EAAMpN,QACXyS,KAGIl5B,IAIU,OAATmB,GACJ0yB,EAAMrK,QAAS,qBAIT2P,EAAME,KACbr5B,EAAG9D,KAAMyjB,GApBF,WACNvf,EAAO64B,QAAStZ,EAAMxe,EACvB,GAkBqBg4B,KAGhBD,GAAeC,GACpBA,EAAMjF,MAAMH,MAEd,EAGAqF,YAAa,SAAUzZ,EAAMxe,GAC5B,IAAI8H,EAAM9H,EAAO,aACjB,OAAOs3B,EAAS/f,IAAKiH,EAAM1W,IAASwvB,EAASrB,OAAQzX,EAAM1W,EAAK,CAC/DirB,MAAO9zB,EAAOizB,UAAW,eAAgBpe,KAAK,WAC7CwjB,EAASz3B,OAAQ2e,EAAM,CAAExe,EAAO,QAAS8H,GAC1C,KAEF,IAGD7I,EAAOJ,GAAGpD,OAAQ,CACjBi3B,MAAO,SAAU1yB,EAAMrD,GACtB,IAAIw7B,EAAS,EAQb,MANqB,iBAATn4B,IACXrD,EAAOqD,EACPA,EAAO,KACPm4B,KAGIzpB,UAAUjP,OAAS04B,EAChBl5B,EAAOyzB,MAAO13B,KAAM,GAAKgF,QAGjB8N,IAATnR,EACN3B,KACAA,KAAKyB,MAAM,WACV,IAAIi2B,EAAQzzB,EAAOyzB,MAAO13B,KAAMgF,EAAMrD,GAGtCsC,EAAOg5B,YAAaj9B,KAAMgF,GAEZ,OAATA,GAAgC,eAAf0yB,EAAO,IAC5BzzB,EAAO64B,QAAS98B,KAAMgF,EAExB,GACF,EACA83B,QAAS,SAAU93B,GAClB,OAAOhF,KAAKyB,MAAM,WACjBwC,EAAO64B,QAAS98B,KAAMgF,EACvB,GACD,EACAo4B,WAAY,SAAUp4B,GACrB,OAAOhF,KAAK03B,MAAO1yB,GAAQ,KAAM,GAClC,EAIA+xB,QAAS,SAAU/xB,EAAM+H,GACxB,IAAIsf,EACH5V,EAAQ,EACR4mB,EAAQp5B,EAAOi0B,WACfpwB,EAAW9H,KACXiH,EAAIjH,KAAKyE,OACTkyB,EAAU,aACClgB,GACT4mB,EAAM/D,YAAaxxB,EAAU,CAAEA,GAEjC,EAQD,IANqB,iBAAT9C,IACX+H,EAAM/H,EACNA,OAAO8N,GAER9N,EAAOA,GAAQ,KAEPiC,MACPolB,EAAMiQ,EAAS/f,IAAKzU,EAAUb,GAAKjC,EAAO,gBAC9BqnB,EAAI0L,QACfthB,IACA4V,EAAI0L,MAAMjf,IAAK6d,IAIjB,OADAA,IACO0G,EAAMtG,QAAShqB,EACvB,IAED,IAAIuwB,GAAS,sCAAwCC,OAEjDC,GAAU,IAAIx2B,OAAQ,iBAAmBs2B,GAAO,cAAe,KAG/DG,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCr4B,GAAkBxE,EAASwE,gBAI1Bs4B,GAAa,SAAUla,GACzB,OAAOvf,EAAOiB,SAAUse,EAAKjW,cAAeiW,EAC7C,EACAma,GAAW,CAAEA,UAAU,GAOnBv4B,GAAgBw4B,cACpBF,GAAa,SAAUla,GACtB,OAAOvf,EAAOiB,SAAUse,EAAKjW,cAAeiW,IAC3CA,EAAKoa,YAAaD,MAAena,EAAKjW,aACxC,GAEF,IAAIswB,GAAqB,SAAUra,EAAM3b,GAOvC,MAA8B,UAH9B2b,EAAO3b,GAAM2b,GAGDzQ,MAAM9E,SACM,KAAvBuV,EAAKzQ,MAAM9E,SAMXyvB,GAAYla,IAEsB,SAAlCvf,EAAOZ,IAAKmgB,EAAM,UACpB,EAID,SAASsa,GAAWta,EAAM4Y,EAAM2B,EAAYC,GAC3C,IAAIC,EAAUC,EACbC,EAAgB,GAChBC,EAAeJ,EACd,WACC,OAAOA,EAAMnT,KACd,EACA,WACC,OAAO5mB,EAAOZ,IAAKmgB,EAAM4Y,EAAM,GAChC,EACDiC,EAAUD,IACVE,EAAOP,GAAcA,EAAY,KAAS95B,EAAOs6B,UAAWnC,GAAS,GAAK,MAG1EoC,EAAgBhb,EAAKxB,WAClB/d,EAAOs6B,UAAWnC,IAAmB,OAATkC,IAAkBD,IAChDb,GAAQ9T,KAAMzlB,EAAOZ,IAAKmgB,EAAM4Y,IAElC,GAAKoC,GAAiBA,EAAe,KAAQF,EAAO,CAYnD,IARAD,GAAoB,EAGpBC,EAAOA,GAAQE,EAAe,GAG9BA,GAAiBH,GAAW,EAEpBF,KAIPl6B,EAAO8O,MAAOyQ,EAAM4Y,EAAMoC,EAAgBF,IACnC,EAAIJ,IAAY,GAAMA,EAAQE,IAAiBC,GAAW,MAAW,IAC3EF,EAAgB,GAEjBK,GAAgCN,EAKjCj6B,EAAO8O,MAAOyQ,EAAM4Y,GADpBoC,GAAgC,GACUF,GAG1CP,EAAaA,GAAc,EAC5B,CAeA,OAbKA,IACJS,GAAiBA,IAAkBH,GAAW,EAG9CJ,EAAWF,EAAY,GACtBS,GAAkBT,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMM,KAAOA,EACbN,EAAM5O,MAAQoP,EACdR,EAAMxrB,IAAMyrB,IAGPA,CACR,CAGA,IAAIQ,GAAoB,CAAC,EAEzB,SAASC,GAAmBlb,GAC3B,IAAI0O,EACHzP,EAAMe,EAAKjW,cACXhH,EAAWid,EAAKjd,SAChB0H,EAAUwwB,GAAmBl4B,GAE9B,OAAK0H,IAILikB,EAAOzP,EAAItf,KAAK4Q,YAAa0O,EAAInd,cAAeiB,IAChD0H,EAAUhK,EAAOZ,IAAK6uB,EAAM,WAE5BA,EAAK3pB,WAAWC,YAAa0pB,GAEZ,SAAZjkB,IACJA,EAAU,SAEXwwB,GAAmBl4B,GAAa0H,EAEzBA,EACR,CAEA,SAAS0wB,GAAU72B,EAAU4E,GAO5B,IANA,IAAIuB,EAASuV,EACZob,EAAS,GACT/4B,EAAQ,EACRpB,EAASqD,EAASrD,OAGXoB,EAAQpB,EAAQoB,KACvB2d,EAAO1b,EAAUjC,IACNkN,QAIX9E,EAAUuV,EAAKzQ,MAAM9E,QAChBvB,GAKa,SAAZuB,IACJ2wB,EAAQ/4B,GAAUy2B,EAAS/f,IAAKiH,EAAM,YAAe,KAC/Cob,EAAQ/4B,KACb2d,EAAKzQ,MAAM9E,QAAU,KAGK,KAAvBuV,EAAKzQ,MAAM9E,SAAkB4vB,GAAoBra,KACrDob,EAAQ/4B,GAAU64B,GAAmBlb,KAGrB,SAAZvV,IACJ2wB,EAAQ/4B,GAAU,OAGlBy2B,EAASxgB,IAAK0H,EAAM,UAAWvV,KAMlC,IAAMpI,EAAQ,EAAGA,EAAQpB,EAAQoB,IACR,MAAnB+4B,EAAQ/4B,KACZiC,EAAUjC,GAAQkN,MAAM9E,QAAU2wB,EAAQ/4B,IAI5C,OAAOiC,CACR,CAEA7D,EAAOJ,GAAGpD,OAAQ,CACjBiM,KAAM,WACL,OAAOiyB,GAAU3+B,MAAM,EACxB,EACA2M,KAAM,WACL,OAAOgyB,GAAU3+B,KAClB,EACAkE,OAAQ,SAAUm0B,GACjB,MAAsB,kBAAVA,EACJA,EAAQr4B,KAAK0M,OAAS1M,KAAK2M,OAG5B3M,KAAKyB,MAAM,WACZo8B,GAAoB79B,MACxBiE,EAAQjE,MAAO0M,OAEfzI,EAAQjE,MAAO2M,MAEjB,GACD,IAED,IAUE3C,GACAsiB,GAXEuS,GAAmB,wBAEnBC,GAAa,iCAEbC,GAAgB,qCAMlB/0B,GADcpJ,EAASo+B,yBACRjrB,YAAanT,EAAS0E,cAAe,SACpDgnB,GAAQ1rB,EAAS0E,cAAe,UAM3Bsd,aAAc,OAAQ,SAC5B0J,GAAM1J,aAAc,UAAW,WAC/B0J,GAAM1J,aAAc,OAAQ,KAE5B5Y,GAAI+J,YAAauY,IAIjBpd,EAAQ+vB,WAAaj1B,GAAIk1B,WAAW,GAAOA,WAAW,GAAO5P,UAAUgB,QAIvEtmB,GAAItC,UAAY,yBAChBwH,EAAQiwB,iBAAmBn1B,GAAIk1B,WAAW,GAAO5P,UAAU6E,aAK3DnqB,GAAItC,UAAY,oBAChBwH,EAAQ1N,SAAWwI,GAAIslB,UAKxB,IAAI8P,GAAU,CAKbC,MAAO,CAAE,EAAG,UAAW,YACvBv1B,IAAK,CAAE,EAAG,oBAAqB,uBAC/Bw1B,GAAI,CAAE,EAAG,iBAAkB,oBAC3BC,GAAI,CAAE,EAAG,qBAAsB,yBAE/BC,SAAU,CAAE,EAAG,GAAI,KAYpB,SAASC,GAAQ5rB,EAASuY,GAIzB,IAAI/I,EAYJ,OATCA,OAD4C,IAAjCxP,EAAQ+V,qBACb/V,EAAQ+V,qBAAsBwC,GAAO,UAEI,IAA7BvY,EAAQqW,iBACpBrW,EAAQqW,iBAAkBkC,GAAO,KAGjC,QAGMtZ,IAARsZ,GAAqBA,GAAO7lB,EAAUsN,EAASuY,GAC5CnoB,EAAOqf,MAAO,CAAEzP,GAAWwP,GAG5BA,CACR,CAIA,SAASqc,GAAetc,EAAOuc,GAI9B,IAHA,IAAI14B,EAAI,EACPC,EAAIkc,EAAM3e,OAEHwC,EAAIC,EAAGD,IACdq1B,EAASxgB,IACRsH,EAAOnc,GACP,cACC04B,GAAerD,EAAS/f,IAAKojB,EAAa14B,GAAK,cAGnD,CA7CAm4B,GAAQQ,MAAQR,GAAQS,MAAQT,GAAQU,SAAWV,GAAQW,QAAUX,GAAQC,MAC7ED,GAAQY,GAAKZ,GAAQG,GAGfrwB,EAAQ1N,SACb49B,GAAQa,SAAWb,GAAQ59B,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAIqmB,GAAQ,YAEZ,SAASqY,GAAe9c,EAAOvP,EAASssB,EAASC,EAAWC,GAO3D,IANA,IAAI7c,EAAM6I,EAAKD,EAAKkU,EAAMC,EAAUn4B,EACnCo4B,EAAW3sB,EAAQmrB,yBACnByB,EAAQ,GACRx5B,EAAI,EACJC,EAAIkc,EAAM3e,OAEHwC,EAAIC,EAAGD,IAGd,IAFAuc,EAAOJ,EAAOnc,KAEQ,IAATuc,EAGZ,GAAwB,WAAnBV,EAAQU,GAIZvf,EAAOqf,MAAOmd,EAAOjd,EAAKxB,SAAW,CAAEwB,GAASA,QAG1C,GAAMqE,GAAMtjB,KAAMif,GAIlB,CAUN,IATA6I,EAAMA,GAAOmU,EAASzsB,YAAaF,EAAQvO,cAAe,QAG1D8mB,GAAQ0S,GAASpV,KAAMlG,IAAU,CAAE,GAAI,KAAQ,GAAIhd,cACnD85B,EAAOlB,GAAShT,IAASgT,GAAQI,SACjCnT,EAAI3kB,UAAY44B,EAAM,GAAMr8B,EAAOy8B,cAAeld,GAAS8c,EAAM,GAGjEl4B,EAAIk4B,EAAM,GACFl4B,KACPikB,EAAMA,EAAIiD,UAKXrrB,EAAOqf,MAAOmd,EAAOpU,EAAIlD,aAGzBkD,EAAMmU,EAAS1S,YAGXD,YAAc,EACnB,MA1BC4S,EAAMvrB,KAAMrB,EAAQ8sB,eAAgBnd,IAkCvC,IAHAgd,EAAS3S,YAAc,GAEvB5mB,EAAI,EACMuc,EAAOid,EAAOx5B,MAGvB,GAAKm5B,GAAan8B,EAAOwC,QAAS+c,EAAM4c,IAAe,EACjDC,GACJA,EAAQnrB,KAAMsO,QAgBhB,GAXA+c,EAAW7C,GAAYla,GAGvB6I,EAAMoT,GAAQe,EAASzsB,YAAayP,GAAQ,UAGvC+c,GACJb,GAAerT,GAIX8T,EAEJ,IADA/3B,EAAI,EACMob,EAAO6I,EAAKjkB,MAChB22B,GAAYx6B,KAAMif,EAAKxe,MAAQ,KACnCm7B,EAAQjrB,KAAMsO,GAMlB,OAAOgd,CACR,CAGA,IAAII,GAAiB,sBAErB,SAASC,KACR,OAAO,CACR,CAEA,SAASC,KACR,OAAO,CACR,CAQA,SAASC,GAAYvd,EAAMxe,GAC1B,OAASwe,IAMV,WACC,IACC,OAAO5iB,EAASsvB,aACC,CAAhB,MAAQ8Q,GAAQ,CACnB,CAVmBC,KAAqC,UAATj8B,EAC/C,CAWA,SAASjE,GAAIyiB,EAAM0d,EAAO78B,EAAU1C,EAAMkC,EAAIuL,GAC7C,IAAI+xB,EAAQn8B,EAGZ,GAAsB,iBAAVk8B,EAAqB,CAShC,IAAMl8B,IANmB,iBAAbX,IAGX1C,EAAOA,GAAQ0C,EACfA,OAAWyO,GAEEouB,EACbngC,GAAIyiB,EAAMxe,EAAMX,EAAU1C,EAAMu/B,EAAOl8B,GAAQoK,GAEhD,OAAOoU,CACR,CAqBA,GAnBa,MAAR7hB,GAAsB,MAANkC,GAGpBA,EAAKQ,EACL1C,EAAO0C,OAAWyO,GACD,MAANjP,IACc,iBAAbQ,GAGXR,EAAKlC,EACLA,OAAOmR,IAIPjP,EAAKlC,EACLA,EAAO0C,EACPA,OAAWyO,KAGD,IAAPjP,EACJA,EAAKi9B,QACC,IAAMj9B,EACZ,OAAO2f,EAeR,OAZa,IAARpU,IACJ+xB,EAASt9B,EACTA,EAAK,SAAUoP,GAId,OADAhP,IAASiO,IAAKe,GACPkuB,EAAO1tB,MAAOzT,KAAM0T,UAC5B,EAGA7P,EAAGshB,KAAOgc,EAAOhc,OAAUgc,EAAOhc,KAAOlhB,EAAOkhB,SAE1C3B,EAAK/hB,MAAM,WACjBwC,EAAOgP,MAAM6F,IAAK9Y,KAAMkhC,EAAOr9B,EAAIlC,EAAM0C,EAC1C,GACD,CA6aA,SAAS+8B,GAAgBv5B,EAAI7C,EAAM+7B,GAG5BA,GAQNzE,EAASxgB,IAAKjU,EAAI7C,GAAM,GACxBf,EAAOgP,MAAM6F,IAAKjR,EAAI7C,EAAM,CAC3BumB,WAAW,EACX/X,QAAS,SAAUP,GAClB,IAAIouB,EAAU5S,EACb6S,EAAQhF,EAAS/f,IAAKvc,KAAMgF,GAE7B,GAAyB,EAAlBiO,EAAMsuB,WAAmBvhC,KAAMgF,IAKrC,GAAMs8B,EAAM78B,QAuCER,EAAOgP,MAAMC,QAASlO,IAAU,CAAC,GAAIqO,cAClDJ,EAAMtN,uBArBN,GAdA27B,EAAQ/rB,EAAMxV,KAAM2T,WACpB4oB,EAASxgB,IAAK9b,KAAMgF,EAAMs8B,GAK1BD,EAAWN,EAAY/gC,KAAMgF,GAC7BhF,KAAMgF,KAEDs8B,KADL7S,EAAS6N,EAAS/f,IAAKvc,KAAMgF,KACJq8B,EACxB/E,EAASxgB,IAAK9b,KAAMgF,GAAM,GAE1BypB,EAAS,CAAC,EAEN6S,IAAU7S,EAWd,OARAxb,EAAMuuB,2BACNvuB,EAAMvN,iBAOC+oB,GAAUA,EAAO1nB,WAefu6B,EAAM78B,SAGjB63B,EAASxgB,IAAK9b,KAAMgF,EAAM,CACzB+B,MAAO9C,EAAOgP,MAAMxP,QAInBQ,EAAOxD,OAAQ6gC,EAAO,GAAKr9B,EAAOT,MAAM7D,WACxC2hC,EAAM/rB,MAAO,GACbvV,QAKFiT,EAAMuuB,2BAER,UAjFkC1uB,IAA7BwpB,EAAS/f,IAAK1U,EAAI7C,IACtBf,EAAOgP,MAAM6F,IAAKjR,EAAI7C,EAAM67B,GAkF/B,CA9fA58B,EAAOgP,MAAQ,CAEd+M,OAAQ,CAAC,EAETlH,IAAK,SAAU0K,EAAM0d,EAAO1tB,EAAS7R,EAAM0C,GAE1C,IAAIo9B,EAAaC,EAAarV,EAC7BsV,EAAQzpB,EAAG3E,EACXL,EAAS0uB,EAAU58B,EAAM68B,EAAYC,EACrCC,EAAWzF,EAAS/f,IAAKiH,GAG1B,GAAMsY,EAAYtY,GAuClB,IAlCKhQ,EAAQA,UAEZA,GADAiuB,EAAcjuB,GACQA,QACtBnP,EAAWo9B,EAAYp9B,UAKnBA,GACJJ,EAAOpD,KAAK0rB,gBAAiBnnB,GAAiBf,GAIzCmP,EAAQ2R,OACb3R,EAAQ2R,KAAOlhB,EAAOkhB,SAIfwc,EAASI,EAASJ,UACzBA,EAASI,EAASJ,OAASlgB,OAAOugB,OAAQ,QAEnCN,EAAcK,EAASzuB,UAC9BouB,EAAcK,EAASzuB,OAAS,SAAU/P,GAIzC,OAAwCU,EAAOgP,MAAMgvB,YAAc1+B,EAAEyB,KACpEf,EAAOgP,MAAMivB,SAASzuB,MAAO+P,EAAM9P,gBAAcZ,CACnD,GAKDoF,GADAgpB,GAAUA,GAAS,IAAKt6B,MAAO0vB,IAAmB,CAAE,KAC1C7xB,OACFyT,KAEPlT,EAAO88B,GADPzV,EAAMuU,GAAelX,KAAMwX,EAAOhpB,KAAS,IACpB,GACvB2pB,GAAexV,EAAK,IAAO,IAAKtgB,MAAO,KAAM2J,OAGvC1Q,IAKNkO,EAAUjP,EAAOgP,MAAMC,QAASlO,IAAU,CAAC,EAG3CA,GAASX,EAAW6O,EAAQG,aAAeH,EAAQE,WAAcpO,EAGjEkO,EAAUjP,EAAOgP,MAAMC,QAASlO,IAAU,CAAC,EAG3CuO,EAAYtP,EAAOxD,OAAQ,CAC1BuE,KAAMA,EACN88B,SAAUA,EACVngC,KAAMA,EACN6R,QAASA,EACT2R,KAAM3R,EAAQ2R,KACd9gB,SAAUA,EACVswB,aAActwB,GAAYJ,EAAOqpB,KAAK1mB,MAAM+tB,aAAapwB,KAAMF,GAC/DknB,UAAWsW,EAAWzpB,KAAM,MAC1BqpB,IAGKG,EAAWD,EAAQ38B,OAC1B48B,EAAWD,EAAQ38B,GAAS,IACnBm9B,cAAgB,EAGnBjvB,EAAQkvB,QACiD,IAA9DlvB,EAAQkvB,MAAMriC,KAAMyjB,EAAM7hB,EAAMkgC,EAAYH,IAEvCle,EAAKoI,kBACTpI,EAAKoI,iBAAkB5mB,EAAM08B,IAK3BxuB,EAAQ4F,MACZ5F,EAAQ4F,IAAI/Y,KAAMyjB,EAAMjQ,GAElBA,EAAUC,QAAQ2R,OACvB5R,EAAUC,QAAQ2R,KAAO3R,EAAQ2R,OAK9B9gB,EACJu9B,EAAS7d,OAAQ6d,EAASO,gBAAiB,EAAG5uB,GAE9CquB,EAAS1sB,KAAM3B,GAIhBtP,EAAOgP,MAAM+M,OAAQhb,IAAS,EAGhC,EAGAH,OAAQ,SAAU2e,EAAM0d,EAAO1tB,EAASnP,EAAUg+B,GAEjD,IAAIj6B,EAAGk6B,EAAWjW,EACjBsV,EAAQzpB,EAAG3E,EACXL,EAAS0uB,EAAU58B,EAAM68B,EAAYC,EACrCC,EAAWzF,EAASD,QAAS7Y,IAAU8Y,EAAS/f,IAAKiH,GAEtD,GAAMue,IAAeJ,EAASI,EAASJ,QAAvC,CAOA,IADAzpB,GADAgpB,GAAUA,GAAS,IAAKt6B,MAAO0vB,IAAmB,CAAE,KAC1C7xB,OACFyT,KAMP,GAJAlT,EAAO88B,GADPzV,EAAMuU,GAAelX,KAAMwX,EAAOhpB,KAAS,IACpB,GACvB2pB,GAAexV,EAAK,IAAO,IAAKtgB,MAAO,KAAM2J,OAGvC1Q,EAAN,CAeA,IARAkO,EAAUjP,EAAOgP,MAAMC,QAASlO,IAAU,CAAC,EAE3C48B,EAAWD,EADX38B,GAASX,EAAW6O,EAAQG,aAAeH,EAAQE,WAAcpO,IACpC,GAC7BqnB,EAAMA,EAAK,IACV,IAAIrlB,OAAQ,UAAY66B,EAAWzpB,KAAM,iBAAoB,WAG9DkqB,EAAYl6B,EAAIw5B,EAASn9B,OACjB2D,KACPmL,EAAYquB,EAAUx5B,IAEfi6B,GAAeP,IAAavuB,EAAUuuB,UACzCtuB,GAAWA,EAAQ2R,OAAS5R,EAAU4R,MACtCkH,IAAOA,EAAI9nB,KAAMgP,EAAUgY,YAC3BlnB,GAAYA,IAAakP,EAAUlP,WACxB,OAAbA,IAAqBkP,EAAUlP,YAChCu9B,EAAS7d,OAAQ3b,EAAG,GAEfmL,EAAUlP,UACdu9B,EAASO,gBAELjvB,EAAQrO,QACZqO,EAAQrO,OAAO9E,KAAMyjB,EAAMjQ,IAOzB+uB,IAAcV,EAASn9B,SACrByO,EAAQqvB,WACkD,IAA/DrvB,EAAQqvB,SAASxiC,KAAMyjB,EAAMqe,EAAYE,EAASzuB,SAElDrP,EAAOu+B,YAAahf,EAAMxe,EAAM+8B,EAASzuB,eAGnCquB,EAAQ38B,GAtChB,MAJC,IAAMA,KAAQ28B,EACb19B,EAAOgP,MAAMpO,OAAQ2e,EAAMxe,EAAOk8B,EAAOhpB,GAAK1E,EAASnP,GAAU,GA8C/DJ,EAAOygB,cAAeid,IAC1BrF,EAASz3B,OAAQ2e,EAAM,gBA5DxB,CA8DD,EAEA0e,SAAU,SAAUO,GAEnB,IAAIx7B,EAAGmB,EAAGib,EAAKsM,EAASpc,EAAWmvB,EAClCppB,EAAO,IAAI5Z,MAAOgU,UAAUjP,QAG5BwO,EAAQhP,EAAOgP,MAAM0vB,IAAKF,GAE1Bb,GACCtF,EAAS/f,IAAKvc,KAAM,WAAcyhB,OAAOugB,OAAQ,OAC/C/uB,EAAMjO,OAAU,GACnBkO,EAAUjP,EAAOgP,MAAMC,QAASD,EAAMjO,OAAU,CAAC,EAKlD,IAFAsU,EAAM,GAAMrG,EAENhM,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAClCqS,EAAMrS,GAAMyM,UAAWzM,GAMxB,GAHAgM,EAAM2vB,eAAiB5iC,MAGlBkT,EAAQ2vB,cAA2D,IAA5C3vB,EAAQ2vB,YAAY9iC,KAAMC,KAAMiT,GAA5D,CASA,IAJAyvB,EAAez+B,EAAOgP,MAAM2uB,SAAS7hC,KAAMC,KAAMiT,EAAO2uB,GAGxD36B,EAAI,GACM0oB,EAAU+S,EAAcz7B,QAAYgM,EAAM6vB,wBAInD,IAHA7vB,EAAMhG,cAAgB0iB,EAAQnM,KAE9Bpb,EAAI,GACMmL,EAAYoc,EAAQiS,SAAUx5B,QACtC6K,EAAM8vB,iCAID9vB,EAAM+vB,aAAsC,IAAxBzvB,EAAUgY,YACnCtY,EAAM+vB,WAAWz+B,KAAMgP,EAAUgY,aAEjCtY,EAAMM,UAAYA,EAClBN,EAAMtR,KAAO4R,EAAU5R,UAKVmR,KAHbuQ,IAAUpf,EAAOgP,MAAMC,QAASK,EAAUuuB,WAAc,CAAC,GAAIxuB,QAC5DC,EAAUC,SAAUC,MAAOkc,EAAQnM,KAAMlK,MAGT,KAAzBrG,EAAMwb,OAASpL,KACrBpQ,EAAMvN,iBACNuN,EAAMtN,oBAYX,OAJKuN,EAAQ+vB,cACZ/vB,EAAQ+vB,aAAaljC,KAAMC,KAAMiT,GAG3BA,EAAMwb,MAxCb,CAyCD,EAEAmT,SAAU,SAAU3uB,EAAO2uB,GAC1B,IAAI36B,EAAGsM,EAAWia,EAAK0V,EAAiBC,EACvCT,EAAe,GACfP,EAAgBP,EAASO,cACzBtX,EAAM5X,EAAMtS,OAGb,GAAKwhC,GAIJtX,EAAI7I,YAOc,UAAf/O,EAAMjO,MAAoBiO,EAAMmwB,QAAU,GAE7C,KAAQvY,IAAQ7qB,KAAM6qB,EAAMA,EAAItiB,YAAcvI,KAI7C,GAAsB,IAAjB6qB,EAAI7I,WAAoC,UAAf/O,EAAMjO,OAAqC,IAAjB6lB,EAAI7B,UAAsB,CAGjF,IAFAka,EAAkB,GAClBC,EAAmB,CAAC,EACdl8B,EAAI,EAAGA,EAAIk7B,EAAel7B,SAME6L,IAA5BqwB,EAFL3V,GAHAja,EAAYquB,EAAU36B,IAGN5C,SAAW,OAG1B8+B,EAAkB3V,GAAQja,EAAUohB,aACnC1wB,EAAQupB,EAAKxtB,MAAO6F,MAAOglB,IAAS,EACpC5mB,EAAOpD,KAAM2sB,EAAKxtB,KAAM,KAAM,CAAE6qB,IAAQpmB,QAErC0+B,EAAkB3V,IACtB0V,EAAgBhuB,KAAM3B,GAGnB2vB,EAAgBz+B,QACpBi+B,EAAaxtB,KAAM,CAAEsO,KAAMqH,EAAK+W,SAAUsB,GAE5C,CAUF,OALArY,EAAM7qB,KACDmiC,EAAgBP,EAASn9B,QAC7Bi+B,EAAaxtB,KAAM,CAAEsO,KAAMqH,EAAK+W,SAAUA,EAASrsB,MAAO4sB,KAGpDO,CACR,EAEAW,QAAS,SAAUxwB,EAAMywB,GACxB7hB,OAAOya,eAAgBj4B,EAAOT,MAAM7D,UAAWkT,EAAM,CACpD0wB,YAAY,EACZpH,cAAc,EAEd5f,IAAK/Q,EAAY83B,GAChB,WACC,GAAKtjC,KAAKwjC,cACT,OAAOF,EAAMtjC,KAAKwjC,cAEpB,EACA,WACC,GAAKxjC,KAAKwjC,cACT,OAAOxjC,KAAKwjC,cAAe3wB,EAE7B,EAEDiJ,IAAK,SAAU/U,GACd0a,OAAOya,eAAgBl8B,KAAM6S,EAAM,CAClC0wB,YAAY,EACZpH,cAAc,EACdsH,UAAU,EACV18B,MAAOA,GAET,GAEF,EAEA47B,IAAK,SAAUa,GACd,OAAOA,EAAev/B,EAAOkgB,SAC5Bqf,EACA,IAAIv/B,EAAOT,MAAOggC,EACpB,EAEAtwB,QAAS,CACRwwB,KAAM,CAGLC,UAAU,GAEXl4B,MAAO,CAGN22B,MAAO,SAAUzgC,GAIhB,IAAIkG,EAAK7H,MAAQ2B,EAWjB,OARKk9B,GAAet6B,KAAMsD,EAAG7C,OAC5B6C,EAAG4D,OAASlF,EAAUsB,EAAI,UAG1Bu5B,GAAgBv5B,EAAI,QAASg5B,KAIvB,CACR,EACAp9B,QAAS,SAAU9B,GAIlB,IAAIkG,EAAK7H,MAAQ2B,EAUjB,OAPKk9B,GAAet6B,KAAMsD,EAAG7C,OAC5B6C,EAAG4D,OAASlF,EAAUsB,EAAI,UAE1Bu5B,GAAgBv5B,EAAI,UAId,CACR,EAIA23B,SAAU,SAAUvsB,GACnB,IAAItS,EAASsS,EAAMtS,OACnB,OAAOk+B,GAAet6B,KAAM5D,EAAOqE,OAClCrE,EAAO8K,OAASlF,EAAU5F,EAAQ,UAClC27B,EAAS/f,IAAK5b,EAAQ,UACtB4F,EAAU5F,EAAQ,IACpB,GAGDijC,aAAc,CACbX,aAAc,SAAUhwB,QAIDH,IAAjBG,EAAMwb,QAAwBxb,EAAMuwB,gBACxCvwB,EAAMuwB,cAAcK,YAAc5wB,EAAMwb,OAE1C,KAkGHxqB,EAAOu+B,YAAc,SAAUhf,EAAMxe,EAAMsO,GAGrCkQ,EAAKoX,qBACTpX,EAAKoX,oBAAqB51B,EAAMsO,EAElC,GAEArP,EAAOT,MAAQ,SAAU4e,EAAKxS,GAG7B,KAAQ5P,gBAAgBiE,EAAOT,OAC9B,OAAO,IAAIS,EAAOT,MAAO4e,EAAKxS,GAI1BwS,GAAOA,EAAIpd,MACfhF,KAAKwjC,cAAgBphB,EACrBpiB,KAAKgF,KAAOod,EAAIpd,KAIhBhF,KAAK0D,mBAAqB0e,EAAI0hB,uBACHhxB,IAAzBsP,EAAI0hB,mBAGgB,IAApB1hB,EAAIyhB,YACLhD,GACAC,GAKD9gC,KAAKW,OAAWyhB,EAAIzhB,QAAkC,IAAxByhB,EAAIzhB,OAAOqhB,SACxCI,EAAIzhB,OAAO4H,WACX6Z,EAAIzhB,OAELX,KAAKiN,cAAgBmV,EAAInV,cACzBjN,KAAK8E,cAAgBsd,EAAItd,eAIzB9E,KAAKgF,KAAOod,EAIRxS,GACJ3L,EAAOxD,OAAQT,KAAM4P,GAItB5P,KAAK+jC,UAAY3hB,GAAOA,EAAI2hB,WAAa9pB,KAAK+pB,MAG9ChkC,KAAMiE,EAAOkgB,UAAY,CAC1B,GAIaxkB,UAAY,CACxBiM,YAAa3H,EAAOT,MACpBE,mBAAoBo9B,GACpBgC,qBAAsBhC,GACtBiC,8BAA+BjC,GAC/BmD,aAAa,EAEbv+B,eAAgB,WACf,IAAInC,EAAIvD,KAAKwjC,cAEbxjC,KAAK0D,mBAAqBm9B,GAErBt9B,IAAMvD,KAAKikC,aACf1gC,EAAEmC,gBAEJ,EACAC,gBAAiB,WAChB,IAAIpC,EAAIvD,KAAKwjC,cAEbxjC,KAAK8iC,qBAAuBjC,GAEvBt9B,IAAMvD,KAAKikC,aACf1gC,EAAEoC,iBAEJ,EACA67B,yBAA0B,WACzB,IAAIj+B,EAAIvD,KAAKwjC,cAEbxjC,KAAK+iC,8BAAgClC,GAEhCt9B,IAAMvD,KAAKikC,aACf1gC,EAAEi+B,2BAGHxhC,KAAK2F,iBACN,GAID1B,EAAOxC,KAAM,CACZyiC,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZC,gBAAgB,EAChBpjB,SAAS,EACTqjB,QAAQ,EACRC,YAAY,EACZvjB,SAAS,EACTwjB,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,MAAM,EACN,MAAQ,EACR56B,MAAM,EACN66B,UAAU,EACV93B,KAAK,EACL+3B,SAAS,EACTzB,QAAQ,EACR0B,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,SAAS,EACTC,WAAW,EACXC,aAAa,EACbC,SAAS,EACTC,SAAS,EACTC,eAAe,EACfC,WAAW,EACXC,SAAS,EACT7gC,OAAO,GACLX,EAAOgP,MAAMowB,SAEhBp/B,EAAOxC,KAAM,CAAEkK,MAAO,UAAW+5B,KAAM,aAAc,SAAU1gC,EAAMqO,GACpEpP,EAAOgP,MAAMC,QAASlO,GAAS,CAG9Bo9B,MAAO,WAQN,OAHAhB,GAAgBphC,KAAMgF,EAAM+7B,KAGrB,CACR,EACAt9B,QAAS,WAMR,OAHA29B,GAAgBphC,KAAMgF,IAGf,CACR,EAIAw6B,SAAU,SAAUvsB,GACnB,OAAOqpB,EAAS/f,IAAKtJ,EAAMtS,OAAQqE,EACpC,EAEAqO,aAAcA,EAEhB,IAUApP,EAAOxC,KAAM,CACZkkC,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,eACZ,SAAUC,EAAMpD,GAClB1+B,EAAOgP,MAAMC,QAAS6yB,GAAS,CAC9B1yB,aAAcsvB,EACdvvB,SAAUuvB,EAEVrvB,OAAQ,SAAUL,GACjB,IAAIoQ,EACH1iB,EAASX,KACTgmC,EAAU/yB,EAAMnO,cAChByO,EAAYN,EAAMM,UASnB,OALMyyB,IAAaA,IAAYrlC,GAAWsD,EAAOiB,SAAUvE,EAAQqlC,MAClE/yB,EAAMjO,KAAOuO,EAAUuuB,SACvBze,EAAM9P,EAAUC,QAAQC,MAAOzT,KAAM0T,WACrCT,EAAMjO,KAAO29B,GAEPtf,CACR,EAEF,IAEApf,EAAOJ,GAAGpD,OAAQ,CAEjBM,GAAI,SAAUmgC,EAAO78B,EAAU1C,EAAMkC,GACpC,OAAO9C,GAAIf,KAAMkhC,EAAO78B,EAAU1C,EAAMkC,EACzC,EACAuL,IAAK,SAAU8xB,EAAO78B,EAAU1C,EAAMkC,GACrC,OAAO9C,GAAIf,KAAMkhC,EAAO78B,EAAU1C,EAAMkC,EAAI,EAC7C,EACAqO,IAAK,SAAUgvB,EAAO78B,EAAUR,GAC/B,IAAI0P,EAAWvO,EACf,GAAKk8B,GAASA,EAAMx7B,gBAAkBw7B,EAAM3tB,UAW3C,OARAA,EAAY2tB,EAAM3tB,UAClBtP,EAAQi9B,EAAM0B,gBAAiB1wB,IAC9BqB,EAAUgY,UACThY,EAAUuuB,SAAW,IAAMvuB,EAAUgY,UACrChY,EAAUuuB,SACXvuB,EAAUlP,SACVkP,EAAUC,SAEJxT,KAER,GAAsB,iBAAVkhC,EAAqB,CAGhC,IAAMl8B,KAAQk8B,EACblhC,KAAKkS,IAAKlN,EAAMX,EAAU68B,EAAOl8B,IAElC,OAAOhF,IACR,CAUA,OATkB,IAAbqE,GAA0C,mBAAbA,IAGjCR,EAAKQ,EACLA,OAAWyO,IAEA,IAAPjP,IACJA,EAAKi9B,IAEC9gC,KAAKyB,MAAM,WACjBwC,EAAOgP,MAAMpO,OAAQ7E,KAAMkhC,EAAOr9B,EAAIQ,EACvC,GACD,IAID,IAKC4hC,GAAe,wBAGfC,GAAW,oCAEXC,GAAe,6BAGhB,SAASC,GAAoB5iB,EAAM4S,GAClC,OAAK7vB,EAAUid,EAAM,UACpBjd,EAA+B,KAArB6vB,EAAQpU,SAAkBoU,EAAUA,EAAQtI,WAAY,OAE3D7pB,EAAQuf,GAAO8R,SAAU,SAAW,IAGrC9R,CACR,CAGA,SAAS6iB,GAAe7iB,GAEvB,OADAA,EAAKxe,MAAyC,OAAhCwe,EAAKb,aAAc,SAAsB,IAAMa,EAAKxe,KAC3Dwe,CACR,CACA,SAAS8iB,GAAe9iB,GAOvB,MAN2C,WAApCA,EAAKxe,MAAQ,IAAKuQ,MAAO,EAAG,GAClCiO,EAAKxe,KAAOwe,EAAKxe,KAAKuQ,MAAO,GAE7BiO,EAAKlb,gBAAiB,QAGhBkb,CACR,CAEA,SAAS+iB,GAAgBnkB,EAAKokB,GAC7B,IAAIv/B,EAAGC,EAAGlC,EAAgByhC,EAAUC,EAAU/E,EAE9C,GAAuB,IAAlB6E,EAAKxkB,SAAV,CAKA,GAAKsa,EAASD,QAASja,KAEtBuf,EADWrF,EAAS/f,IAAK6F,GACPuf,QAKjB,IAAM38B,KAFNs3B,EAASz3B,OAAQ2hC,EAAM,iBAET7E,EACb,IAAM16B,EAAI,EAAGC,EAAIy6B,EAAQ38B,GAAOP,OAAQwC,EAAIC,EAAGD,IAC9ChD,EAAOgP,MAAM6F,IAAK0tB,EAAMxhC,EAAM28B,EAAQ38B,GAAQiC,IAO7Cs1B,EAASF,QAASja,KACtBqkB,EAAWlK,EAAStB,OAAQ7Y,GAC5BskB,EAAWziC,EAAOxD,OAAQ,CAAC,EAAGgmC,GAE9BlK,EAASzgB,IAAK0qB,EAAME,GAvBrB,CAyBD,CAGA,SAASC,GAAUvkB,EAAKokB,GACvB,IAAIjgC,EAAWigC,EAAKjgC,SAASC,cAGX,UAAbD,GAAwBs4B,GAAet6B,KAAM6d,EAAIpd,MACrDwhC,EAAKlW,QAAUlO,EAAIkO,QAGK,UAAb/pB,GAAqC,aAAbA,IACnCigC,EAAKrS,aAAe/R,EAAI+R,aAE1B,CAEA,SAASyS,GAAUC,EAAYvtB,EAAM9I,EAAU6vB,GAG9C/mB,EAAO1Z,EAAM0Z,GAEb,IAAIknB,EAAU/c,EAAO0c,EAAS2G,EAAYtkB,EAAMC,EAC/Cxb,EAAI,EACJC,EAAI2/B,EAAWpiC,OACfsiC,EAAW7/B,EAAI,EACfH,EAAQuS,EAAM,GACd0tB,EAAkBx7B,EAAYzE,GAG/B,GAAKigC,GACD9/B,EAAI,GAAsB,iBAAVH,IAChBmI,EAAQ+vB,YAAciH,GAAS3hC,KAAMwC,GACxC,OAAO8/B,EAAWplC,MAAM,SAAUoE,GACjC,IAAImH,EAAO65B,EAAW/gC,GAAID,GACrBmhC,IACJ1tB,EAAM,GAAMvS,EAAMhH,KAAMC,KAAM6F,EAAOmH,EAAK3D,SAE3Cu9B,GAAU55B,EAAMsM,EAAM9I,EAAU6vB,EACjC,IAGD,GAAKn5B,IAEJuc,GADA+c,EAAWN,GAAe5mB,EAAMutB,EAAY,GAAIt5B,eAAe,EAAOs5B,EAAYxG,IACjEvS,WAEmB,IAA/B0S,EAASrX,WAAW1kB,SACxB+7B,EAAW/c,GAIPA,GAAS4c,GAAU,CAOvB,IALAyG,GADA3G,EAAUl8B,EAAO2D,IAAK63B,GAAQe,EAAU,UAAY6F,KAC/B5hC,OAKbwC,EAAIC,EAAGD,IACdub,EAAOge,EAEFv5B,IAAM8/B,IACVvkB,EAAOve,EAAO4U,MAAO2J,GAAM,GAAM,GAG5BskB,GAIJ7iC,EAAOqf,MAAO6c,EAASV,GAAQjd,EAAM,YAIvChS,EAASzQ,KAAM8mC,EAAY5/B,GAAKub,EAAMvb,GAGvC,GAAK6/B,EAOJ,IANArkB,EAAM0d,EAASA,EAAQ17B,OAAS,GAAI8I,cAGpCtJ,EAAO2D,IAAKu4B,EAASmG,IAGfr/B,EAAI,EAAGA,EAAI6/B,EAAY7/B,IAC5Bub,EAAO2d,EAASl5B,GACX83B,GAAYx6B,KAAMie,EAAKxd,MAAQ,MAClCs3B,EAASrB,OAAQzY,EAAM,eACxBve,EAAOiB,SAAUud,EAAKD,KAEjBA,EAAKJ,KAA8C,YAArCI,EAAKxd,MAAQ,IAAKwB,cAG/BvC,EAAOgjC,WAAazkB,EAAKF,UAC7Bre,EAAOgjC,SAAUzkB,EAAKJ,IAAK,CAC1BC,MAAOG,EAAKH,OAASG,EAAKG,aAAc,UACtCF,GASJF,EAASC,EAAKqL,YAAYlqB,QAASwiC,GAAc,IAAM3jB,EAAMC,GAKlE,CAGD,OAAOokB,CACR,CAEA,SAAShiC,GAAQ2e,EAAMnf,EAAU6iC,GAKhC,IAJA,IAAI1kB,EACHie,EAAQp8B,EAAWJ,EAAO6C,OAAQzC,EAAUmf,GAASA,EACrDvc,EAAI,EAE4B,OAAvBub,EAAOie,EAAOx5B,IAAeA,IAChCigC,GAA8B,IAAlB1kB,EAAKR,UACtB/d,EAAOkjC,UAAW1H,GAAQjd,IAGtBA,EAAKja,aACJ2+B,GAAYxJ,GAAYlb,IAC5Bkd,GAAeD,GAAQjd,EAAM,WAE9BA,EAAKja,WAAWC,YAAaga,IAI/B,OAAOgB,CACR,CAEAvf,EAAOxD,OAAQ,CACdigC,cAAe,SAAUr3B,GACxB,OAAOA,CACR,EAEAwP,MAAO,SAAU2K,EAAM4jB,EAAeC,GACrC,IAAIpgC,EAAGC,EAAGogC,EAAaC,EACtB1uB,EAAQ2K,EAAK0b,WAAW,GACxBsI,EAAS9J,GAAYla,GAGtB,KAAMtU,EAAQiwB,gBAAsC,IAAlB3b,EAAKxB,UAAoC,KAAlBwB,EAAKxB,UAC3D/d,EAAOowB,SAAU7Q,IAMnB,IAHA+jB,EAAe9H,GAAQ5mB,GAGjB5R,EAAI,EAAGC,GAFbogC,EAAc7H,GAAQjc,IAEO/e,OAAQwC,EAAIC,EAAGD,IAC3C0/B,GAAUW,EAAargC,GAAKsgC,EAActgC,IAK5C,GAAKmgC,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAe7H,GAAQjc,GACrC+jB,EAAeA,GAAgB9H,GAAQ5mB,GAEjC5R,EAAI,EAAGC,EAAIogC,EAAY7iC,OAAQwC,EAAIC,EAAGD,IAC3Cs/B,GAAgBe,EAAargC,GAAKsgC,EAActgC,SAGjDs/B,GAAgB/iB,EAAM3K,GAWxB,OANA0uB,EAAe9H,GAAQ5mB,EAAO,WACZpU,OAAS,GAC1Bi7B,GAAe6H,GAAeC,GAAU/H,GAAQjc,EAAM,WAIhD3K,CACR,EAEAsuB,UAAW,SAAU/jB,GAKpB,IAJA,IAAIzhB,EAAM6hB,EAAMxe,EACfkO,EAAUjP,EAAOgP,MAAMC,QACvBjM,EAAI,OAE6B6L,KAAxB0Q,EAAOJ,EAAOnc,IAAqBA,IAC5C,GAAK60B,EAAYtY,GAAS,CACzB,GAAO7hB,EAAO6hB,EAAM8Y,EAASnY,SAAc,CAC1C,GAAKxiB,EAAKggC,OACT,IAAM38B,KAAQrD,EAAKggC,OACbzuB,EAASlO,GACbf,EAAOgP,MAAMpO,OAAQ2e,EAAMxe,GAI3Bf,EAAOu+B,YAAahf,EAAMxe,EAAMrD,EAAK2R,QAOxCkQ,EAAM8Y,EAASnY,cAAYrR,CAC5B,CACK0Q,EAAM+Y,EAASpY,WAInBX,EAAM+Y,EAASpY,cAAYrR,EAE7B,CAEF,IAGD7O,EAAOJ,GAAGpD,OAAQ,CACjBsN,OAAQ,SAAU1J,GACjB,OAAOQ,GAAQ7E,KAAMqE,GAAU,EAChC,EAEAQ,OAAQ,SAAUR,GACjB,OAAOQ,GAAQ7E,KAAMqE,EACtB,EAEAkM,KAAM,SAAUxJ,GACf,OAAOk0B,EAAQj7B,MAAM,SAAU+G,GAC9B,YAAiB+L,IAAV/L,EACN9C,EAAOsM,KAAMvQ,MACbA,KAAK+3B,QAAQt2B,MAAM,WACK,IAAlBzB,KAAKgiB,UAAoC,KAAlBhiB,KAAKgiB,UAAqC,IAAlBhiB,KAAKgiB,WACxDhiB,KAAK6tB,YAAc9mB,EAErB,GACF,GAAG,KAAMA,EAAO2M,UAAUjP,OAC3B,EAEAgjC,OAAQ,WACP,OAAOb,GAAU5mC,KAAM0T,WAAW,SAAU8P,GACpB,IAAlBxjB,KAAKgiB,UAAoC,KAAlBhiB,KAAKgiB,UAAqC,IAAlBhiB,KAAKgiB,UAC3CokB,GAAoBpmC,KAAMwjB,GAChCzP,YAAayP,EAEtB,GACD,EAEAkkB,QAAS,WACR,OAAOd,GAAU5mC,KAAM0T,WAAW,SAAU8P,GAC3C,GAAuB,IAAlBxjB,KAAKgiB,UAAoC,KAAlBhiB,KAAKgiB,UAAqC,IAAlBhiB,KAAKgiB,SAAiB,CACzE,IAAIrhB,EAASylC,GAAoBpmC,KAAMwjB,GACvC7iB,EAAOgnC,aAAcnkB,EAAM7iB,EAAOmtB,WACnC,CACD,GACD,EAEA8Z,OAAQ,WACP,OAAOhB,GAAU5mC,KAAM0T,WAAW,SAAU8P,GACtCxjB,KAAKuI,YACTvI,KAAKuI,WAAWo/B,aAAcnkB,EAAMxjB,KAEtC,GACD,EAEA6nC,MAAO,WACN,OAAOjB,GAAU5mC,KAAM0T,WAAW,SAAU8P,GACtCxjB,KAAKuI,YACTvI,KAAKuI,WAAWo/B,aAAcnkB,EAAMxjB,KAAK+qB,YAE3C,GACD,EAEAgN,MAAO,WAIN,IAHA,IAAIvU,EACHvc,EAAI,EAE2B,OAAtBuc,EAAOxjB,KAAMiH,IAAeA,IACd,IAAlBuc,EAAKxB,WAGT/d,EAAOkjC,UAAW1H,GAAQjc,GAAM,IAGhCA,EAAKqK,YAAc,IAIrB,OAAO7tB,IACR,EAEA6Y,MAAO,SAAUuuB,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDrnC,KAAK4H,KAAK,WAChB,OAAO3D,EAAO4U,MAAO7Y,KAAMonC,EAAeC,EAC3C,GACD,EAEAh+B,KAAM,SAAUtC,GACf,OAAOk0B,EAAQj7B,MAAM,SAAU+G,GAC9B,IAAIyc,EAAOxjB,KAAM,IAAO,CAAC,EACxBiH,EAAI,EACJC,EAAIlH,KAAKyE,OAEV,QAAeqO,IAAV/L,GAAyC,IAAlByc,EAAKxB,SAChC,OAAOwB,EAAK9b,UAIb,GAAsB,iBAAVX,IAAuBk/B,GAAa1hC,KAAMwC,KACpDq4B,IAAWN,GAASpV,KAAM3iB,IAAW,CAAE,GAAI,KAAQ,GAAIP,eAAkB,CAE1EO,EAAQ9C,EAAOy8B,cAAe35B,GAE9B,IACC,KAAQE,EAAIC,EAAGD,IAIS,KAHvBuc,EAAOxjB,KAAMiH,IAAO,CAAC,GAGX+a,WACT/d,EAAOkjC,UAAW1H,GAAQjc,GAAM,IAChCA,EAAK9b,UAAYX,GAInByc,EAAO,CAGO,CAAb,MAAQjgB,GAAK,CAChB,CAEKigB,GACJxjB,KAAK+3B,QAAQ0P,OAAQ1gC,EAEvB,GAAG,KAAMA,EAAO2M,UAAUjP,OAC3B,EAEAqjC,YAAa,WACZ,IAAIzH,EAAU,GAGd,OAAOuG,GAAU5mC,KAAM0T,WAAW,SAAU8P,GAC3C,IAAI9e,EAAS1E,KAAKuI,WAEbtE,EAAOwC,QAASzG,KAAMqgC,GAAY,IACtCp8B,EAAOkjC,UAAW1H,GAAQz/B,OACrB0E,GACJA,EAAOqjC,aAAcvkB,EAAMxjB,MAK9B,GAAGqgC,EACJ,IAGDp8B,EAAOxC,KAAM,CACZyM,SAAU,SACV85B,UAAW,UACXL,aAAc,SACdpiC,YAAa,QACb0iC,WAAY,gBACV,SAAUp1B,EAAMq1B,GAClBjkC,EAAOJ,GAAIgP,GAAS,SAAUxO,GAO7B,IANA,IAAI+e,EACHC,EAAM,GACN8kB,EAASlkC,EAAQI,GACjBqf,EAAOykB,EAAO1jC,OAAS,EACvBwC,EAAI,EAEGA,GAAKyc,EAAMzc,IAClBmc,EAAQnc,IAAMyc,EAAO1jB,KAAOA,KAAK6Y,OAAO,GACxC5U,EAAQkkC,EAAQlhC,IAAOihC,GAAY9kB,GAInClO,EAAKzB,MAAO4P,EAAKD,EAAM7G,OAGxB,OAAOvc,KAAKmjB,UAAWE,EACxB,CACD,IACA,IAAI+kB,GAAY,IAAIphC,OAAQ,KAAOs2B,GAAO,kBAAmB,KAEzD+K,GAAc,MAGdC,GAAY,SAAU9kB,GAKxB,IAAImhB,EAAOnhB,EAAKjW,cAAcoe,YAM9B,OAJMgZ,GAASA,EAAK4D,SACnB5D,EAAO5iC,GAGD4iC,EAAK6D,iBAAkBhlB,EAC/B,EAEGilB,GAAO,SAAUjlB,EAAMhjB,EAASgQ,GACnC,IAAI6S,EAAKxQ,EACRjP,EAAM,CAAC,EAGR,IAAMiP,KAAQrS,EACboD,EAAKiP,GAAS2Q,EAAKzQ,MAAOF,GAC1B2Q,EAAKzQ,MAAOF,GAASrS,EAASqS,GAM/B,IAAMA,KAHNwQ,EAAM7S,EAASzQ,KAAMyjB,GAGPhjB,EACbgjB,EAAKzQ,MAAOF,GAASjP,EAAKiP,GAG3B,OAAOwQ,CACR,EAGIqlB,GAAY,IAAI1hC,OAAQy2B,GAAUrlB,KAAM,KAAO,KAK/CuwB,GAAW,IAAI3hC,OAClB,uEACA,KAmJD,SAAS4hC,GAAQplB,EAAM3Q,EAAMg2B,GAC5B,IAAIj6B,EAAOk6B,EAAUC,EAAU1lB,EAC9B2lB,EAAeX,GAAY9jC,KAAMsO,GAMjCE,EAAQyQ,EAAKzQ,MAgDd,OA9CA81B,EAAWA,GAAYP,GAAW9kB,MAMjCH,EAAMwlB,EAASI,iBAAkBp2B,IAAUg2B,EAAUh2B,GAGhDm2B,IAOJ3lB,EAAMA,EAAI1f,QAASglC,GAAU,OAGjB,KAARtlB,GAAeqa,GAAYla,KAC/BH,EAAMpf,EAAO8O,MAAOyQ,EAAM3Q,KAQrB3D,EAAQg6B,kBAAoBd,GAAU7jC,KAAM8e,IAASqlB,GAAUnkC,KAAMsO,KAG1EjE,EAAQmE,EAAMnE,MACdk6B,EAAW/1B,EAAM+1B,SACjBC,EAAWh2B,EAAMg2B,SAGjBh2B,EAAM+1B,SAAW/1B,EAAMg2B,SAAWh2B,EAAMnE,MAAQyU,EAChDA,EAAMwlB,EAASj6B,MAGfmE,EAAMnE,MAAQA,EACdmE,EAAM+1B,SAAWA,EACjB/1B,EAAMg2B,SAAWA,SAIJj2B,IAARuQ,EAINA,EAAM,GACNA,CACF,CAGA,SAAS8lB,GAAcC,EAAaC,GAGnC,MAAO,CACN9sB,IAAK,WACJ,IAAK6sB,IASL,OAASppC,KAAKuc,IAAM8sB,GAAS51B,MAAOzT,KAAM0T,kBALlC1T,KAAKuc,GAMd,EAEF,EA/NA,WAIC,SAAS+sB,IAGR,GAAMt/B,EAAN,CAIAV,EAAUyJ,MAAMw2B,QAAU,+EAE1Bv/B,EAAI+I,MAAMw2B,QACT,4HAGDnkC,GAAgB2O,YAAazK,GAAYyK,YAAa/J,GAEtD,IAAIw/B,EAAWznC,EAAOymC,iBAAkBx+B,GACxCy/B,EAAoC,OAAjBD,EAAShnC,IAG5BknC,EAAsE,KAA9CC,EAAoBH,EAASh6B,YAIrDxF,EAAI+I,MAAMpE,MAAQ,MAClBi7B,EAA6D,KAAzCD,EAAoBH,EAAS76B,OAIjDk7B,EAAgE,KAAzCF,EAAoBH,EAAS56B,OAMpD5E,EAAI+I,MAAMzQ,SAAW,WACrBwnC,EAAiE,KAA9CH,EAAoB3/B,EAAIsE,YAAc,GAEzDlJ,GAAgBoD,YAAac,GAI7BU,EAAM,IApCN,CAqCD,CAEA,SAAS2/B,EAAoBI,GAC5B,OAAO9mC,KAAK4M,MAAOm6B,WAAYD,GAChC,CAEA,IAAIN,EAAkBI,EAAsBC,EAAkBF,EAC7DK,EAAyBP,EACzBpgC,EAAY1I,EAAS0E,cAAe,OACpC0E,EAAMpJ,EAAS0E,cAAe,OAGzB0E,EAAI+I,QAMV/I,EAAI+I,MAAMm3B,eAAiB,cAC3BlgC,EAAIk1B,WAAW,GAAOnsB,MAAMm3B,eAAiB,GAC7Ch7B,EAAQi7B,gBAA+C,gBAA7BngC,EAAI+I,MAAMm3B,eAEpCjmC,EAAOxD,OAAQyO,EAAS,CACvBk7B,kBAAmB,WAElB,OADAd,IACOO,CACR,EACAX,eAAgB,WAEf,OADAI,IACOM,CACR,EACAS,cAAe,WAEd,OADAf,IACOG,CACR,EACAa,mBAAoB,WAEnB,OADAhB,IACOI,CACR,EACAa,cAAe,WAEd,OADAjB,IACOQ,CACR,EAWAU,qBAAsB,WACrB,IAAIC,EAAOnL,EAAIoL,EAASC,EAmCxB,OAlCgC,MAA3BV,IACJQ,EAAQ7pC,EAAS0E,cAAe,SAChCg6B,EAAK1+B,EAAS0E,cAAe,MAC7BolC,EAAU9pC,EAAS0E,cAAe,OAElCmlC,EAAM13B,MAAMw2B,QAAU,2DACtBjK,EAAGvsB,MAAMw2B,QAAU,mBAKnBjK,EAAGvsB,MAAM7Q,OAAS,MAClBwoC,EAAQ33B,MAAM7Q,OAAS,MAQvBwoC,EAAQ33B,MAAM9E,QAAU,QAExB7I,GACE2O,YAAa02B,GACb12B,YAAaurB,GACbvrB,YAAa22B,GAEfC,EAAU5oC,EAAOymC,iBAAkBlJ,GACnC2K,EAA4B16B,SAAUo7B,EAAQzoC,OAAQ,IACrDqN,SAAUo7B,EAAQC,eAAgB,IAClCr7B,SAAUo7B,EAAQE,kBAAmB,MAAWvL,EAAG9wB,aAEpDpJ,GAAgBoD,YAAaiiC,IAEvBR,CACR,IAED,CA1ID,GAkOA,IAAIa,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAanqC,EAAS0E,cAAe,OAAQyN,MAC7Ci4B,GAAc,CAAC,EAkBhB,SAASC,GAAep4B,GAGvB,OAFY5O,EAAOinC,SAAUr4B,IAAUm4B,GAAan4B,KAK/CA,KAAQk4B,GACLl4B,EAEDm4B,GAAan4B,GAxBrB,SAAyBA,GAMxB,IAHA,IAAIs4B,EAAUt4B,EAAM,GAAIqM,cAAgBrM,EAAK0C,MAAO,GACnDtO,EAAI6jC,GAAYrmC,OAETwC,KAEP,IADA4L,EAAOi4B,GAAa7jC,GAAMkkC,KACbJ,GACZ,OAAOl4B,CAGV,CAY8Bu4B,CAAgBv4B,IAAUA,EACxD,CAGA,IAKCw4B,GAAe,4BACfC,GAAU,CAAEhpC,SAAU,WAAYipC,WAAY,SAAUt9B,QAAS,SACjEu9B,GAAqB,CACpBC,cAAe,IACfC,WAAY,OAGd,SAASC,GAAmB9nB,EAAO9c,EAAO0V,GAIzC,IAAIuI,EAAUwY,GAAQ9T,KAAM3iB,GAC5B,OAAOie,EAGN/hB,KAAKC,IAAK,EAAG8hB,EAAS,IAAQvI,GAAY,KAAUuI,EAAS,IAAO,MACpEje,CACF,CAEA,SAAS6kC,GAAoBpoB,EAAMpT,EAAWy7B,EAAKC,EAAaC,EAAQC,GACvE,IAAI/kC,EAAkB,UAAdmJ,EAAwB,EAAI,EACnC67B,EAAQ,EACRn8B,EAAQ,EAGT,GAAK+7B,KAAUC,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQ7kC,EAAI,EAAGA,GAAK,EAGN,WAAR4kC,IACJ/7B,GAAS7L,EAAOZ,IAAKmgB,EAAMqoB,EAAMpO,GAAWx2B,IAAK,EAAM8kC,IAIlDD,GAmBQ,YAARD,IACJ/7B,GAAS7L,EAAOZ,IAAKmgB,EAAM,UAAYia,GAAWx2B,IAAK,EAAM8kC,IAIjD,WAARF,IACJ/7B,GAAS7L,EAAOZ,IAAKmgB,EAAM,SAAWia,GAAWx2B,GAAM,SAAS,EAAM8kC,MAtBvEj8B,GAAS7L,EAAOZ,IAAKmgB,EAAM,UAAYia,GAAWx2B,IAAK,EAAM8kC,GAGhD,YAARF,EACJ/7B,GAAS7L,EAAOZ,IAAKmgB,EAAM,SAAWia,GAAWx2B,GAAM,SAAS,EAAM8kC,GAItEE,GAAShoC,EAAOZ,IAAKmgB,EAAM,SAAWia,GAAWx2B,GAAM,SAAS,EAAM8kC,IAoCzE,OAhBMD,GAAeE,GAAe,IAInCl8B,GAAS7M,KAAKC,IAAK,EAAGD,KAAK8V,KAC1ByK,EAAM,SAAWpT,EAAW,GAAI8O,cAAgB9O,EAAUmF,MAAO,IACjEy2B,EACAl8B,EACAm8B,EACA,MAIM,GAGDn8B,CACR,CAEA,SAASo8B,GAAkB1oB,EAAMpT,EAAW67B,GAG3C,IAAIF,EAASzD,GAAW9kB,GAKvBsoB,IADmB58B,EAAQk7B,qBAAuB6B,IAEE,eAAnDhoC,EAAOZ,IAAKmgB,EAAM,aAAa,EAAOuoB,GACvCI,EAAmBL,EAEnB5rC,EAAM0oC,GAAQplB,EAAMpT,EAAW27B,GAC/BK,EAAa,SAAWh8B,EAAW,GAAI8O,cAAgB9O,EAAUmF,MAAO,GAIzE,GAAK6yB,GAAU7jC,KAAMrE,GAAQ,CAC5B,IAAM+rC,EACL,OAAO/rC,EAERA,EAAM,MACP,CAwCA,QAlCQgP,EAAQk7B,qBAAuB0B,IAMrC58B,EAAQs7B,wBAA0BjkC,EAAUid,EAAM,OAI3C,SAARtjB,IAIC8pC,WAAY9pC,IAA0D,WAAjD+D,EAAOZ,IAAKmgB,EAAM,WAAW,EAAOuoB,KAG1DvoB,EAAK6oB,iBAAiB5nC,SAEtBqnC,EAAiE,eAAnD7nC,EAAOZ,IAAKmgB,EAAM,aAAa,EAAOuoB,IAKpDI,EAAmBC,KAAc5oB,KAEhCtjB,EAAMsjB,EAAM4oB,MAKdlsC,EAAM8pC,WAAY9pC,IAAS,GAI1B0rC,GACCpoB,EACApT,EACA67B,IAAWH,EAAc,SAAW,WACpCK,EACAJ,EAGA7rC,GAEE,IACL,CA8SA,SAASosC,GAAO9oB,EAAMhjB,EAAS47B,EAAM5pB,EAAK+5B,GACzC,OAAO,IAAID,GAAM3sC,UAAUmJ,KAAM0a,EAAMhjB,EAAS47B,EAAM5pB,EAAK+5B,EAC5D,CA9SAtoC,EAAOxD,OAAQ,CAId+rC,SAAU,CACTC,QAAS,CACRlwB,IAAK,SAAUiH,EAAMqlB,GACpB,GAAKA,EAAW,CAGf,IAAIxlB,EAAMulB,GAAQplB,EAAM,WACxB,MAAe,KAARH,EAAa,IAAMA,CAC3B,CACD,IAKFkb,UAAW,CACV,yBAA2B,EAC3B,aAAe,EACf,aAAe,EACf,UAAY,EACZ,YAAc,EACd,YAAc,EACd,UAAY,EACZ,YAAc,EACd,eAAiB,EACjB,iBAAmB,EACnB,SAAW,EACX,YAAc,EACd,cAAgB,EAChB,YAAc,EACd,SAAW,EACX,OAAS,EACT,SAAW,EACX,QAAU,EACV,QAAU,EACV,MAAQ,GAKT2M,SAAU,CAAC,EAGXn4B,MAAO,SAAUyQ,EAAM3Q,EAAM9L,EAAOklC,GAGnC,GAAMzoB,GAA0B,IAAlBA,EAAKxB,UAAoC,IAAlBwB,EAAKxB,UAAmBwB,EAAKzQ,MAAlE,CAKA,IAAIsQ,EAAKre,EAAMg4B,EACd0P,EAAW9Q,EAAW/oB,GACtBm2B,EAAeX,GAAY9jC,KAAMsO,GACjCE,EAAQyQ,EAAKzQ,MAad,GARMi2B,IACLn2B,EAAOo4B,GAAeyB,IAIvB1P,EAAQ/4B,EAAOuoC,SAAU35B,IAAU5O,EAAOuoC,SAAUE,QAGrC55B,IAAV/L,EA0CJ,OAAKi2B,GAAS,QAASA,QACwBlqB,KAA5CuQ,EAAM2Z,EAAMzgB,IAAKiH,GAAM,EAAOyoB,IAEzB5oB,EAIDtQ,EAAOF,GA7CA,WAHd7N,SAAc+B,KAGcsc,EAAMma,GAAQ9T,KAAM3iB,KAAasc,EAAK,KACjEtc,EAAQ+2B,GAAWta,EAAM3Q,EAAMwQ,GAG/Bre,EAAO,UAIM,MAAT+B,GAAiBA,GAAUA,IAOlB,WAAT/B,GAAsBgkC,IAC1BjiC,GAASsc,GAAOA,EAAK,KAASpf,EAAOs6B,UAAWmO,GAAa,GAAK,OAI7Dx9B,EAAQi7B,iBAA6B,KAAVpjC,GAAiD,IAAjC8L,EAAKqO,QAAS,gBAC9DnO,EAAOF,GAAS,WAIXmqB,GAAY,QAASA,QACsBlqB,KAA9C/L,EAAQi2B,EAAMlhB,IAAK0H,EAAMzc,EAAOklC,MAE7BjD,EACJj2B,EAAM45B,YAAa95B,EAAM9L,GAEzBgM,EAAOF,GAAS9L,GAtDnB,CAsED,EAEA1D,IAAK,SAAUmgB,EAAM3Q,EAAMo5B,EAAOF,GACjC,IAAI7rC,EAAKgjB,EAAK8Z,EACb0P,EAAW9Q,EAAW/oB,GA6BvB,OA5BgBw1B,GAAY9jC,KAAMsO,KAMjCA,EAAOo4B,GAAeyB,KAIvB1P,EAAQ/4B,EAAOuoC,SAAU35B,IAAU5O,EAAOuoC,SAAUE,KAGtC,QAAS1P,IACtB98B,EAAM88B,EAAMzgB,IAAKiH,GAAM,EAAMyoB,SAIjBn5B,IAAR5S,IACJA,EAAM0oC,GAAQplB,EAAM3Q,EAAMk5B,IAId,WAAR7rC,GAAoB2S,KAAQ24B,KAChCtrC,EAAMsrC,GAAoB34B,IAIZ,KAAVo5B,GAAgBA,GACpB/oB,EAAM8mB,WAAY9pC,IACD,IAAV+rC,GAAkBW,SAAU1pB,GAAQA,GAAO,EAAIhjB,GAGhDA,CACR,IAGD+D,EAAOxC,KAAM,CAAE,SAAU,UAAW,SAAU6jB,EAAIlV,GACjDnM,EAAOuoC,SAAUp8B,GAAc,CAC9BmM,IAAK,SAAUiH,EAAMqlB,EAAUoD,GAC9B,GAAKpD,EAIJ,OAAOwC,GAAa9mC,KAAMN,EAAOZ,IAAKmgB,EAAM,aAQxCA,EAAK6oB,iBAAiB5nC,QAAW+e,EAAK3S,wBAAwBjC,MAIjEs9B,GAAkB1oB,EAAMpT,EAAW67B,GAHnCxD,GAAMjlB,EAAM8nB,IAAS,WACpB,OAAOY,GAAkB1oB,EAAMpT,EAAW67B,EAC3C,GAGH,EAEAnwB,IAAK,SAAU0H,EAAMzc,EAAOklC,GAC3B,IAAIjnB,EACH+mB,EAASzD,GAAW9kB,GAIpBqpB,GAAsB39B,EAAQq7B,iBACT,aAApBwB,EAAOzpC,SAIRwpC,GADkBe,GAAsBZ,IAEY,eAAnDhoC,EAAOZ,IAAKmgB,EAAM,aAAa,EAAOuoB,GACvCtvB,EAAWwvB,EACVL,GACCpoB,EACApT,EACA67B,EACAH,EACAC,GAED,EAqBF,OAjBKD,GAAee,IACnBpwB,GAAYxZ,KAAK8V,KAChByK,EAAM,SAAWpT,EAAW,GAAI8O,cAAgB9O,EAAUmF,MAAO,IACjEy0B,WAAY+B,EAAQ37B,IACpBw7B,GAAoBpoB,EAAMpT,EAAW,UAAU,EAAO27B,GACtD,KAKGtvB,IAAcuI,EAAUwY,GAAQ9T,KAAM3iB,KACb,QAA3Bie,EAAS,IAAO,QAElBxB,EAAKzQ,MAAO3C,GAAcrJ,EAC1BA,EAAQ9C,EAAOZ,IAAKmgB,EAAMpT,IAGpBu7B,GAAmBnoB,EAAMzc,EAAO0V,EACxC,EAEF,IAEAxY,EAAOuoC,SAASh9B,WAAa25B,GAAcj6B,EAAQo7B,oBAClD,SAAU9mB,EAAMqlB,GACf,GAAKA,EACJ,OAASmB,WAAYpB,GAAQplB,EAAM,gBAClCA,EAAK3S,wBAAwB7C,KAC5By6B,GAAMjlB,EAAM,CAAEhU,WAAY,IAAK,WAC9B,OAAOgU,EAAK3S,wBAAwB7C,IACrC,KACE,IAEN,IAID/J,EAAOxC,KAAM,CACZqrC,OAAQ,GACRtjC,QAAS,GACTujC,OAAQ,UACN,SAAUr7B,EAAQs7B,GACpB/oC,EAAOuoC,SAAU96B,EAASs7B,GAAW,CACpCC,OAAQ,SAAUlmC,GAOjB,IANA,IAAIE,EAAI,EACPimC,EAAW,CAAC,EAGZC,EAAyB,iBAAVpmC,EAAqBA,EAAMgF,MAAO,KAAQ,CAAEhF,GAEpDE,EAAI,EAAGA,IACdimC,EAAUx7B,EAAS+rB,GAAWx2B,GAAM+lC,GACnCG,EAAOlmC,IAAOkmC,EAAOlmC,EAAI,IAAOkmC,EAAO,GAGzC,OAAOD,CACR,GAGe,WAAXx7B,IACJzN,EAAOuoC,SAAU96B,EAASs7B,GAASlxB,IAAM6vB,GAE3C,IAEA1nC,EAAOJ,GAAGpD,OAAQ,CACjB4C,IAAK,SAAUwP,EAAM9L,GACpB,OAAOk0B,EAAQj7B,MAAM,SAAUwjB,EAAM3Q,EAAM9L,GAC1C,IAAIglC,EAAQhkC,EACXH,EAAM,CAAC,EACPX,EAAI,EAEL,GAAKvH,MAAMU,QAASyS,GAAS,CAI5B,IAHAk5B,EAASzD,GAAW9kB,GACpBzb,EAAM8K,EAAKpO,OAEHwC,EAAIc,EAAKd,IAChBW,EAAKiL,EAAM5L,IAAQhD,EAAOZ,IAAKmgB,EAAM3Q,EAAM5L,IAAK,EAAO8kC,GAGxD,OAAOnkC,CACR,CAEA,YAAiBkL,IAAV/L,EACN9C,EAAO8O,MAAOyQ,EAAM3Q,EAAM9L,GAC1B9C,EAAOZ,IAAKmgB,EAAM3Q,EACpB,GAAGA,EAAM9L,EAAO2M,UAAUjP,OAAS,EACpC,IAODR,EAAOqoC,MAAQA,GAEfA,GAAM3sC,UAAY,CACjBiM,YAAa0gC,GACbxjC,KAAM,SAAU0a,EAAMhjB,EAAS47B,EAAM5pB,EAAK+5B,EAAQjO,GACjDt+B,KAAKwjB,KAAOA,EACZxjB,KAAKo8B,KAAOA,EACZp8B,KAAKusC,OAASA,GAAUtoC,EAAOsoC,OAAO/M,SACtCx/B,KAAKQ,QAAUA,EACfR,KAAKovB,MAAQpvB,KAAKgkC,IAAMhkC,KAAK6qB,MAC7B7qB,KAAKwS,IAAMA,EACXxS,KAAKs+B,KAAOA,IAAUr6B,EAAOs6B,UAAWnC,GAAS,GAAK,KACvD,EACAvR,IAAK,WACJ,IAAImS,EAAQsP,GAAMc,UAAWptC,KAAKo8B,MAElC,OAAOY,GAASA,EAAMzgB,IACrBygB,EAAMzgB,IAAKvc,MACXssC,GAAMc,UAAU5N,SAASjjB,IAAKvc,KAChC,EACAqtC,IAAK,SAAUC,GACd,IAAIC,EACHvQ,EAAQsP,GAAMc,UAAWptC,KAAKo8B,MAoB/B,OAlBKp8B,KAAKQ,QAAQ6R,SACjBrS,KAAKmO,IAAMo/B,EAAQtpC,EAAOsoC,OAAQvsC,KAAKusC,QACtCe,EAASttC,KAAKQ,QAAQ6R,SAAWi7B,EAAS,EAAG,EAAGttC,KAAKQ,QAAQ6R,UAG9DrS,KAAKmO,IAAMo/B,EAAQD,EAEpBttC,KAAKgkC,KAAQhkC,KAAKwS,IAAMxS,KAAKovB,OAAUme,EAAQvtC,KAAKovB,MAE/CpvB,KAAKQ,QAAQgtC,MACjBxtC,KAAKQ,QAAQgtC,KAAKztC,KAAMC,KAAKwjB,KAAMxjB,KAAKgkC,IAAKhkC,MAGzCg9B,GAASA,EAAMlhB,IACnBkhB,EAAMlhB,IAAK9b,MAEXssC,GAAMc,UAAU5N,SAAS1jB,IAAK9b,MAExBA,IACR,GAGDssC,GAAM3sC,UAAUmJ,KAAKnJ,UAAY2sC,GAAM3sC,UAEvC2sC,GAAMc,UAAY,CACjB5N,SAAU,CACTjjB,IAAK,SAAUyhB,GACd,IAAIvP,EAIJ,OAA6B,IAAxBuP,EAAMxa,KAAKxB,UACa,MAA5Bgc,EAAMxa,KAAMwa,EAAM5B,OAAoD,MAAlC4B,EAAMxa,KAAKzQ,MAAOirB,EAAM5B,MACrD4B,EAAMxa,KAAMwa,EAAM5B,OAO1B3N,EAASxqB,EAAOZ,IAAK26B,EAAMxa,KAAMwa,EAAM5B,KAAM,MAGhB,SAAX3N,EAAwBA,EAAJ,CACvC,EACA3S,IAAK,SAAUkiB,GAKT/5B,EAAOwpC,GAAGD,KAAMxP,EAAM5B,MAC1Bn4B,EAAOwpC,GAAGD,KAAMxP,EAAM5B,MAAQ4B,GACK,IAAxBA,EAAMxa,KAAKxB,WACtB/d,EAAOuoC,SAAUxO,EAAM5B,OAC6B,MAAnD4B,EAAMxa,KAAKzQ,MAAOk4B,GAAejN,EAAM5B,OAGxC4B,EAAMxa,KAAMwa,EAAM5B,MAAS4B,EAAMgG,IAFjC//B,EAAO8O,MAAOirB,EAAMxa,KAAMwa,EAAM5B,KAAM4B,EAAMgG,IAAMhG,EAAMM,KAI1D,IAMFgO,GAAMc,UAAU/qC,UAAYiqC,GAAMc,UAAUM,WAAa,CACxD5xB,IAAK,SAAUkiB,GACTA,EAAMxa,KAAKxB,UAAYgc,EAAMxa,KAAKjb,aACtCy1B,EAAMxa,KAAMwa,EAAM5B,MAAS4B,EAAMgG,IAEnC,GAGD//B,EAAOsoC,OAAS,CACfoB,OAAQ,SAAU/iC,GACjB,OAAOA,CACR,EACAgjC,MAAO,SAAUhjC,GAChB,MAAO,GAAM3H,KAAK4qC,IAAKjjC,EAAI3H,KAAK6qC,IAAO,CACxC,EACAtO,SAAU,UAGXv7B,EAAOwpC,GAAKnB,GAAM3sC,UAAUmJ,MAGlB0kC,KAAO,CAAC,EAKlB,IACCO,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASC,KACHH,MACqB,IAApBptC,EAASwtC,QAAoBrsC,EAAOssC,sBACxCtsC,EAAOssC,sBAAuBF,IAE9BpsC,EAAOe,WAAYqrC,GAAUlqC,EAAOwpC,GAAGa,UAGxCrqC,EAAOwpC,GAAGc,OAEZ,CAGA,SAASC,KAIR,OAHAzsC,EAAOe,YAAY,WAClBirC,QAAQj7B,CACT,IACSi7B,GAAQ9zB,KAAK+pB,KACvB,CAGA,SAASyK,GAAOzpC,EAAM0pC,GACrB,IAAI9pC,EACHqC,EAAI,EACJyjB,EAAQ,CAAExoB,OAAQ8C,GAKnB,IADA0pC,EAAeA,EAAe,EAAI,EAC1BznC,EAAI,EAAGA,GAAK,EAAIynC,EAEvBhkB,EAAO,UADP9lB,EAAQ64B,GAAWx2B,KACSyjB,EAAO,UAAY9lB,GAAUI,EAO1D,OAJK0pC,IACJhkB,EAAM+hB,QAAU/hB,EAAM9b,MAAQ5J,GAGxB0lB,CACR,CAEA,SAASikB,GAAa5nC,EAAOq1B,EAAMpzB,GAKlC,IAJA,IAAIg1B,EACH6I,GAAe+H,GAAUC,SAAUzS,IAAU,IAAKj8B,OAAQyuC,GAAUC,SAAU,MAC9EhpC,EAAQ,EACRpB,EAASoiC,EAAWpiC,OACboB,EAAQpB,EAAQoB,IACvB,GAAOm4B,EAAQ6I,EAAYhhC,GAAQ9F,KAAMiJ,EAAWozB,EAAMr1B,GAGzD,OAAOi3B,CAGV,CAmNA,SAAS4Q,GAAWprB,EAAMsrB,EAAYtuC,GACrC,IAAIiuB,EACHsgB,EACAlpC,EAAQ,EACRpB,EAASmqC,GAAUI,WAAWvqC,OAC9B8zB,EAAWt0B,EAAOi0B,WAAWI,QAAQ,kBAG7BiW,EAAK/qB,IACb,IACA+qB,EAAO,WACN,GAAKQ,EACJ,OAAO,EAYR,IAVA,IAAIE,EAAclB,IAASS,KAC1BzU,EAAY92B,KAAKC,IAAK,EAAG8F,EAAUkmC,UAAYlmC,EAAUqJ,SAAW48B,GAKpE3B,EAAU,GADHvT,EAAY/wB,EAAUqJ,UAAY,GAEzCxM,EAAQ,EACRpB,EAASuE,EAAUmmC,OAAO1qC,OAEnBoB,EAAQpB,EAAQoB,IACvBmD,EAAUmmC,OAAQtpC,GAAQwnC,IAAKC,GAMhC,OAHA/U,EAASc,WAAY7V,EAAM,CAAExa,EAAWskC,EAASvT,IAG5CuT,EAAU,GAAK7oC,EACZs1B,GAIFt1B,GACL8zB,EAASc,WAAY7V,EAAM,CAAExa,EAAW,EAAG,IAI5CuvB,EAASe,YAAa9V,EAAM,CAAExa,KACvB,EACR,EACAA,EAAYuvB,EAASxB,QAAS,CAC7BvT,KAAMA,EACN5T,MAAO3L,EAAOxD,OAAQ,CAAC,EAAGquC,GAC1BM,KAAMnrC,EAAOxD,QAAQ,EAAM,CAC1B4uC,cAAe,CAAC,EAChB9C,OAAQtoC,EAAOsoC,OAAO/M,UACpBh/B,GACH8uC,mBAAoBR,EACpBS,gBAAiB/uC,EACjB0uC,UAAWnB,IAASS,KACpBn8B,SAAU7R,EAAQ6R,SAClB88B,OAAQ,GACRR,YAAa,SAAUvS,EAAM5pB,GAC5B,IAAIwrB,EAAQ/5B,EAAOqoC,MAAO9oB,EAAMxa,EAAUomC,KAAMhT,EAAM5pB,EACrDxJ,EAAUomC,KAAKC,cAAejT,IAAUpzB,EAAUomC,KAAK7C,QAExD,OADAvjC,EAAUmmC,OAAOj6B,KAAM8oB,GAChBA,CACR,EACAd,KAAM,SAAUsS,GACf,IAAI3pC,EAAQ,EAIXpB,EAAS+qC,EAAUxmC,EAAUmmC,OAAO1qC,OAAS,EAC9C,GAAKsqC,EACJ,OAAO/uC,KAGR,IADA+uC,GAAU,EACFlpC,EAAQpB,EAAQoB,IACvBmD,EAAUmmC,OAAQtpC,GAAQwnC,IAAK,GAUhC,OANKmC,GACJjX,EAASc,WAAY7V,EAAM,CAAExa,EAAW,EAAG,IAC3CuvB,EAASe,YAAa9V,EAAM,CAAExa,EAAWwmC,KAEzCjX,EAASmB,WAAYlW,EAAM,CAAExa,EAAWwmC,IAElCxvC,IACR,IAED4P,EAAQ5G,EAAU4G,MAInB,IA/HD,SAAqBA,EAAOy/B,GAC3B,IAAIxpC,EAAOgN,EAAM05B,EAAQxlC,EAAOi2B,EAGhC,IAAMn3B,KAAS+J,EAed,GAbA28B,EAAS8C,EADTx8B,EAAO+oB,EAAW/1B,IAElBkB,EAAQ6I,EAAO/J,GACVnG,MAAMU,QAAS2G,KACnBwlC,EAASxlC,EAAO,GAChBA,EAAQ6I,EAAO/J,GAAUkB,EAAO,IAG5BlB,IAAUgN,IACdjD,EAAOiD,GAAS9L,SACT6I,EAAO/J,KAGfm3B,EAAQ/4B,EAAOuoC,SAAU35B,KACX,WAAYmqB,EAMzB,IAAMn3B,KALNkB,EAAQi2B,EAAMiQ,OAAQlmC,UACf6I,EAAOiD,GAIC9L,EACNlB,KAAS+J,IAChBA,EAAO/J,GAAUkB,EAAOlB,GACxBwpC,EAAexpC,GAAU0mC,QAI3B8C,EAAex8B,GAAS05B,CAG3B,CA0FCkD,CAAY7/B,EAAO5G,EAAUomC,KAAKC,eAE1BxpC,EAAQpB,EAAQoB,IAEvB,GADA4oB,EAASmgB,GAAUI,WAAYnpC,GAAQ9F,KAAMiJ,EAAWwa,EAAM5T,EAAO5G,EAAUomC,MAM9E,OAJK5jC,EAAYijB,EAAOyO,QACvBj5B,EAAOg5B,YAAaj0B,EAAUwa,KAAMxa,EAAUomC,KAAK1X,OAAQwF,KAC1DzO,EAAOyO,KAAKwS,KAAMjhB,IAEbA,EAyBT,OArBAxqB,EAAO2D,IAAKgI,EAAO++B,GAAa3lC,GAE3BwC,EAAYxC,EAAUomC,KAAKhgB,QAC/BpmB,EAAUomC,KAAKhgB,MAAMrvB,KAAMyjB,EAAMxa,GAIlCA,EACE6vB,SAAU7vB,EAAUomC,KAAKvW,UACzBrS,KAAMxd,EAAUomC,KAAK5oB,KAAMxd,EAAUomC,KAAKpgC,UAC1CgoB,KAAMhuB,EAAUomC,KAAKpY,MACrBsB,OAAQtvB,EAAUomC,KAAK9W,QAEzBr0B,EAAOwpC,GAAGkC,MACT1rC,EAAOxD,OAAQ8tC,EAAM,CACpB/qB,KAAMA,EACNosB,KAAM5mC,EACN0uB,MAAO1uB,EAAUomC,KAAK1X,SAIjB1uB,CACR,CAEA/E,EAAO2qC,UAAY3qC,EAAOxD,OAAQmuC,GAAW,CAE5CC,SAAU,CACT,IAAK,CAAE,SAAUzS,EAAMr1B,GACtB,IAAIi3B,EAAQh+B,KAAK2uC,YAAavS,EAAMr1B,GAEpC,OADA+2B,GAAWE,EAAMxa,KAAM4Y,EAAMoB,GAAQ9T,KAAM3iB,GAASi3B,GAC7CA,CACR,IAGD6R,QAAS,SAAUjgC,EAAOY,GACpBhF,EAAYoE,IAChBY,EAAWZ,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAMhJ,MAAO0vB,GAOtB,IAJA,IAAI8F,EACHv2B,EAAQ,EACRpB,EAASmL,EAAMnL,OAERoB,EAAQpB,EAAQoB,IACvBu2B,EAAOxsB,EAAO/J,GACd+oC,GAAUC,SAAUzS,GAASwS,GAAUC,SAAUzS,IAAU,GAC3DwS,GAAUC,SAAUzS,GAAO/O,QAAS7c,EAEtC,EAEAw+B,WAAY,CA3Wb,SAA2BxrB,EAAM5T,EAAOw/B,GACvC,IAAIhT,EAAMr1B,EAAO7C,EAAQ84B,EAAO8S,EAASC,EAAWC,EAAgB/hC,EACnEgiC,EAAQ,UAAWrgC,GAAS,WAAYA,EACxCggC,EAAO5vC,KACP+lC,EAAO,CAAC,EACRhzB,EAAQyQ,EAAKzQ,MACbq7B,EAAS5qB,EAAKxB,UAAY6b,GAAoBra,GAC9C0sB,EAAW5T,EAAS/f,IAAKiH,EAAM,UA6BhC,IAAM4Y,KA1BAgT,EAAK1X,QAEa,OADvBsF,EAAQ/4B,EAAOg5B,YAAazZ,EAAM,OACvB2sB,WACVnT,EAAMmT,SAAW,EACjBL,EAAU9S,EAAMjF,MAAMH,KACtBoF,EAAMjF,MAAMH,KAAO,WACZoF,EAAMmT,UACXL,GAEF,GAED9S,EAAMmT,WAENP,EAAKtX,QAAQ,WAGZsX,EAAKtX,QAAQ,WACZ0E,EAAMmT,WACAlsC,EAAOyzB,MAAOlU,EAAM,MAAO/e,QAChCu4B,EAAMjF,MAAMH,MAEd,GACD,KAIahoB,EAEb,GADA7I,EAAQ6I,EAAOwsB,GACV6R,GAAS1pC,KAAMwC,GAAU,CAG7B,UAFO6I,EAAOwsB,GACdl4B,EAASA,GAAoB,WAAV6C,EACdA,KAAYqnC,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVrnC,IAAoBmpC,QAAiCp9B,IAArBo9B,EAAU9T,GAK9C,SAJAgS,GAAS,CAMX,CACArI,EAAM3J,GAAS8T,GAAYA,EAAU9T,IAAUn4B,EAAO8O,MAAOyQ,EAAM4Y,EACpE,CAKD,IADA2T,GAAa9rC,EAAOygB,cAAe9U,MAChB3L,EAAOygB,cAAeqhB,GA8DzC,IAAM3J,KAzDD6T,GAA2B,IAAlBzsB,EAAKxB,WAMlBotB,EAAKgB,SAAW,CAAEr9B,EAAMq9B,SAAUr9B,EAAMs9B,UAAWt9B,EAAMu9B,WAIlC,OADvBN,EAAiBE,GAAYA,EAASjiC,WAErC+hC,EAAiB1T,EAAS/f,IAAKiH,EAAM,YAGrB,UADjBvV,EAAUhK,EAAOZ,IAAKmgB,EAAM,cAEtBwsB,EACJ/hC,EAAU+hC,GAIVrR,GAAU,CAAEnb,IAAQ,GACpBwsB,EAAiBxsB,EAAKzQ,MAAM9E,SAAW+hC,EACvC/hC,EAAUhK,EAAOZ,IAAKmgB,EAAM,WAC5Bmb,GAAU,CAAEnb,OAKG,WAAZvV,GAAoC,iBAAZA,GAAgD,MAAlB+hC,IACrB,SAAhC/rC,EAAOZ,IAAKmgB,EAAM,WAGhBusB,IACLH,EAAKppB,MAAM,WACVzT,EAAM9E,QAAU+hC,CACjB,IACuB,MAAlBA,IACJ/hC,EAAU8E,EAAM9E,QAChB+hC,EAA6B,SAAZ/hC,EAAqB,GAAKA,IAG7C8E,EAAM9E,QAAU,iBAKdmhC,EAAKgB,WACTr9B,EAAMq9B,SAAW,SACjBR,EAAKtX,QAAQ,WACZvlB,EAAMq9B,SAAWhB,EAAKgB,SAAU,GAChCr9B,EAAMs9B,UAAYjB,EAAKgB,SAAU,GACjCr9B,EAAMu9B,UAAYlB,EAAKgB,SAAU,EAClC,KAIDL,GAAY,EACEhK,EAGPgK,IACAG,EACC,WAAYA,IAChB9B,EAAS8B,EAAS9B,QAGnB8B,EAAW5T,EAASrB,OAAQzX,EAAM,SAAU,CAAEvV,QAAS+hC,IAInD9rC,IACJgsC,EAAS9B,QAAUA,GAIfA,GACJzP,GAAU,CAAEnb,IAAQ,GAKrBosB,EAAKppB,MAAM,WASV,IAAM4V,KAJAgS,GACLzP,GAAU,CAAEnb,IAEb8Y,EAASz3B,OAAQ2e,EAAM,UACTuiB,EACb9hC,EAAO8O,MAAOyQ,EAAM4Y,EAAM2J,EAAM3J,GAElC,KAID2T,EAAYpB,GAAaP,EAAS8B,EAAU9T,GAAS,EAAGA,EAAMwT,GACtDxT,KAAQ8T,IACfA,EAAU9T,GAAS2T,EAAU3gB,MACxBgf,IACJ2B,EAAUv9B,IAAMu9B,EAAU3gB,MAC1B2gB,EAAU3gB,MAAQ,GAItB,GAmMCmhB,UAAW,SAAU//B,EAAUk3B,GACzBA,EACJkH,GAAUI,WAAW3hB,QAAS7c,GAE9Bo+B,GAAUI,WAAW95B,KAAM1E,EAE7B,IAGDvM,EAAOusC,MAAQ,SAAUA,EAAOjE,EAAQ1oC,GACvC,IAAI4sC,EAAMD,GAA0B,iBAAVA,EAAqBvsC,EAAOxD,OAAQ,CAAC,EAAG+vC,GAAU,CAC3ExhC,SAAUnL,IAAOA,GAAM0oC,GACtB/gC,EAAYglC,IAAWA,EACxBn+B,SAAUm+B,EACVjE,OAAQ1oC,GAAM0oC,GAAUA,IAAW/gC,EAAY+gC,IAAYA,GAoC5D,OAhCKtoC,EAAOwpC,GAAGv7B,IACdu+B,EAAIp+B,SAAW,EAGc,iBAAjBo+B,EAAIp+B,WACVo+B,EAAIp+B,YAAYpO,EAAOwpC,GAAGiD,OAC9BD,EAAIp+B,SAAWpO,EAAOwpC,GAAGiD,OAAQD,EAAIp+B,UAGrCo+B,EAAIp+B,SAAWpO,EAAOwpC,GAAGiD,OAAOlR,UAMjB,MAAbiR,EAAI/Y,QAA+B,IAAd+Y,EAAI/Y,QAC7B+Y,EAAI/Y,MAAQ,MAIb+Y,EAAI7sC,IAAM6sC,EAAIzhC,SAEdyhC,EAAIzhC,SAAW,WACTxD,EAAYilC,EAAI7sC,MACpB6sC,EAAI7sC,IAAI7D,KAAMC,MAGVywC,EAAI/Y,OACRzzB,EAAO64B,QAAS98B,KAAMywC,EAAI/Y,MAE5B,EAEO+Y,CACR,EAEAxsC,EAAOJ,GAAGpD,OAAQ,CACjBkwC,OAAQ,SAAUH,EAAO9wB,EAAI6sB,EAAQ/7B,GAGpC,OAAOxQ,KAAK8G,OAAQ+2B,IAAqBx6B,IAAK,UAAW,GAAIqJ,OAG3D8F,MAAMo+B,QAAS,CAAEnE,QAAS/sB,GAAM8wB,EAAOjE,EAAQ/7B,EAClD,EACAogC,QAAS,SAAUxU,EAAMoU,EAAOjE,EAAQ/7B,GACvC,IAAIunB,EAAQ9zB,EAAOygB,cAAe0X,GACjCyU,EAAS5sC,EAAOusC,MAAOA,EAAOjE,EAAQ/7B,GACtCsgC,EAAc,WAGb,IAAIlB,EAAOhB,GAAW5uC,KAAMiE,EAAOxD,OAAQ,CAAC,EAAG27B,GAAQyU,IAGlD9Y,GAASuE,EAAS/f,IAAKvc,KAAM,YACjC4vC,EAAK1S,MAAM,EAEb,EAID,OAFA4T,EAAYC,OAASD,EAEd/Y,IAA0B,IAAjB8Y,EAAOnZ,MACtB13B,KAAKyB,KAAMqvC,GACX9wC,KAAK03B,MAAOmZ,EAAOnZ,MAAOoZ,EAC5B,EACA5T,KAAM,SAAUl4B,EAAMo4B,EAAYoS,GACjC,IAAIwB,EAAY,SAAUhU,GACzB,IAAIE,EAAOF,EAAME,YACVF,EAAME,KACbA,EAAMsS,EACP,EAWA,MATqB,iBAATxqC,IACXwqC,EAAUpS,EACVA,EAAap4B,EACbA,OAAO8N,GAEHsqB,GACJp9B,KAAK03B,MAAO1yB,GAAQ,KAAM,IAGpBhF,KAAKyB,MAAM,WACjB,IAAIq7B,GAAU,EACbj3B,EAAgB,MAARb,GAAgBA,EAAO,aAC/BisC,EAAShtC,EAAOgtC,OAChBtvC,EAAO26B,EAAS/f,IAAKvc,MAEtB,GAAK6F,EACClE,EAAMkE,IAAWlE,EAAMkE,GAAQq3B,MACnC8T,EAAWrvC,EAAMkE,SAGlB,IAAMA,KAASlE,EACTA,EAAMkE,IAAWlE,EAAMkE,GAAQq3B,MAAQgR,GAAK3pC,KAAMsB,IACtDmrC,EAAWrvC,EAAMkE,IAKpB,IAAMA,EAAQorC,EAAOxsC,OAAQoB,KACvBorC,EAAQprC,GAAQ2d,OAASxjB,MACnB,MAARgF,GAAgBisC,EAAQprC,GAAQ6xB,QAAU1yB,IAE5CisC,EAAQprC,GAAQ+pC,KAAK1S,KAAMsS,GAC3B1S,GAAU,EACVmU,EAAOltB,OAAQle,EAAO,KAOnBi3B,GAAY0S,GAChBvrC,EAAO64B,QAAS98B,KAAMgF,EAExB,GACD,EACA+rC,OAAQ,SAAU/rC,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAEThF,KAAKyB,MAAM,WACjB,IAAIoE,EACHlE,EAAO26B,EAAS/f,IAAKvc,MACrB03B,EAAQ/1B,EAAMqD,EAAO,SACrBg4B,EAAQr7B,EAAMqD,EAAO,cACrBisC,EAAShtC,EAAOgtC,OAChBxsC,EAASizB,EAAQA,EAAMjzB,OAAS,EAajC,IAVA9C,EAAKovC,QAAS,EAGd9sC,EAAOyzB,MAAO13B,KAAMgF,EAAM,IAErBg4B,GAASA,EAAME,MACnBF,EAAME,KAAKn9B,KAAMC,MAAM,GAIlB6F,EAAQorC,EAAOxsC,OAAQoB,KACvBorC,EAAQprC,GAAQ2d,OAASxjB,MAAQixC,EAAQprC,GAAQ6xB,QAAU1yB,IAC/DisC,EAAQprC,GAAQ+pC,KAAK1S,MAAM,GAC3B+T,EAAOltB,OAAQle,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQpB,EAAQoB,IAC3B6xB,EAAO7xB,IAAW6xB,EAAO7xB,GAAQkrC,QACrCrZ,EAAO7xB,GAAQkrC,OAAOhxC,KAAMC,aAKvB2B,EAAKovC,MACb,GACD,IAGD9sC,EAAOxC,KAAM,CAAE,SAAU,OAAQ,SAAU,SAAU6jB,EAAIzS,GACxD,IAAIq+B,EAAQjtC,EAAOJ,GAAIgP,GACvB5O,EAAOJ,GAAIgP,GAAS,SAAU29B,EAAOjE,EAAQ/7B,GAC5C,OAAgB,MAATggC,GAAkC,kBAAVA,EAC9BU,EAAMz9B,MAAOzT,KAAM0T,WACnB1T,KAAK4wC,QAASnC,GAAO57B,GAAM,GAAQ29B,EAAOjE,EAAQ/7B,EACpD,CACD,IAGAvM,EAAOxC,KAAM,CACZ0vC,UAAW1C,GAAO,QAClB2C,QAAS3C,GAAO,QAChB4C,YAAa5C,GAAO,UACpB6C,OAAQ,CAAE7E,QAAS,QACnB8E,QAAS,CAAE9E,QAAS,QACpB+E,WAAY,CAAE/E,QAAS,YACrB,SAAU55B,EAAMjD,GAClB3L,EAAOJ,GAAIgP,GAAS,SAAU29B,EAAOjE,EAAQ/7B,GAC5C,OAAOxQ,KAAK4wC,QAAShhC,EAAO4gC,EAAOjE,EAAQ/7B,EAC5C,CACD,IAEAvM,EAAOgtC,OAAS,GAChBhtC,EAAOwpC,GAAGc,KAAO,WAChB,IAAIoB,EACH1oC,EAAI,EACJgqC,EAAShtC,EAAOgtC,OAIjB,IAFAlD,GAAQ9zB,KAAK+pB,MAEL/8B,EAAIgqC,EAAOxsC,OAAQwC,KAC1B0oC,EAAQsB,EAAQhqC,OAGCgqC,EAAQhqC,KAAQ0oC,GAChCsB,EAAOltB,OAAQ9c,IAAK,GAIhBgqC,EAAOxsC,QACZR,EAAOwpC,GAAGvQ,OAEX6Q,QAAQj7B,CACT,EAEA7O,EAAOwpC,GAAGkC,MAAQ,SAAUA,GAC3B1rC,EAAOgtC,OAAO/7B,KAAMy6B,GACpB1rC,EAAOwpC,GAAGre,OACX,EAEAnrB,EAAOwpC,GAAGa,SAAW,GACrBrqC,EAAOwpC,GAAGre,MAAQ,WACZ4e,KAILA,IAAa,EACbG,KACD,EAEAlqC,EAAOwpC,GAAGvQ,KAAO,WAChB8Q,GAAa,IACd,EAEA/pC,EAAOwpC,GAAGiD,OAAS,CAClBe,KAAM,IACNC,KAAM,IAGNlS,SAAU,KAKXv7B,EAAOJ,GAAGuF,MAAQ,SAAUuoC,EAAM3sC,GAIjC,OAHA2sC,EAAO1tC,EAAOwpC,IAAKxpC,EAAOwpC,GAAGiD,OAAQiB,IAAiBA,EACtD3sC,EAAOA,GAAQ,KAERhF,KAAK03B,MAAO1yB,GAAM,SAAUkkB,EAAM8T,GACxC,IAAIr0B,EAAU5G,EAAOe,WAAYomB,EAAMyoB,GACvC3U,EAAME,KAAO,WACZn7B,EAAOoL,aAAcxE,EACtB,CACD,GACD,EAGA,WACC,IAAI2jB,EAAQ1rB,EAAS0E,cAAe,SAEnCmrC,EADS7vC,EAAS0E,cAAe,UACpByO,YAAanT,EAAS0E,cAAe,WAEnDgnB,EAAMtnB,KAAO,WAIbkK,EAAQ0iC,QAA0B,KAAhBtlB,EAAMvlB,MAIxBmI,EAAQ2iC,YAAcpB,EAAIlgB,UAI1BjE,EAAQ1rB,EAAS0E,cAAe,UAC1ByB,MAAQ,IACdulB,EAAMtnB,KAAO,QACbkK,EAAQ4iC,WAA6B,MAAhBxlB,EAAMvlB,KAC3B,CArBD,GAwBA,IAAIgrC,GACHpnB,GAAa1mB,EAAOqpB,KAAK3C,WAE1B1mB,EAAOJ,GAAGpD,OAAQ,CACjB6D,KAAM,SAAUuO,EAAM9L,GACrB,OAAOk0B,EAAQj7B,KAAMiE,EAAOK,KAAMuO,EAAM9L,EAAO2M,UAAUjP,OAAS,EACnE,EAEAgM,WAAY,SAAUoC,GACrB,OAAO7S,KAAKyB,MAAM,WACjBwC,EAAOwM,WAAYzQ,KAAM6S,EAC1B,GACD,IAGD5O,EAAOxD,OAAQ,CACd6D,KAAM,SAAUkf,EAAM3Q,EAAM9L,GAC3B,IAAIsc,EAAK2Z,EACRgV,EAAQxuB,EAAKxB,SAGd,GAAe,IAAVgwB,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,YAAkC,IAAtBxuB,EAAKb,aACT1e,EAAOm4B,KAAM5Y,EAAM3Q,EAAM9L,IAKlB,IAAVirC,GAAgB/tC,EAAOowB,SAAU7Q,KACrCwZ,EAAQ/4B,EAAOguC,UAAWp/B,EAAKrM,iBAC5BvC,EAAOqpB,KAAK1mB,MAAMsrC,KAAK3tC,KAAMsO,GAASk/B,QAAWj/B,SAGtCA,IAAV/L,EACW,OAAVA,OACJ9C,EAAOwM,WAAY+S,EAAM3Q,GAIrBmqB,GAAS,QAASA,QACuBlqB,KAA3CuQ,EAAM2Z,EAAMlhB,IAAK0H,EAAMzc,EAAO8L,IACzBwQ,GAGRG,EAAKZ,aAAc/P,EAAM9L,EAAQ,IAC1BA,GAGHi2B,GAAS,QAASA,GAA+C,QAApC3Z,EAAM2Z,EAAMzgB,IAAKiH,EAAM3Q,IACjDwQ,EAMM,OAHdA,EAAMpf,EAAOpD,KAAKyD,KAAMkf,EAAM3Q,SAGTC,EAAYuQ,EAClC,EAEA4uB,UAAW,CACVjtC,KAAM,CACL8W,IAAK,SAAU0H,EAAMzc,GACpB,IAAMmI,EAAQ4iC,YAAwB,UAAV/qC,GAC3BR,EAAUid,EAAM,SAAY,CAC5B,IAAItjB,EAAMsjB,EAAKzc,MAKf,OAJAyc,EAAKZ,aAAc,OAAQ7b,GACtB7G,IACJsjB,EAAKzc,MAAQ7G,GAEP6G,CACR,CACD,IAIF0J,WAAY,SAAU+S,EAAMzc,GAC3B,IAAI8L,EACH5L,EAAI,EAIJkrC,EAAYprC,GAASA,EAAMH,MAAO0vB,GAEnC,GAAK6b,GAA+B,IAAlB3uB,EAAKxB,SACtB,KAAUnP,EAAOs/B,EAAWlrC,MAC3Buc,EAAKlb,gBAAiBuK,EAGzB,IAIDk/B,GAAW,CACVj2B,IAAK,SAAU0H,EAAMzc,EAAO8L,GAQ3B,OAPe,IAAV9L,EAGJ9C,EAAOwM,WAAY+S,EAAM3Q,GAEzB2Q,EAAKZ,aAAc/P,EAAMA,GAEnBA,CACR,GAGD5O,EAAOxC,KAAMwC,EAAOqpB,KAAK1mB,MAAMsrC,KAAK3U,OAAO32B,MAAO,SAAU,SAAU0e,EAAIzS,GACzE,IAAIu/B,EAASznB,GAAY9X,IAAU5O,EAAOpD,KAAKyD,KAE/CqmB,GAAY9X,GAAS,SAAU2Q,EAAM3Q,EAAM6S,GAC1C,IAAIrC,EAAK/P,EACR++B,EAAgBx/B,EAAKrM,cAYtB,OAVMkf,IAGLpS,EAASqX,GAAY0nB,GACrB1nB,GAAY0nB,GAAkBhvB,EAC9BA,EAAqC,MAA/B+uB,EAAQ5uB,EAAM3Q,EAAM6S,GACzB2sB,EACA,KACD1nB,GAAY0nB,GAAkB/+B,GAExB+P,CACR,CACD,IAKA,IAAIivB,GAAa,sCAChBC,GAAa,gBAwIb,SAASC,GAAkBzrC,GAE1B,OADaA,EAAMH,MAAO0vB,IAAmB,IAC/Ble,KAAM,IACrB,CAGD,SAASq6B,GAAUjvB,GAClB,OAAOA,EAAKb,cAAgBa,EAAKb,aAAc,UAAa,EAC7D,CAEA,SAAS+vB,GAAgB3rC,GACxB,OAAKrH,MAAMU,QAAS2G,GACZA,EAEc,iBAAVA,GACJA,EAAMH,MAAO0vB,IAEd,EACR,CAxJAryB,EAAOJ,GAAGpD,OAAQ,CACjB27B,KAAM,SAAUvpB,EAAM9L,GACrB,OAAOk0B,EAAQj7B,KAAMiE,EAAOm4B,KAAMvpB,EAAM9L,EAAO2M,UAAUjP,OAAS,EACnE,EAEAkuC,WAAY,SAAU9/B,GACrB,OAAO7S,KAAKyB,MAAM,kBACVzB,KAAMiE,EAAO2uC,QAAS//B,IAAUA,EACxC,GACD,IAGD5O,EAAOxD,OAAQ,CACd27B,KAAM,SAAU5Y,EAAM3Q,EAAM9L,GAC3B,IAAIsc,EAAK2Z,EACRgV,EAAQxuB,EAAKxB,SAGd,GAAe,IAAVgwB,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgB/tC,EAAOowB,SAAU7Q,KAGrC3Q,EAAO5O,EAAO2uC,QAAS//B,IAAUA,EACjCmqB,EAAQ/4B,EAAOmpC,UAAWv6B,SAGZC,IAAV/L,EACCi2B,GAAS,QAASA,QACuBlqB,KAA3CuQ,EAAM2Z,EAAMlhB,IAAK0H,EAAMzc,EAAO8L,IACzBwQ,EAGCG,EAAM3Q,GAAS9L,EAGpBi2B,GAAS,QAASA,GAA+C,QAApC3Z,EAAM2Z,EAAMzgB,IAAKiH,EAAM3Q,IACjDwQ,EAGDG,EAAM3Q,EACd,EAEAu6B,UAAW,CACV/c,SAAU,CACT9T,IAAK,SAAUiH,GAMd,IAAIqvB,EAAW5uC,EAAOpD,KAAKyD,KAAMkf,EAAM,YAEvC,OAAKqvB,EACGtjC,SAAUsjC,EAAU,IAI3BP,GAAW/tC,KAAMif,EAAKjd,WACtBgsC,GAAWhuC,KAAMif,EAAKjd,WACtBid,EAAK4M,KAEE,GAGA,CACT,IAIFwiB,QAAS,CACR,IAAO,UACP,MAAS,eAYL1jC,EAAQ2iC,cACb5tC,EAAOmpC,UAAU7c,SAAW,CAC3BhU,IAAK,SAAUiH,GAId,IAAI9e,EAAS8e,EAAKjb,WAIlB,OAHK7D,GAAUA,EAAO6D,YACrB7D,EAAO6D,WAAWioB,cAEZ,IACR,EACA1U,IAAK,SAAU0H,GAId,IAAI9e,EAAS8e,EAAKjb,WACb7D,IACJA,EAAO8rB,cAEF9rB,EAAO6D,YACX7D,EAAO6D,WAAWioB,cAGrB,IAIFvsB,EAAOxC,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACE,WACFwC,EAAO2uC,QAAS5yC,KAAKwG,eAAkBxG,IACxC,IA2BAiE,EAAOJ,GAAGpD,OAAQ,CACjBoC,SAAU,SAAUkE,GACnB,IAAI+rC,EAAYjoB,EAAKkoB,EAAUjnB,EAAW7kB,EAAG+rC,EAE7C,OAAKxnC,EAAYzE,GACT/G,KAAKyB,MAAM,SAAU2G,GAC3BnE,EAAQjE,MAAO6C,SAAUkE,EAAMhH,KAAMC,KAAMoI,EAAGqqC,GAAUzyC,OACzD,KAGD8yC,EAAaJ,GAAgB3rC,IAEbtC,OACRzE,KAAKyB,MAAM,WAIjB,GAHAsxC,EAAWN,GAAUzyC,MACrB6qB,EAAwB,IAAlB7qB,KAAKgiB,UAAoB,IAAMwwB,GAAkBO,GAAa,IAEzD,CACV,IAAM9rC,EAAI,EAAGA,EAAI6rC,EAAWruC,OAAQwC,IACnC6kB,EAAYgnB,EAAY7rC,GACnB4jB,EAAI3J,QAAS,IAAM4K,EAAY,KAAQ,IAC3CjB,GAAOiB,EAAY,KAKrBknB,EAAaR,GAAkB3nB,GAC1BkoB,IAAaC,GACjBhzC,KAAK4iB,aAAc,QAASowB,EAE9B,CACD,IAGMhzC,IACR,EAEA4C,YAAa,SAAUmE,GACtB,IAAI+rC,EAAYjoB,EAAKkoB,EAAUjnB,EAAW7kB,EAAG+rC,EAE7C,OAAKxnC,EAAYzE,GACT/G,KAAKyB,MAAM,SAAU2G,GAC3BnE,EAAQjE,MAAO4C,YAAamE,EAAMhH,KAAMC,KAAMoI,EAAGqqC,GAAUzyC,OAC5D,IAGK0T,UAAUjP,QAIhBquC,EAAaJ,GAAgB3rC,IAEbtC,OACRzE,KAAKyB,MAAM,WAMjB,GALAsxC,EAAWN,GAAUzyC,MAGrB6qB,EAAwB,IAAlB7qB,KAAKgiB,UAAoB,IAAMwwB,GAAkBO,GAAa,IAEzD,CACV,IAAM9rC,EAAI,EAAGA,EAAI6rC,EAAWruC,OAAQwC,IAInC,IAHA6kB,EAAYgnB,EAAY7rC,GAGhB4jB,EAAI3J,QAAS,IAAM4K,EAAY,MAAS,GAC/CjB,EAAMA,EAAIlnB,QAAS,IAAMmoB,EAAY,IAAK,KAK5CknB,EAAaR,GAAkB3nB,GAC1BkoB,IAAaC,GACjBhzC,KAAK4iB,aAAc,QAASowB,EAE9B,CACD,IAGMhzC,KA/BCA,KAAKsE,KAAM,QAAS,GAgC7B,EAEAkB,YAAa,SAAUuB,EAAOksC,GAC7B,IAAIH,EAAYhnB,EAAW7kB,EAAG+F,EAC7BhI,SAAc+B,EACdmsC,EAAwB,WAATluC,GAAqBtF,MAAMU,QAAS2G,GAEpD,OAAKyE,EAAYzE,GACT/G,KAAKyB,MAAM,SAAUwF,GAC3BhD,EAAQjE,MAAOwF,YACduB,EAAMhH,KAAMC,KAAMiH,EAAGwrC,GAAUzyC,MAAQizC,GACvCA,EAEF,IAGwB,kBAAbA,GAA0BC,EAC9BD,EAAWjzC,KAAK6C,SAAUkE,GAAU/G,KAAK4C,YAAamE,IAG9D+rC,EAAaJ,GAAgB3rC,GAEtB/G,KAAKyB,MAAM,WACjB,GAAKyxC,EAKJ,IAFAlmC,EAAO/I,EAAQjE,MAETiH,EAAI,EAAGA,EAAI6rC,EAAWruC,OAAQwC,IACnC6kB,EAAYgnB,EAAY7rC,GAGnB+F,EAAKjI,SAAU+mB,GACnB9e,EAAKpK,YAAakpB,GAElB9e,EAAKnK,SAAUipB,aAKIhZ,IAAV/L,GAAgC,YAAT/B,KAClC8mB,EAAY2mB,GAAUzyC,QAIrBs8B,EAASxgB,IAAK9b,KAAM,gBAAiB8rB,GAOjC9rB,KAAK4iB,cACT5iB,KAAK4iB,aAAc,QAClBkJ,IAAuB,IAAV/kB,EACZ,GACAu1B,EAAS/f,IAAKvc,KAAM,kBAAqB,IAI9C,IACD,EAEA+E,SAAU,SAAUV,GACnB,IAAIynB,EAAWtI,EACdvc,EAAI,EAGL,IADA6kB,EAAY,IAAMznB,EAAW,IACnBmf,EAAOxjB,KAAMiH,MACtB,GAAuB,IAAlBuc,EAAKxB,WACP,IAAMwwB,GAAkBC,GAAUjvB,IAAW,KAAMtC,QAAS4K,IAAe,EAC7E,OAAO,EAIT,OAAO,CACR,IAMD,IAAIqnB,GAAU,MAEdlvC,EAAOJ,GAAGpD,OAAQ,CACjBP,IAAK,SAAU6G,GACd,IAAIi2B,EAAO3Z,EAAK2jB,EACfxjB,EAAOxjB,KAAM,GAEd,OAAM0T,UAAUjP,QA0BhBuiC,EAAkBx7B,EAAYzE,GAEvB/G,KAAKyB,MAAM,SAAUwF,GAC3B,IAAI/G,EAEmB,IAAlBF,KAAKgiB,WAWE,OANX9hB,EADI8mC,EACEjgC,EAAMhH,KAAMC,KAAMiH,EAAGhD,EAAQjE,MAAOE,OAEpC6G,GAKN7G,EAAM,GAEoB,iBAARA,EAClBA,GAAO,GAEIR,MAAMU,QAASF,KAC1BA,EAAM+D,EAAO2D,IAAK1H,GAAK,SAAU6G,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,EACrC,MAGDi2B,EAAQ/4B,EAAOmvC,SAAUpzC,KAAKgF,OAAUf,EAAOmvC,SAAUpzC,KAAKuG,SAASC,iBAGrD,QAASw2B,QAA+ClqB,IAApCkqB,EAAMlhB,IAAK9b,KAAME,EAAK,WAC3DF,KAAK+G,MAAQ7G,GAEf,KA3DMsjB,GACJwZ,EAAQ/4B,EAAOmvC,SAAU5vB,EAAKxe,OAC7Bf,EAAOmvC,SAAU5vB,EAAKjd,SAASC,iBAG/B,QAASw2B,QACgClqB,KAAvCuQ,EAAM2Z,EAAMzgB,IAAKiH,EAAM,UAElBH,EAMY,iBAHpBA,EAAMG,EAAKzc,OAIHsc,EAAI1f,QAASwvC,GAAS,IAIhB,MAAP9vB,EAAc,GAAKA,OAG3B,CAsCF,IAGDpf,EAAOxD,OAAQ,CACd2yC,SAAU,CACT5xC,OAAQ,CACP+a,IAAK,SAAUiH,GAEd,IAAItjB,EAAM+D,EAAOpD,KAAKyD,KAAMkf,EAAM,SAClC,OAAc,MAAPtjB,EACNA,EAMAsyC,GAAkBvuC,EAAOsM,KAAMiT,GACjC,GAEDqC,OAAQ,CACPtJ,IAAK,SAAUiH,GACd,IAAIzc,EAAOvF,EAAQyF,EAClBzG,EAAUgjB,EAAKhjB,QACfqF,EAAQ2d,EAAKgN,cACbphB,EAAoB,eAAdoU,EAAKxe,KACX45B,EAASxvB,EAAM,KAAO,GACtBlM,EAAMkM,EAAMvJ,EAAQ,EAAIrF,EAAQiE,OAUjC,IAPCwC,EADIpB,EAAQ,EACR3C,EAGAkM,EAAMvJ,EAAQ,EAIXoB,EAAI/D,EAAK+D,IAKhB,KAJAzF,EAAShB,EAASyG,IAIJspB,UAAYtpB,IAAMpB,KAG7BrE,EAAOwnB,YACLxnB,EAAO+G,WAAWygB,WACnBziB,EAAU/E,EAAO+G,WAAY,aAAiB,CAMjD,GAHAxB,EAAQ9C,EAAQzC,GAAStB,MAGpBkP,EACJ,OAAOrI,EAIR63B,EAAO1pB,KAAMnO,EACd,CAGD,OAAO63B,CACR,EAEA9iB,IAAK,SAAU0H,EAAMzc,GAMpB,IALA,IAAIssC,EAAW7xC,EACdhB,EAAUgjB,EAAKhjB,QACfo+B,EAAS36B,EAAO2gB,UAAW7d,GAC3BE,EAAIzG,EAAQiE,OAELwC,OACPzF,EAAShB,EAASyG,IAINspB,SACXtsB,EAAOwC,QAASxC,EAAOmvC,SAAS5xC,OAAO+a,IAAK/a,GAAUo9B,IAAY,KAElEyU,GAAY,GAUd,OAHMA,IACL7vB,EAAKgN,eAAiB,GAEhBoO,CACR,MAMH36B,EAAOxC,KAAM,CAAE,QAAS,aAAc,WACrCwC,EAAOmvC,SAAUpzC,MAAS,CACzB8b,IAAK,SAAU0H,EAAMzc,GACpB,GAAKrH,MAAMU,QAAS2G,GACnB,OAASyc,EAAK8M,QAAUrsB,EAAOwC,QAASxC,EAAQuf,GAAOtjB,MAAO6G,IAAW,CAE3E,GAEKmI,EAAQ0iC,UACb3tC,EAAOmvC,SAAUpzC,MAAOuc,IAAM,SAAUiH,GACvC,OAAwC,OAAjCA,EAAKb,aAAc,SAAqB,KAAOa,EAAKzc,KAC5D,EAEF,IAQAmI,EAAQokC,QAAU,cAAevxC,EAGjC,IAAIwxC,GAAc,kCACjBC,GAA0B,SAAUjwC,GACnCA,EAAEoC,iBACH,EAED1B,EAAOxD,OAAQwD,EAAOgP,MAAO,CAE5BxP,QAAS,SAAUwP,EAAOtR,EAAM6hB,EAAMiwB,GAErC,IAAIxsC,EAAG4jB,EAAKwB,EAAKqnB,EAAYC,EAAQrgC,EAAQJ,EAAS0gC,EACrDC,EAAY,CAAErwB,GAAQ5iB,GACtBoE,EAAO6c,EAAO9hB,KAAMkT,EAAO,QAAWA,EAAMjO,KAAOiO,EACnD4uB,EAAahgB,EAAO9hB,KAAMkT,EAAO,aAAgBA,EAAMsY,UAAUxf,MAAO,KAAQ,GAKjF,GAHA8e,EAAM+oB,EAAcvnB,EAAM7I,EAAOA,GAAQ5iB,EAGlB,IAAlB4iB,EAAKxB,UAAoC,IAAlBwB,EAAKxB,WAK5BuxB,GAAYhvC,KAAMS,EAAOf,EAAOgP,MAAMgvB,aAItCj9B,EAAKkc,QAAS,MAAS,IAG3B2gB,EAAa78B,EAAK+G,MAAO,KACzB/G,EAAO68B,EAAWvX,QAClBuX,EAAWnsB,QAEZi+B,EAAS3uC,EAAKkc,QAAS,KAAQ,GAAK,KAAOlc,GAG3CiO,EAAQA,EAAOhP,EAAOkgB,SACrBlR,EACA,IAAIhP,EAAOT,MAAOwB,EAAuB,iBAAViO,GAAsBA,IAGhDsuB,UAAYkS,EAAe,EAAI,EACrCxgC,EAAMsY,UAAYsW,EAAWzpB,KAAM,KACnCnF,EAAM+vB,WAAa/vB,EAAMsY,UACxB,IAAIvkB,OAAQ,UAAY66B,EAAWzpB,KAAM,iBAAoB,WAC7D,KAGDnF,EAAMwb,YAAS3b,EACTG,EAAMtS,SACXsS,EAAMtS,OAAS6iB,GAIhB7hB,EAAe,MAARA,EACN,CAAEsR,GACFhP,EAAO2gB,UAAWjjB,EAAM,CAAEsR,IAG3BC,EAAUjP,EAAOgP,MAAMC,QAASlO,IAAU,CAAC,EACrCyuC,IAAgBvgC,EAAQzP,UAAmD,IAAxCyP,EAAQzP,QAAQgQ,MAAO+P,EAAM7hB,IAAtE,CAMA,IAAM8xC,IAAiBvgC,EAAQywB,WAAazhB,EAAUsB,GAAS,CAM9D,IAJAkwB,EAAaxgC,EAAQG,cAAgBrO,EAC/BuuC,GAAYhvC,KAAMmvC,EAAa1uC,KACpC6lB,EAAMA,EAAItiB,YAEHsiB,EAAKA,EAAMA,EAAItiB,WACtBsrC,EAAU3+B,KAAM2V,GAChBwB,EAAMxB,EAIFwB,KAAU7I,EAAKjW,eAAiB3M,IACpCizC,EAAU3+B,KAAMmX,EAAIV,aAAeU,EAAIynB,cAAgB/xC,EAEzD,CAIA,IADAkF,EAAI,GACM4jB,EAAMgpB,EAAW5sC,QAAYgM,EAAM6vB,wBAC5C8Q,EAAc/oB,EACd5X,EAAMjO,KAAOiC,EAAI,EAChBysC,EACAxgC,EAAQE,UAAYpO,GAGrBsO,GAAWgpB,EAAS/f,IAAKsO,EAAK,WAAcpJ,OAAOugB,OAAQ,OAAU/uB,EAAMjO,OAC1Es3B,EAAS/f,IAAKsO,EAAK,YAEnBvX,EAAOG,MAAOoX,EAAKlpB,IAIpB2R,EAASqgC,GAAU9oB,EAAK8oB,KACTrgC,EAAOG,OAASqoB,EAAYjR,KAC1C5X,EAAMwb,OAASnb,EAAOG,MAAOoX,EAAKlpB,IACZ,IAAjBsR,EAAMwb,QACVxb,EAAMvN,kBA8CT,OA1CAuN,EAAMjO,KAAOA,EAGPyuC,GAAiBxgC,EAAMvP,sBAEpBwP,EAAQssB,WACqC,IAApDtsB,EAAQssB,SAAS/rB,MAAOogC,EAAUj+B,MAAOjU,KACzCm6B,EAAYtY,IAIPmwB,GAAUnoC,EAAYgY,EAAMxe,MAAakd,EAAUsB,MAGvD6I,EAAM7I,EAAMmwB,MAGXnwB,EAAMmwB,GAAW,MAIlB1vC,EAAOgP,MAAMgvB,UAAYj9B,EAEpBiO,EAAM6vB,wBACV8Q,EAAYhoB,iBAAkB5mB,EAAMwuC,IAGrChwB,EAAMxe,KAEDiO,EAAM6vB,wBACV8Q,EAAYhZ,oBAAqB51B,EAAMwuC,IAGxCvvC,EAAOgP,MAAMgvB,eAAYnvB,EAEpBuZ,IACJ7I,EAAMmwB,GAAWtnB,IAMdpZ,EAAMwb,MAvFb,CAwFD,EAIAslB,SAAU,SAAU/uC,EAAMwe,EAAMvQ,GAC/B,IAAI1P,EAAIU,EAAOxD,OACd,IAAIwD,EAAOT,MACXyP,EACA,CACCjO,KAAMA,EACNi/B,aAAa,IAIfhgC,EAAOgP,MAAMxP,QAASF,EAAG,KAAMigB,EAChC,IAIDvf,EAAOJ,GAAGpD,OAAQ,CAEjBgD,QAAS,SAAUuB,EAAMrD,GACxB,OAAO3B,KAAKyB,MAAM,WACjBwC,EAAOgP,MAAMxP,QAASuB,EAAMrD,EAAM3B,KACnC,GACD,EACAg0C,eAAgB,SAAUhvC,EAAMrD,GAC/B,IAAI6hB,EAAOxjB,KAAM,GACjB,GAAKwjB,EACJ,OAAOvf,EAAOgP,MAAMxP,QAASuB,EAAMrD,EAAM6hB,GAAM,EAEjD,IAYKtU,EAAQokC,SACbrvC,EAAOxC,KAAM,CAAEkK,MAAO,UAAW+5B,KAAM,aAAc,SAAUK,EAAMpD,GAGpE,IAAInvB,EAAU,SAAUP,GACvBhP,EAAOgP,MAAM8gC,SAAUpR,EAAK1vB,EAAMtS,OAAQsD,EAAOgP,MAAM0vB,IAAK1vB,GAC7D,EAEAhP,EAAOgP,MAAMC,QAASyvB,GAAQ,CAC7BP,MAAO,WAIN,IAAI3f,EAAMziB,KAAKuN,eAAiBvN,KAAKY,UAAYZ,KAChDi0C,EAAW3X,EAASrB,OAAQxY,EAAKkgB,GAE5BsR,GACLxxB,EAAImJ,iBAAkBma,EAAMvyB,GAAS,GAEtC8oB,EAASrB,OAAQxY,EAAKkgB,GAAOsR,GAAY,GAAM,EAChD,EACA1R,SAAU,WACT,IAAI9f,EAAMziB,KAAKuN,eAAiBvN,KAAKY,UAAYZ,KAChDi0C,EAAW3X,EAASrB,OAAQxY,EAAKkgB,GAAQ,EAEpCsR,EAKL3X,EAASrB,OAAQxY,EAAKkgB,EAAKsR,IAJ3BxxB,EAAImY,oBAAqBmL,EAAMvyB,GAAS,GACxC8oB,EAASz3B,OAAQ4d,EAAKkgB,GAKxB,EAEF,IAED,IAAI1S,GAAWluB,EAAOkuB,SAElB5N,GAAQ,CAAE8C,KAAMlL,KAAK+pB,OAErBkQ,GAAW,KAKfjwC,EAAOkwC,SAAW,SAAUxyC,GAC3B,IAAIqtB,EAAKolB,EACT,IAAMzyC,GAAwB,iBAATA,EACpB,OAAO,KAKR,IACCqtB,GAAQ,IAAIjtB,EAAOsyC,WAAcC,gBAAiB3yC,EAAM,WAC1C,CAAb,MAAQ4B,GAAK,CAYf,OAVA6wC,EAAkBplB,GAAOA,EAAIpF,qBAAsB,eAAiB,GAC9DoF,IAAOolB,GACZnwC,EAAOogB,MAAO,iBACb+vB,EACCnwC,EAAO2D,IAAKwsC,EAAgBjrB,YAAY,SAAUthB,GACjD,OAAOA,EAAGgmB,WACX,IAAIzV,KAAM,MACVzW,IAGIqtB,CACR,EAGA,IACCulB,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAajjC,EAAQ3E,EAAK6nC,EAAa97B,GAC/C,IAAIjG,EAEJ,GAAKnT,MAAMU,QAAS2M,GAGnB9I,EAAOxC,KAAMsL,GAAK,SAAU9F,EAAGoR,GACzBu8B,GAAeL,GAAShwC,KAAMmN,GAGlCoH,EAAKpH,EAAQ2G,GAKbs8B,GACCjjC,EAAS,KAAqB,iBAAN2G,GAAuB,MAALA,EAAYpR,EAAI,IAAO,IACjEoR,EACAu8B,EACA97B,EAGH,SAEM,GAAM87B,GAAiC,WAAlB9xB,EAAQ/V,GAUnC+L,EAAKpH,EAAQ3E,QAPb,IAAM8F,KAAQ9F,EACb4nC,GAAajjC,EAAS,IAAMmB,EAAO,IAAK9F,EAAK8F,GAAQ+hC,EAAa97B,EAQrE,CAIA7U,EAAO4wC,MAAQ,SAAUnrC,EAAGkrC,GAC3B,IAAIljC,EACH5G,EAAI,GACJgO,EAAM,SAAUhM,EAAKgoC,GAGpB,IAAI/tC,EAAQyE,EAAYspC,GACvBA,IACAA,EAEDhqC,EAAGA,EAAErG,QAAWswC,mBAAoBjoC,GAAQ,IAC3CioC,mBAA6B,MAAThuC,EAAgB,GAAKA,EAC3C,EAED,GAAU,MAAL2C,EACJ,MAAO,GAIR,GAAKhK,MAAMU,QAASsJ,IAASA,EAAEsZ,SAAW/e,EAAOigB,cAAexa,GAG/DzF,EAAOxC,KAAMiI,GAAG,WACfoP,EAAK9Y,KAAK6S,KAAM7S,KAAK+G,MACtB,SAMA,IAAM2K,KAAUhI,EACfirC,GAAajjC,EAAQhI,EAAGgI,GAAUkjC,EAAa97B,GAKjD,OAAOhO,EAAEsN,KAAM,IAChB,EAEAnU,EAAOJ,GAAGpD,OAAQ,CACjBu0C,UAAW,WACV,OAAO/wC,EAAO4wC,MAAO70C,KAAKi1C,iBAC3B,EACAA,eAAgB,WACf,OAAOj1C,KAAK4H,KAAK,WAGhB,IAAIE,EAAW7D,EAAOm4B,KAAMp8B,KAAM,YAClC,OAAO8H,EAAW7D,EAAO2gB,UAAW9c,GAAa9H,IAClD,IAAI8G,QAAQ,WACX,IAAI9B,EAAOhF,KAAKgF,KAGhB,OAAOhF,KAAK6S,OAAS5O,EAAQjE,MAAO+C,GAAI,cACvC2xC,GAAanwC,KAAMvE,KAAKuG,YAAekuC,GAAgBlwC,KAAMS,KAC3DhF,KAAKswB,UAAYuO,GAAet6B,KAAMS,GAC1C,IAAI4C,KAAK,SAAU0d,EAAI9B,GACtB,IAAItjB,EAAM+D,EAAQjE,MAAOE,MAEzB,OAAY,MAAPA,EACG,KAGHR,MAAMU,QAASF,GACZ+D,EAAO2D,IAAK1H,GAAK,SAAUA,GACjC,MAAO,CAAE2S,KAAM2Q,EAAK3Q,KAAM9L,MAAO7G,EAAIyD,QAAS6wC,GAAO,QACtD,IAGM,CAAE3hC,KAAM2Q,EAAK3Q,KAAM9L,MAAO7G,EAAIyD,QAAS6wC,GAAO,QACtD,IAAIj4B,KACL,IAID,IACC24B,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZvG,GAAa,CAAC,EAOdwG,GAAa,CAAC,EAGdC,GAAW,KAAKt1C,OAAQ,KAGxBu1C,GAAe90C,EAAS0E,cAAe,KAKxC,SAASqwC,GAA6BC,GAGrC,OAAO,SAAUC,EAAoB1d,GAED,iBAAvB0d,IACX1d,EAAO0d,EACPA,EAAqB,KAGtB,IAAIC,EACH7uC,EAAI,EACJ8uC,EAAYF,EAAmBrvC,cAAcI,MAAO0vB,IAAmB,GAExE,GAAK9qB,EAAY2sB,GAGhB,KAAU2d,EAAWC,EAAW9uC,MAGR,MAAlB6uC,EAAU,IACdA,EAAWA,EAASvgC,MAAO,IAAO,KAChCqgC,EAAWE,GAAaF,EAAWE,IAAc,IAAKzoB,QAAS8K,KAI/Dyd,EAAWE,GAAaF,EAAWE,IAAc,IAAK5gC,KAAMijB,EAIlE,CACD,CAGA,SAAS6d,GAA+BJ,EAAWp1C,EAAS+uC,EAAiB0G,GAE5E,IAAIC,EAAY,CAAC,EAChBC,EAAqBP,IAAcJ,GAEpC,SAASY,EAASN,GACjB,IAAIvlB,EAcJ,OAbA2lB,EAAWJ,IAAa,EACxB7xC,EAAOxC,KAAMm0C,EAAWE,IAAc,IAAI,SAAU18B,EAAGi9B,GACtD,IAAIC,EAAsBD,EAAoB71C,EAAS+uC,EAAiB0G,GACxE,MAAoC,iBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACD5lB,EAAW+lB,QADf,GAHN91C,EAAQu1C,UAAU1oB,QAASipB,GAC3BF,EAASE,IACF,EAIT,IACO/lB,CACR,CAEA,OAAO6lB,EAAS51C,EAAQu1C,UAAW,MAAUG,EAAW,MAASE,EAAS,IAC3E,CAKA,SAASG,GAAY51C,EAAQyhB,GAC5B,IAAItV,EAAKmX,EACRuyB,EAAcvyC,EAAOwyC,aAAaD,aAAe,CAAC,EAEnD,IAAM1pC,KAAOsV,OACQtP,IAAfsP,EAAKtV,MACP0pC,EAAa1pC,GAAQnM,EAAWsjB,IAAUA,EAAO,CAAC,IAASnX,GAAQsV,EAAKtV,IAO5E,OAJKmX,GACJhgB,EAAOxD,QAAQ,EAAME,EAAQsjB,GAGvBtjB,CACR,CAhFA+0C,GAAatlB,KAAOH,GAASG,KAgP7BnsB,EAAOxD,OAAQ,CAGdi2C,OAAQ,EAGRC,aAAc,CAAC,EACfC,KAAM,CAAC,EAEPH,aAAc,CACbI,IAAK5mB,GAASG,KACdprB,KAAM,MACN8xC,QAxRgB,4DAwRQvyC,KAAM0rB,GAAS8mB,UACvC/2B,QAAQ,EACRg3B,aAAa,EACbC,OAAO,EACPC,YAAa,mDAcbC,QAAS,CACR,IAAK1B,GACLllC,KAAM,aACNlH,KAAM,YACN2lB,IAAK,4BACLooB,KAAM,qCAGP7hB,SAAU,CACTvG,IAAK,UACL3lB,KAAM,SACN+tC,KAAM,YAGPC,eAAgB,CACfroB,IAAK,cACLze,KAAM,eACN6mC,KAAM,gBAKPE,WAAY,CAGX,SAAUn/B,OAGV,aAAa,EAGb,YAAaukB,KAAK3iB,MAGlB,WAAY9V,EAAOkwC,UAOpBqC,YAAa,CACZK,KAAK,EACLhjC,SAAS,IAOX0jC,UAAW,SAAU52C,EAAQ62C,GAC5B,OAAOA,EAGNjB,GAAYA,GAAY51C,EAAQsD,EAAOwyC,cAAgBe,GAGvDjB,GAAYtyC,EAAOwyC,aAAc91C,EACnC,EAEA82C,cAAe9B,GAA6B3G,IAC5C0I,cAAe/B,GAA6BH,IAG5CmC,KAAM,SAAUd,EAAKr2C,GAGA,iBAARq2C,IACXr2C,EAAUq2C,EACVA,OAAM/jC,GAMP,IAAI8kC,EAGHC,EAGAC,EACAC,EAGAC,EAGAC,EAGAtd,EAGAud,EAGAjxC,EAGAkxC,EAGArtC,EAAI7G,EAAOszC,UAAW,CAAC,EA9BxB/2C,EAAUA,GAAW,CAAC,GAiCrB43C,EAAkBttC,EAAE+I,SAAW/I,EAG/ButC,EAAqBvtC,EAAE+I,UACpBukC,EAAgBp2B,UAAYo2B,EAAgBp1B,QAC9C/e,EAAQm0C,GACRn0C,EAAOgP,MAGRslB,EAAWt0B,EAAOi0B,WAClBogB,EAAmBr0C,EAAOizB,UAAW,eAGrCqhB,EAAaztC,EAAEytC,YAAc,CAAC,EAG9BC,EAAiB,CAAC,EAClBC,EAAsB,CAAC,EAGvBC,EAAW,WAGXzC,EAAQ,CACPlb,WAAY,EAGZ4d,kBAAmB,SAAU7rC,GAC5B,IAAIlG,EACJ,GAAK+zB,EAAY,CAChB,IAAMod,EAEL,IADAA,EAAkB,CAAC,EACTnxC,EAAQyuC,GAAS3rB,KAAMouB,IAChCC,EAAiBnxC,EAAO,GAAIJ,cAAgB,MACzCuxC,EAAiBnxC,EAAO,GAAIJ,cAAgB,MAAS,IACrDrG,OAAQyG,EAAO,IAGpBA,EAAQmxC,EAAiBjrC,EAAItG,cAAgB,IAC9C,CACA,OAAgB,MAATI,EAAgB,KAAOA,EAAMwR,KAAM,KAC3C,EAGAwgC,sBAAuB,WACtB,OAAOje,EAAYmd,EAAwB,IAC5C,EAGAe,iBAAkB,SAAUhmC,EAAM9L,GAMjC,OALkB,MAAb4zB,IACJ9nB,EAAO4lC,EAAqB5lC,EAAKrM,eAChCiyC,EAAqB5lC,EAAKrM,gBAAmBqM,EAC9C2lC,EAAgB3lC,GAAS9L,GAEnB/G,IACR,EAGA84C,iBAAkB,SAAU9zC,GAI3B,OAHkB,MAAb21B,IACJ7vB,EAAEiuC,SAAW/zC,GAEPhF,IACR,EAGAu4C,WAAY,SAAU3wC,GACrB,IAAImC,EACJ,GAAKnC,EACJ,GAAK+yB,EAGJsb,EAAM3d,OAAQ1wB,EAAKquC,EAAM+C,cAIzB,IAAMjvC,KAAQnC,EACb2wC,EAAYxuC,GAAS,CAAEwuC,EAAYxuC,GAAQnC,EAAKmC,IAInD,OAAO/J,IACR,EAGAi5C,MAAO,SAAUC,GAChB,IAAIC,EAAYD,GAAcR,EAK9B,OAJKd,GACJA,EAAUqB,MAAOE,GAElB3yB,EAAM,EAAG2yB,GACFn5C,IACR,GAmBF,GAfAu4B,EAASxB,QAASkf,GAKlBnrC,EAAE+rC,MAAUA,GAAO/rC,EAAE+rC,KAAO5mB,GAASG,MAAS,IAC5CzsB,QAAS4xC,GAAWtlB,GAAS8mB,SAAW,MAG1CjsC,EAAE9F,KAAOxE,EAAQs2B,QAAUt2B,EAAQwE,MAAQ8F,EAAEgsB,QAAUhsB,EAAE9F,KAGzD8F,EAAEirC,WAAcjrC,EAAEgrC,UAAY,KAAMtvC,cAAcI,MAAO0vB,IAAmB,CAAE,IAGxD,MAAjBxrB,EAAEsuC,YAAsB,CAC5BnB,EAAYr3C,EAAS0E,cAAe,KAKpC,IACC2yC,EAAU7nB,KAAOtlB,EAAE+rC,IAInBoB,EAAU7nB,KAAO6nB,EAAU7nB,KAC3BtlB,EAAEsuC,YAAc1D,GAAaqB,SAAW,KAAOrB,GAAa2D,MAC3DpB,EAAUlB,SAAW,KAAOkB,EAAUoB,IAMxC,CALE,MAAQ91C,GAITuH,EAAEsuC,aAAc,CACjB,CACD,CAWA,GARKtuC,EAAEnJ,MAAQmJ,EAAEksC,aAAiC,iBAAXlsC,EAAEnJ,OACxCmJ,EAAEnJ,KAAOsC,EAAO4wC,MAAO/pC,EAAEnJ,KAAMmJ,EAAE8pC,cAIlCoB,GAA+BhH,GAAYlkC,EAAGtK,EAASy1C,GAGlDtb,EACJ,OAAOsb,EA8ER,IAAMhvC,KAzENixC,EAAcj0C,EAAOgP,OAASnI,EAAEkV,SAGQ,GAApB/b,EAAOyyC,UAC1BzyC,EAAOgP,MAAMxP,QAAS,aAIvBqH,EAAE9F,KAAO8F,EAAE9F,KAAKka,cAGhBpU,EAAEuC,YAAcioC,GAAW/wC,KAAMuG,EAAE9F,MAKnC6yC,EAAW/sC,EAAE+rC,IAAIlzC,QAASwxC,GAAO,IAG3BrqC,EAAEuC,WAwBIvC,EAAEnJ,MAAQmJ,EAAEksC,aACoD,KAAzElsC,EAAEosC,aAAe,IAAKh2B,QAAS,uCACjCpW,EAAEnJ,KAAOmJ,EAAEnJ,KAAKgC,QAASuxC,GAAK,OAvB9BiD,EAAWrtC,EAAE+rC,IAAIthC,MAAOsiC,EAASpzC,QAG5BqG,EAAEnJ,OAAUmJ,EAAEksC,aAAiC,iBAAXlsC,EAAEnJ,QAC1Ck2C,IAAc3D,GAAO3vC,KAAMszC,GAAa,IAAM,KAAQ/sC,EAAEnJ,YAGjDmJ,EAAEnJ,OAIO,IAAZmJ,EAAEsf,QACNytB,EAAWA,EAASl0C,QAASyxC,GAAY,MACzC+C,GAAajE,GAAO3vC,KAAMszC,GAAa,IAAM,KAAQ,KAASx1B,GAAM8C,OACnEgzB,GAIFrtC,EAAE+rC,IAAMgB,EAAWM,GASfrtC,EAAEwuC,aACDr1C,EAAO0yC,aAAckB,IACzB5B,EAAM4C,iBAAkB,oBAAqB50C,EAAO0yC,aAAckB,IAE9D5zC,EAAO2yC,KAAMiB,IACjB5B,EAAM4C,iBAAkB,gBAAiB50C,EAAO2yC,KAAMiB,MAKnD/sC,EAAEnJ,MAAQmJ,EAAEuC,aAAgC,IAAlBvC,EAAEosC,aAAyB12C,EAAQ02C,cACjEjB,EAAM4C,iBAAkB,eAAgB/tC,EAAEosC,aAI3CjB,EAAM4C,iBACL,SACA/tC,EAAEirC,UAAW,IAAOjrC,EAAEqsC,QAASrsC,EAAEirC,UAAW,IAC3CjrC,EAAEqsC,QAASrsC,EAAEirC,UAAW,KACA,MAArBjrC,EAAEirC,UAAW,GAAc,KAAON,GAAW,WAAa,IAC7D3qC,EAAEqsC,QAAS,MAIFrsC,EAAEyuC,QACZtD,EAAM4C,iBAAkB5xC,EAAG6D,EAAEyuC,QAAStyC,IAIvC,GAAK6D,EAAE0uC,cAC+C,IAAnD1uC,EAAE0uC,WAAWz5C,KAAMq4C,EAAiBnC,EAAOnrC,IAAiB6vB,GAG9D,OAAOsb,EAAMgD,QAed,GAXAP,EAAW,QAGXJ,EAAiBx/B,IAAKhO,EAAEkE,UACxBinC,EAAMzvB,KAAM1b,EAAE2uC,SACdxD,EAAMjf,KAAMlsB,EAAEuZ,OAGduzB,EAAY5B,GAA+BR,GAAY1qC,EAAGtK,EAASy1C,GAK5D,CASN,GARAA,EAAMlb,WAAa,EAGdmd,GACJG,EAAmB50C,QAAS,WAAY,CAAEwyC,EAAOnrC,IAI7C6vB,EACJ,OAAOsb,EAIHnrC,EAAEmsC,OAASnsC,EAAEnC,QAAU,IAC3BqvC,EAAej2C,EAAOe,YAAY,WACjCmzC,EAAMgD,MAAO,UACd,GAAGnuC,EAAEnC,UAGN,IACCgyB,GAAY,EACZid,EAAU8B,KAAMlB,EAAgBhyB,EAUjC,CATE,MAAQjjB,GAGT,GAAKo3B,EACJ,MAAMp3B,EAIPijB,GAAO,EAAGjjB,EACX,CACD,MAlCCijB,GAAO,EAAG,gBAqCX,SAASA,EAAMwyB,EAAQW,EAAkBC,EAAWL,GACnD,IAAIM,EAAWJ,EAASp1B,EAAOy1B,EAAUC,EACxCb,EAAaS,EAGThf,IAILA,GAAY,EAGPqd,GACJj2C,EAAOoL,aAAc6qC,GAKtBJ,OAAY9kC,EAGZglC,EAAwByB,GAAW,GAGnCtD,EAAMlb,WAAaie,EAAS,EAAI,EAAI,EAGpCa,EAAYb,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCY,IACJE,EA7lBJ,SAA8BhvC,EAAGmrC,EAAO2D,GAOvC,IALA,IAAII,EAAIh1C,EAAMi1C,EAAeC,EAC5B3kB,EAAWzqB,EAAEyqB,SACbwgB,EAAYjrC,EAAEirC,UAGY,MAAnBA,EAAW,IAClBA,EAAUzrB,aACExX,IAAPknC,IACJA,EAAKlvC,EAAEiuC,UAAY9C,EAAM0C,kBAAmB,iBAK9C,GAAKqB,EACJ,IAAMh1C,KAAQuwB,EACb,GAAKA,EAAUvwB,IAAUuwB,EAAUvwB,GAAOT,KAAMy1C,GAAO,CACtDjE,EAAU1oB,QAASroB,GACnB,KACD,CAKF,GAAK+wC,EAAW,KAAO6D,EACtBK,EAAgBlE,EAAW,OACrB,CAGN,IAAM/wC,KAAQ40C,EAAY,CACzB,IAAM7D,EAAW,IAAOjrC,EAAEwsC,WAAYtyC,EAAO,IAAM+wC,EAAW,IAAQ,CACrEkE,EAAgBj1C,EAChB,KACD,CACMk1C,IACLA,EAAgBl1C,EAElB,CAGAi1C,EAAgBA,GAAiBC,CAClC,CAKA,GAAKD,EAIJ,OAHKA,IAAkBlE,EAAW,IACjCA,EAAU1oB,QAAS4sB,GAEbL,EAAWK,EAEpB,CAwiBeE,CAAqBrvC,EAAGmrC,EAAO2D,KAIrCC,GACL51C,EAAOwC,QAAS,SAAUqE,EAAEirC,YAAe,GAC3C9xC,EAAOwC,QAAS,OAAQqE,EAAEirC,WAAc,IACxCjrC,EAAEwsC,WAAY,eAAkB,WAAY,GAI7CwC,EA9iBH,SAAsBhvC,EAAGgvC,EAAU7D,EAAO4D,GACzC,IAAIO,EAAOC,EAASC,EAAMjuB,EAAKmJ,EAC9B8hB,EAAa,CAAC,EAGdvB,EAAYjrC,EAAEirC,UAAUxgC,QAGzB,GAAKwgC,EAAW,GACf,IAAMuE,KAAQxvC,EAAEwsC,WACfA,EAAYgD,EAAK9zC,eAAkBsE,EAAEwsC,WAAYgD,GAOnD,IAHAD,EAAUtE,EAAUzrB,QAGZ+vB,GAcP,GAZKvvC,EAAEusC,eAAgBgD,KACtBpE,EAAOnrC,EAAEusC,eAAgBgD,IAAcP,IAIlCtkB,GAAQqkB,GAAa/uC,EAAEyvC,aAC5BT,EAAWhvC,EAAEyvC,WAAYT,EAAUhvC,EAAEgrC,WAGtCtgB,EAAO6kB,EACPA,EAAUtE,EAAUzrB,QAKnB,GAAiB,MAAZ+vB,EAEJA,EAAU7kB,OAGJ,GAAc,MAATA,GAAgBA,IAAS6kB,EAAU,CAM9C,KAHAC,EAAOhD,EAAY9hB,EAAO,IAAM6kB,IAAa/C,EAAY,KAAO+C,IAI/D,IAAMD,KAAS9C,EAId,IADAjrB,EAAM+tB,EAAMruC,MAAO,MACT,KAAQsuC,IAGjBC,EAAOhD,EAAY9hB,EAAO,IAAMnJ,EAAK,KACpCirB,EAAY,KAAOjrB,EAAK,KACb,EAGG,IAATiuB,EACJA,EAAOhD,EAAY8C,IAGgB,IAAxB9C,EAAY8C,KACvBC,EAAUhuB,EAAK,GACf0pB,EAAU1oB,QAAShB,EAAK,KAEzB,KACD,CAMH,IAAc,IAATiuB,EAGJ,GAAKA,GAAQxvC,EAAC,OACbgvC,EAAWQ,EAAMR,QAEjB,IACCA,EAAWQ,EAAMR,EAMlB,CALE,MAAQv2C,GACT,MAAO,CACN80B,MAAO,cACPhU,MAAOi2B,EAAO/2C,EAAI,sBAAwBiyB,EAAO,OAAS6kB,EAE5D,CAGH,CAIF,MAAO,CAAEhiB,MAAO,UAAW12B,KAAMm4C,EAClC,CAgdcU,CAAa1vC,EAAGgvC,EAAU7D,EAAO4D,GAGvCA,GAGC/uC,EAAEwuC,cACNS,EAAW9D,EAAM0C,kBAAmB,oBAEnC10C,EAAO0yC,aAAckB,GAAakC,IAEnCA,EAAW9D,EAAM0C,kBAAmB,WAEnC10C,EAAO2yC,KAAMiB,GAAakC,IAKZ,MAAXf,GAA6B,SAAXluC,EAAE9F,KACxBk0C,EAAa,YAGS,MAAXF,EACXE,EAAa,eAIbA,EAAaY,EAASzhB,MACtBohB,EAAUK,EAASn4C,KAEnBk4C,IADAx1B,EAAQy1B,EAASz1B,UAMlBA,EAAQ60B,GACHF,GAAWE,IACfA,EAAa,QACRF,EAAS,IACbA,EAAS,KAMZ/C,EAAM+C,OAASA,EACf/C,EAAMiD,YAAeS,GAAoBT,GAAe,GAGnDW,EACJthB,EAASe,YAAa8e,EAAiB,CAAEqB,EAASP,EAAYjD,IAE9D1d,EAASmB,WAAY0e,EAAiB,CAAEnC,EAAOiD,EAAY70B,IAI5D4xB,EAAMsC,WAAYA,GAClBA,OAAazlC,EAERolC,GACJG,EAAmB50C,QAASo2C,EAAY,cAAgB,YACvD,CAAE5D,EAAOnrC,EAAG+uC,EAAYJ,EAAUp1B,IAIpCi0B,EAAiBrgB,SAAUmgB,EAAiB,CAAEnC,EAAOiD,IAEhDhB,IACJG,EAAmB50C,QAAS,eAAgB,CAAEwyC,EAAOnrC,MAG3C7G,EAAOyyC,QAChBzyC,EAAOgP,MAAMxP,QAAS,aAGzB,CAEA,OAAOwyC,CACR,EAEAwE,QAAS,SAAU5D,EAAKl1C,EAAM6O,GAC7B,OAAOvM,EAAOsY,IAAKs6B,EAAKl1C,EAAM6O,EAAU,OACzC,EAEAkqC,UAAW,SAAU7D,EAAKrmC,GACzB,OAAOvM,EAAOsY,IAAKs6B,OAAK/jC,EAAWtC,EAAU,SAC9C,IAGDvM,EAAOxC,KAAM,CAAE,MAAO,SAAU,SAAU6jB,EAAIwR,GAC7C7yB,EAAQ6yB,GAAW,SAAU+f,EAAKl1C,EAAM6O,EAAUxL,GAUjD,OAPKwG,EAAY7J,KAChBqD,EAAOA,GAAQwL,EACfA,EAAW7O,EACXA,OAAOmR,GAID7O,EAAO0zC,KAAM1zC,EAAOxD,OAAQ,CAClCo2C,IAAKA,EACL7xC,KAAM8xB,EACNgf,SAAU9wC,EACVrD,KAAMA,EACN83C,QAASjpC,GACPvM,EAAOigB,cAAe2yB,IAASA,GACnC,CACD,IAEA5yC,EAAOwzC,eAAe,SAAU3sC,GAC/B,IAAI7D,EACJ,IAAMA,KAAK6D,EAAEyuC,QACa,iBAApBtyC,EAAET,gBACNsE,EAAEosC,YAAcpsC,EAAEyuC,QAAStyC,IAAO,GAGrC,IAGAhD,EAAOgjC,SAAW,SAAU4P,EAAKr2C,EAASiiB,GACzC,OAAOxe,EAAO0zC,KAAM,CACnBd,IAAKA,EAGL7xC,KAAM,MACN8wC,SAAU,SACV1rB,OAAO,EACP6sB,OAAO,EACPj3B,QAAQ,EAKRs3B,WAAY,CACX,cAAe,WAAY,GAE5BiD,WAAY,SAAUT,GACrB71C,EAAO0gB,WAAYm1B,EAAUt5C,EAASiiB,EACvC,GAEF,EAGAxe,EAAOJ,GAAGpD,OAAQ,CACjBk6C,QAAS,SAAUtxC,GAClB,IAAIi3B,EAyBJ,OAvBKtgC,KAAM,KACLwL,EAAYnC,KAChBA,EAAOA,EAAKtJ,KAAMC,KAAM,KAIzBsgC,EAAOr8B,EAAQoF,EAAMrJ,KAAM,GAAIuN,eAAgBzH,GAAI,GAAI+S,OAAO,GAEzD7Y,KAAM,GAAIuI,YACd+3B,EAAKqH,aAAc3nC,KAAM,IAG1BsgC,EAAK14B,KAAK,WAGT,IAFA,IAAI4b,EAAOxjB,KAEHwjB,EAAKo3B,mBACZp3B,EAAOA,EAAKo3B,kBAGb,OAAOp3B,CACR,IAAIikB,OAAQznC,OAGNA,IACR,EAEA66C,UAAW,SAAUxxC,GACpB,OAAKmC,EAAYnC,GACTrJ,KAAKyB,MAAM,SAAUwF,GAC3BhD,EAAQjE,MAAO66C,UAAWxxC,EAAKtJ,KAAMC,KAAMiH,GAC5C,IAGMjH,KAAKyB,MAAM,WACjB,IAAIuL,EAAO/I,EAAQjE,MAClBu1B,EAAWvoB,EAAKuoB,WAEZA,EAAS9wB,OACb8wB,EAASolB,QAAStxC,GAGlB2D,EAAKy6B,OAAQp+B,EAEf,GACD,EAEAi3B,KAAM,SAAUj3B,GACf,IAAIyxC,EAAiBtvC,EAAYnC,GAEjC,OAAOrJ,KAAKyB,MAAM,SAAUwF,GAC3BhD,EAAQjE,MAAO26C,QAASG,EAAiBzxC,EAAKtJ,KAAMC,KAAMiH,GAAMoC,EACjE,GACD,EAEA0xC,OAAQ,SAAU12C,GAIjB,OAHArE,KAAK0E,OAAQL,GAAW0wB,IAAK,QAAStzB,MAAM,WAC3CwC,EAAQjE,MAAO8nC,YAAa9nC,KAAKmpB,WAClC,IACOnpB,IACR,IAIDiE,EAAOqpB,KAAKlG,QAAQgnB,OAAS,SAAU5qB,GACtC,OAAQvf,EAAOqpB,KAAKlG,QAAQ4zB,QAASx3B,EACtC,EACAvf,EAAOqpB,KAAKlG,QAAQ4zB,QAAU,SAAUx3B,GACvC,SAAWA,EAAKlV,aAAekV,EAAKhV,cAAgBgV,EAAK6oB,iBAAiB5nC,OAC3E,EAKAR,EAAOwyC,aAAawE,IAAM,WACzB,IACC,OAAO,IAAIl5C,EAAOm5C,cACJ,CAAb,MAAQ33C,GAAK,CAChB,EAEA,IAAI43C,GAAmB,CAGrB,EAAG,IAIH,KAAM,KAEPC,GAAen3C,EAAOwyC,aAAawE,MAEpC/rC,EAAQmsC,OAASD,IAAkB,oBAAqBA,GACxDlsC,EAAQyoC,KAAOyD,KAAiBA,GAEhCn3C,EAAOyzC,eAAe,SAAUl3C,GAC/B,IAAIgQ,EAAU8qC,EAGd,GAAKpsC,EAAQmsC,MAAQD,KAAiB56C,EAAQ44C,YAC7C,MAAO,CACNM,KAAM,SAAUH,EAASvqC,GACxB,IAAI/H,EACHg0C,EAAMz6C,EAAQy6C,MAWf,GATAA,EAAIM,KACH/6C,EAAQwE,KACRxE,EAAQq2C,IACRr2C,EAAQy2C,MACRz2C,EAAQg7C,SACRh7C,EAAQqwB,UAIJrwB,EAAQi7C,UACZ,IAAMx0C,KAAKzG,EAAQi7C,UAClBR,EAAKh0C,GAAMzG,EAAQi7C,UAAWx0C,GAmBhC,IAAMA,KAdDzG,EAAQu4C,UAAYkC,EAAInC,kBAC5BmC,EAAInC,iBAAkBt4C,EAAQu4C,UAQzBv4C,EAAQ44C,aAAgBG,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACV0B,EAAIpC,iBAAkB5xC,EAAGsyC,EAAStyC,IAInCuJ,EAAW,SAAUxL,GACpB,OAAO,WACDwL,IACJA,EAAW8qC,EAAgBL,EAAIS,OAC9BT,EAAIU,QAAUV,EAAIW,QAAUX,EAAIY,UAC/BZ,EAAIa,mBAAqB,KAEb,UAAT92C,EACJi2C,EAAIhC,QACgB,UAATj0C,EAKgB,iBAAfi2C,EAAIjC,OACfhqC,EAAU,EAAG,SAEbA,EAGCisC,EAAIjC,OACJiC,EAAI/B,YAINlqC,EACCmsC,GAAkBF,EAAIjC,SAAYiC,EAAIjC,OACtCiC,EAAI/B,WAK+B,UAAjC+B,EAAIc,cAAgB,SACM,iBAArBd,EAAIe,aACV,CAAEC,OAAQhB,EAAInB,UACd,CAAEvpC,KAAM0qC,EAAIe,cACbf,EAAIrC,yBAIR,CACD,EAGAqC,EAAIS,OAASlrC,IACb8qC,EAAgBL,EAAIU,QAAUV,EAAIY,UAAYrrC,EAAU,cAKnCsC,IAAhBmoC,EAAIW,QACRX,EAAIW,QAAUN,EAEdL,EAAIa,mBAAqB,WAGA,IAAnBb,EAAIlgB,YAMRh5B,EAAOe,YAAY,WACb0N,GACJ8qC,GAEF,GAEF,EAID9qC,EAAWA,EAAU,SAErB,IAGCyqC,EAAIvB,KAAMl5C,EAAQ6M,YAAc7M,EAAQmB,MAAQ,KAOjD,CANE,MAAQ4B,GAGT,GAAKiN,EACJ,MAAMjN,CAER,CACD,EAEA01C,MAAO,WACDzoC,GACJA,GAEF,EAGH,IAMAvM,EAAOwzC,eAAe,SAAU3sC,GAC1BA,EAAEsuC,cACNtuC,EAAEyqB,SAAS7S,QAAS,EAEtB,IAGAze,EAAOszC,UAAW,CACjBJ,QAAS,CACRz0B,OAAQ,6FAGT6S,SAAU,CACT7S,OAAQ,2BAET40B,WAAY,CACX,cAAe,SAAU/mC,GAExB,OADAtM,EAAO0gB,WAAYpU,GACZA,CACR,KAKFtM,EAAOwzC,cAAe,UAAU,SAAU3sC,QACxBgI,IAAZhI,EAAEsf,QACNtf,EAAEsf,OAAQ,GAENtf,EAAEsuC,cACNtuC,EAAE9F,KAAO,MAEX,IAGAf,EAAOyzC,cAAe,UAAU,SAAU5sC,GAIxC,IAAI4X,EAAQlS,EADb,GAAK1F,EAAEsuC,aAAetuC,EAAEoxC,YAEvB,MAAO,CACNxC,KAAM,SAAUtgC,EAAGpK,GAClB0T,EAASze,EAAQ,YACfK,KAAMwG,EAAEoxC,aAAe,CAAC,GACxB9f,KAAM,CAAE+f,QAASrxC,EAAEsxC,cAAeh6B,IAAKtX,EAAE+rC,MACzC91C,GAAI,aAAcyP,EAAW,SAAU6rC,GACvC35B,EAAO7d,SACP2L,EAAW,KACN6rC,GACJrtC,EAAuB,UAAbqtC,EAAIr3C,KAAmB,IAAM,IAAKq3C,EAAIr3C,KAElD,GAGDpE,EAASiiB,KAAK9O,YAAa2O,EAAQ,GACpC,EACAu2B,MAAO,WACDzoC,GACJA,GAEF,EAGH,IAKA,IAqGKrN,GArGDm5C,GAAe,GAClBC,GAAS,oBAGVt4C,EAAOszC,UAAW,CACjBiF,MAAO,WACPC,cAAe,WACd,IAAIjsC,EAAW8rC,GAAa1mC,OAAW3R,EAAOkgB,QAAU,IAAQ9B,GAAM8C,OAEtE,OADAnlB,KAAMwQ,IAAa,EACZA,CACR,IAIDvM,EAAOwzC,cAAe,cAAc,SAAU3sC,EAAG4xC,EAAkBzG,GAElE,IAAI0G,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZhyC,EAAE0xC,QAAqBD,GAAOh4C,KAAMuG,EAAE+rC,KAChD,MACkB,iBAAX/rC,EAAEnJ,MAE6C,KADnDmJ,EAAEosC,aAAe,IACjBh2B,QAAS,sCACXq7B,GAAOh4C,KAAMuG,EAAEnJ,OAAU,QAI5B,GAAKm7C,GAAiC,UAArBhyC,EAAEirC,UAAW,GA8D7B,OA3DA4G,EAAe7xC,EAAE2xC,cAAgBjxC,EAAYV,EAAE2xC,eAC9C3xC,EAAE2xC,gBACF3xC,EAAE2xC,cAGEK,EACJhyC,EAAGgyC,GAAahyC,EAAGgyC,GAAWn5C,QAAS44C,GAAQ,KAAOI,IAC/B,IAAZ7xC,EAAE0xC,QACb1xC,EAAE+rC,MAAS3C,GAAO3vC,KAAMuG,EAAE+rC,KAAQ,IAAM,KAAQ/rC,EAAE0xC,MAAQ,IAAMG,GAIjE7xC,EAAEwsC,WAAY,eAAkB,WAI/B,OAHMuF,GACL54C,EAAOogB,MAAOs4B,EAAe,mBAEvBE,EAAmB,EAC3B,EAGA/xC,EAAEirC,UAAW,GAAM,OAGnB6G,EAAc76C,EAAQ46C,GACtB56C,EAAQ46C,GAAiB,WACxBE,EAAoBnpC,SACrB,EAGAuiC,EAAM3d,QAAQ,gBAGQxlB,IAAhB8pC,EACJ34C,EAAQlC,GAAS4wC,WAAYgK,GAI7B56C,EAAQ46C,GAAiBC,EAIrB9xC,EAAG6xC,KAGP7xC,EAAE2xC,cAAgBC,EAAiBD,cAGnCH,GAAapnC,KAAMynC,IAIfE,GAAqBrxC,EAAYoxC,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAc9pC,CACnC,IAGO,QAET,IAUA5D,EAAQ1H,qBACHrE,GAAOvC,EAAS2G,eAAeC,mBAAoB,IAAKrE,MACvDuE,UAAY,6BACiB,IAA3BvE,GAAKgmB,WAAW1kB,QAQxBR,EAAOixB,UAAY,SAAUvzB,EAAMkS,EAASkpC,GAC3C,MAAqB,iBAATp7C,EACJ,IAEgB,kBAAZkS,IACXkpC,EAAclpC,EACdA,GAAU,GAKLA,IAIA3E,EAAQ1H,qBAMZ2pB,GALAtd,EAAUjT,EAAS2G,eAAeC,mBAAoB,KAKvClC,cAAe,SACzB8qB,KAAOxvB,EAASqvB,SAASG,KAC9Bvc,EAAQgP,KAAK9O,YAAaod,IAE1Btd,EAAUjT,GAKZu/B,GAAW4c,GAAe,IAD1BC,EAASpoB,EAAWlL,KAAM/nB,IAKlB,CAAEkS,EAAQvO,cAAe03C,EAAQ,MAGzCA,EAAS9c,GAAe,CAAEv+B,GAAQkS,EAASssB,GAEtCA,GAAWA,EAAQ17B,QACvBR,EAAQk8B,GAAUt7B,SAGZZ,EAAOqf,MAAO,GAAI05B,EAAO7zB,cAlChC,IAAIgI,EAAM6rB,EAAQ7c,CAmCnB,EAMAl8B,EAAOJ,GAAG6/B,KAAO,SAAUmT,EAAKoG,EAAQzsC,GACvC,IAAInM,EAAUW,EAAM80C,EACnB9sC,EAAOhN,KACPkS,EAAM2kC,EAAI31B,QAAS,KAsDpB,OApDKhP,GAAO,IACX7N,EAAWmuC,GAAkBqE,EAAIthC,MAAOrD,IACxC2kC,EAAMA,EAAIthC,MAAO,EAAGrD,IAIhB1G,EAAYyxC,IAGhBzsC,EAAWysC,EACXA,OAASnqC,GAGEmqC,GAA4B,iBAAXA,IAC5Bj4C,EAAO,QAIHgI,EAAKvI,OAAS,GAClBR,EAAO0zC,KAAM,CACZd,IAAKA,EAKL7xC,KAAMA,GAAQ,MACd8wC,SAAU,OACVn0C,KAAMs7C,IACHz2B,MAAM,SAAUw1B,GAGnBlC,EAAWpmC,UAEX1G,EAAK3D,KAAMhF,EAIVJ,EAAQ,SAAUwjC,OAAQxjC,EAAOixB,UAAW8mB,IAAiBn7C,KAAMwD,GAGnE23C,EAKF,IAAI1jB,OAAQ9nB,GAAY,SAAUylC,EAAO+C,GACxChsC,EAAKvL,MAAM,WACV+O,EAASiD,MAAOzT,KAAM85C,GAAY,CAAE7D,EAAM+F,aAAchD,EAAQ/C,GACjE,GACD,GAGMj2C,IACR,EAKAiE,EAAOqpB,KAAKlG,QAAQ81B,SAAW,SAAU15B,GACxC,OAAOvf,EAAO2f,KAAM3f,EAAOgtC,QAAQ,SAAUptC,GAC5C,OAAO2f,IAAS3f,EAAG2f,IACpB,IAAI/e,MACL,EAKAR,EAAOnC,OAAS,CACf4N,UAAW,SAAU8T,EAAMhjB,EAASyG,GACnC,IAAIk2C,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvDl7C,EAAW2B,EAAOZ,IAAKmgB,EAAM,YAC7Bi6B,EAAUx5C,EAAQuf,GAClB5T,EAAQ,CAAC,EAGQ,WAAbtN,IACJkhB,EAAKzQ,MAAMzQ,SAAW,YAGvBi7C,EAAYE,EAAQ37C,SACpBu7C,EAAYp5C,EAAOZ,IAAKmgB,EAAM,OAC9Bg6B,EAAav5C,EAAOZ,IAAKmgB,EAAM,SACI,aAAblhB,GAAwC,UAAbA,KAC9C+6C,EAAYG,GAAat8B,QAAS,SAAY,GAMhDo8B,GADAH,EAAcM,EAAQn7C,YACDE,IACrB46C,EAAUD,EAAYnvC,OAGtBsvC,EAAStT,WAAYqT,IAAe,EACpCD,EAAUpT,WAAYwT,IAAgB,GAGlChyC,EAAYhL,KAGhBA,EAAUA,EAAQT,KAAMyjB,EAAMvc,EAAGhD,EAAOxD,OAAQ,CAAC,EAAG88C,KAGjC,MAAf/8C,EAAQgC,MACZoN,EAAMpN,IAAQhC,EAAQgC,IAAM+6C,EAAU/6C,IAAQ86C,GAE1B,MAAhB98C,EAAQwN,OACZ4B,EAAM5B,KAASxN,EAAQwN,KAAOuvC,EAAUvvC,KAASovC,GAG7C,UAAW58C,EACfA,EAAQmP,MAAM5P,KAAMyjB,EAAM5T,GAG1B6tC,EAAQp6C,IAAKuM,EAEf,GAGD3L,EAAOJ,GAAGpD,OAAQ,CAGjBqB,OAAQ,SAAUtB,GAGjB,GAAKkT,UAAUjP,OACd,YAAmBqO,IAAZtS,EACNR,KACAA,KAAKyB,MAAM,SAAUwF,GACpBhD,EAAOnC,OAAO4N,UAAW1P,KAAMQ,EAASyG,EACzC,IAGF,IAAIy2C,EAAMC,EACTn6B,EAAOxjB,KAAM,GAEd,OAAMwjB,EAQAA,EAAK6oB,iBAAiB5nC,QAK5Bi5C,EAAOl6B,EAAK3S,wBACZ8sC,EAAMn6B,EAAKjW,cAAcoe,YAClB,CACNnpB,IAAKk7C,EAAKl7C,IAAMm7C,EAAIC,YACpB5vC,KAAM0vC,EAAK1vC,KAAO2vC,EAAIE,cARf,CAAEr7C,IAAK,EAAGwL,KAAM,QATxB,CAmBD,EAIA1L,SAAU,WACT,GAAMtC,KAAM,GAAZ,CAIA,IAAI89C,EAAch8C,EAAQ2gB,EACzBe,EAAOxjB,KAAM,GACb+9C,EAAe,CAAEv7C,IAAK,EAAGwL,KAAM,GAGhC,GAAwC,UAAnC/J,EAAOZ,IAAKmgB,EAAM,YAGtB1hB,EAAS0hB,EAAK3S,4BAER,CAON,IANA/O,EAAS9B,KAAK8B,SAId2gB,EAAMe,EAAKjW,cACXuwC,EAAet6B,EAAKs6B,cAAgBr7B,EAAIrd,gBAChC04C,IACLA,IAAiBr7B,EAAItf,MAAQ26C,IAAiBr7B,EAAIrd,kBACT,WAA3CnB,EAAOZ,IAAKy6C,EAAc,aAE1BA,EAAeA,EAAav1C,WAExBu1C,GAAgBA,IAAiBt6B,GAAkC,IAA1Bs6B,EAAa97B,YAG1D+7B,EAAe95C,EAAQ65C,GAAeh8C,UACzBU,KAAOyB,EAAOZ,IAAKy6C,EAAc,kBAAkB,GAChEC,EAAa/vC,MAAQ/J,EAAOZ,IAAKy6C,EAAc,mBAAmB,GAEpE,CAGA,MAAO,CACNt7C,IAAKV,EAAOU,IAAMu7C,EAAav7C,IAAMyB,EAAOZ,IAAKmgB,EAAM,aAAa,GACpExV,KAAMlM,EAAOkM,KAAO+vC,EAAa/vC,KAAO/J,EAAOZ,IAAKmgB,EAAM,cAAc,GArCzE,CAuCD,EAYAs6B,aAAc,WACb,OAAO99C,KAAK4H,KAAK,WAGhB,IAFA,IAAIk2C,EAAe99C,KAAK89C,aAEhBA,GAA2D,WAA3C75C,EAAOZ,IAAKy6C,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgB14C,EACxB,GACD,IAIDnB,EAAOxC,KAAM,CAAEisC,WAAY,cAAerrC,UAAW,gBAAiB,SAAUy0B,EAAQsF,GACvF,IAAI55B,EAAM,gBAAkB45B,EAE5Bn4B,EAAOJ,GAAIizB,GAAW,SAAU52B,GAC/B,OAAO+6B,EAAQj7B,MAAM,SAAUwjB,EAAMsT,EAAQ52B,GAG5C,IAAIy9C,EAOJ,GANKz7B,EAAUsB,GACdm6B,EAAMn6B,EACuB,IAAlBA,EAAKxB,WAChB27B,EAAMn6B,EAAKmI,kBAGC7Y,IAAR5S,EACJ,OAAOy9C,EAAMA,EAAKvhB,GAAS5Y,EAAMsT,GAG7B6mB,EACJA,EAAIK,SACFx7C,EAAYm7C,EAAIE,YAAV39C,EACPsC,EAAMtC,EAAMy9C,EAAIC,aAIjBp6B,EAAMsT,GAAW52B,CAEnB,GAAG42B,EAAQ52B,EAAKwT,UAAUjP,OAC3B,CACD,IAQAR,EAAOxC,KAAM,CAAE,MAAO,SAAU,SAAU6jB,EAAI8W,GAC7Cn4B,EAAOuoC,SAAUpQ,GAAS+M,GAAcj6B,EAAQm7B,eAC/C,SAAU7mB,EAAMqlB,GACf,GAAKA,EAIJ,OAHAA,EAAWD,GAAQplB,EAAM4Y,GAGlBgM,GAAU7jC,KAAMskC,GACtB5kC,EAAQuf,GAAOlhB,WAAY85B,GAAS,KACpCyM,CAEH,GAEF,IAIA5kC,EAAOxC,KAAM,CAAEw8C,OAAQ,SAAUC,MAAO,UAAW,SAAUrrC,EAAM7N,GAClEf,EAAOxC,KAAM,CACZ+H,QAAS,QAAUqJ,EACnBujB,QAASpxB,EACT,GAAI,QAAU6N,IACZ,SAAUsrC,EAAcC,GAG1Bn6C,EAAOJ,GAAIu6C,GAAa,SAAUtR,EAAQ/lC,GACzC,IAAIm0B,EAAYxnB,UAAUjP,SAAY05C,GAAkC,kBAAXrR,GAC5Db,EAAQkS,KAA6B,IAAXrR,IAA6B,IAAV/lC,EAAiB,SAAW,UAE1E,OAAOk0B,EAAQj7B,MAAM,SAAUwjB,EAAMxe,EAAM+B,GAC1C,IAAI0b,EAEJ,OAAKP,EAAUsB,GAGyB,IAAhC46B,EAASl9B,QAAS,SACxBsC,EAAM,QAAU3Q,GAChB2Q,EAAK5iB,SAASwE,gBAAiB,SAAWyN,GAIrB,IAAlB2Q,EAAKxB,UACTS,EAAMe,EAAKpe,gBAIJnC,KAAKC,IACXsgB,EAAKrgB,KAAM,SAAW0P,GAAQ4P,EAAK,SAAW5P,GAC9C2Q,EAAKrgB,KAAM,SAAW0P,GAAQ4P,EAAK,SAAW5P,GAC9C4P,EAAK,SAAW5P,UAIDC,IAAV/L,EAGN9C,EAAOZ,IAAKmgB,EAAMxe,EAAMinC,GAGxBhoC,EAAO8O,MAAOyQ,EAAMxe,EAAM+B,EAAOklC,EACnC,GAAGjnC,EAAMk2B,EAAY4R,OAASh6B,EAAWooB,EAC1C,CACD,GACD,IAGAj3B,EAAOxC,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,aACE,SAAU6jB,EAAItgB,GAChBf,EAAOJ,GAAImB,GAAS,SAAUnB,GAC7B,OAAO7D,KAAKe,GAAIiE,EAAMnB,EACvB,CACD,IAKAI,EAAOJ,GAAGpD,OAAQ,CAEjBivC,KAAM,SAAUxO,EAAOv/B,EAAMkC,GAC5B,OAAO7D,KAAKe,GAAImgC,EAAO,KAAMv/B,EAAMkC,EACpC,EACAw6C,OAAQ,SAAUnd,EAAOr9B,GACxB,OAAO7D,KAAKkS,IAAKgvB,EAAO,KAAMr9B,EAC/B,EAEAy6C,SAAU,SAAUj6C,EAAU68B,EAAOv/B,EAAMkC,GAC1C,OAAO7D,KAAKe,GAAImgC,EAAO78B,EAAU1C,EAAMkC,EACxC,EACA06C,WAAY,SAAUl6C,EAAU68B,EAAOr9B,GAGtC,OAA4B,IAArB6P,UAAUjP,OAChBzE,KAAKkS,IAAK7N,EAAU,MACpBrE,KAAKkS,IAAKgvB,EAAO78B,GAAY,KAAMR,EACrC,EAEA6H,MAAO,SAAU8yC,EAAQC,GACxB,OAAOz+C,KAAK2lC,WAAY6Y,GAAS5Y,WAAY6Y,GAASD,EACvD,IAGDv6C,EAAOxC,KACN,wLAE4DsK,MAAO,MACnE,SAAUuZ,EAAIzS,GAGb5O,EAAOJ,GAAIgP,GAAS,SAAUlR,EAAMkC,GACnC,OAAO6P,UAAUjP,OAAS,EACzBzE,KAAKe,GAAI8R,EAAM,KAAMlR,EAAMkC,GAC3B7D,KAAKyD,QAASoP,EAChB,CACD,IAUD,IAAIyU,GAAQ,sDAMZrjB,EAAOjD,MAAQ,SAAU6C,EAAIgQ,GAC5B,IAAIwY,EAAK/S,EAAMtY,EAUf,GARwB,iBAAZ6S,IACXwY,EAAMxoB,EAAIgQ,GACVA,EAAUhQ,EACVA,EAAKwoB,GAKA7gB,EAAY3H,GAalB,OARAyV,EAAO/D,EAAMxV,KAAM2T,UAAW,GAC9B1S,EAAQ,WACP,OAAO6C,EAAG4P,MAAOI,GAAW7T,KAAMsZ,EAAKnZ,OAAQoV,EAAMxV,KAAM2T,YAC5D,EAGA1S,EAAMmkB,KAAOthB,EAAGshB,KAAOthB,EAAGshB,MAAQlhB,EAAOkhB,OAElCnkB,CACR,EAEAiD,EAAOy6C,UAAY,SAAUC,GACvBA,EACJ16C,EAAO42B,YAEP52B,EAAOkxB,OAAO,EAEhB,EACAlxB,EAAO7D,QAAUV,MAAMU,QACvB6D,EAAO26C,UAAYliB,KAAK3iB,MACxB9V,EAAOsC,SAAWA,EAClBtC,EAAOuH,WAAaA,EACpBvH,EAAOie,SAAWA,EAClBje,EAAO23B,UAAYA,EACnB33B,EAAOe,KAAO8d,EAEd7e,EAAO+/B,IAAM/pB,KAAK+pB,IAElB//B,EAAO46C,UAAY,SAAU9xC,GAK5B,IAAI/H,EAAOf,EAAOe,KAAM+H,GACxB,OAAkB,WAAT/H,GAA8B,WAATA,KAK5ByK,MAAO1C,EAAMi9B,WAAYj9B,GAC5B,EAEA9I,EAAO66C,KAAO,SAAUvuC,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAK5M,QAAS2jB,GAAO,KAChC,OAoBE,KAFqB,EAAF,WACnB,OAAOrjB,CACP,UAFiB,OAEjB,aAMF,IAGC86C,GAAUh9C,EAAOkC,OAGjB+6C,GAAKj9C,EAAO1B,EAwBb,OAtBA4D,EAAOF,WAAa,SAAUkgB,GAS7B,OARKliB,EAAO1B,IAAM4D,IACjBlC,EAAO1B,EAAI2+C,IAGP/6B,GAAQliB,EAAOkC,SAAWA,IAC9BlC,EAAOkC,OAAS86C,IAGV96C,CACR,OAKyB,IAAbqd,IACXvf,EAAOkC,OAASlC,EAAO1B,EAAI4D,GAMrBA,CACP,gCC1pVA,IAAIg7C,EAAQC,EAAQ,MAEpBxnC,EAAOC,QAAU,SAASwnC,EAAQhR,EAAU7T,GAC3C,IAAI8kB,EAAgB,GAChBC,GAAY,EACZC,GAAU,EAEd,SAASC,IACR,GAAIF,EAAW,MAAM,IAAIxzC,MAAM,+BAC/BwzC,GAAY,EACZ,IAAK,IAAIp4C,EAAI,EAAGA,EAAIm4C,EAAc36C,OAAQwC,GAAK,EAC9C,IAAMk4C,EAAOC,EAAcn4C,GAAIg4C,EAAMG,EAAcn4C,EAAI,IAAKu4C,EAC/B,CAA7B,MAAOj8C,GAAK+2B,EAAQjW,MAAM9gB,EAAG,CAE9B87C,GAAY,CACb,CAEA,SAASG,IACHF,IACJA,GAAU,EACVnR,GAAS,WACRmR,GAAU,EACVC,GACD,IAEF,CAqBA,OAnBAC,EAAOD,KAAOA,EAmBP,CAACE,MAjBR,SAAexqB,EAAMyqB,GACpB,GAAiB,MAAbA,GAAuC,MAAlBA,EAAU/a,MAAqC,mBAAd+a,EACzD,MAAM,IAAItmB,UAAU,gEAGrB,IAAIvzB,EAAQu5C,EAAcl+B,QAAQ+T,GAC9BpvB,GAAS,IACZu5C,EAAcr7B,OAAOle,EAAO,GAC5Bs5C,EAAOlqB,EAAM,GAAIuqB,IAGD,MAAbE,IACHN,EAAclqC,KAAK+f,EAAMyqB,GACzBP,EAAOlqB,EAAMgqB,EAAMS,GAAYF,GAEjC,EAEsBA,OAAQA,EAC/B,+BC/CA,IAAIP,EAAQC,EAAQ,MAChBlqC,EAAIkqC,EAAQ,MACZS,EAAUT,EAAQ,KAElBU,EAAgBV,EAAQ,MACxBW,EAAgBX,EAAQ,MACxBY,EAAkBZ,EAAQ,MAC1Ba,EAASb,EAAQ,MAEjBc,EAAW,CAAC,EAEhBtoC,EAAOC,QAAU,SAASsoC,EAASC,GAClC,IAAIC,EAEJ,SAASC,EAAQC,EAAM1+C,EAAMnB,GAE5B,GADA6/C,EAAOT,EAAcS,EAAM1+C,GACV,MAAbw+C,EAAmB,CACtBA,IACA,IAAI9nB,EAAQ73B,EAAUA,EAAQ63B,MAAQ,KAClClvB,EAAQ3I,EAAUA,EAAQ2I,MAAQ,KAClC3I,GAAWA,EAAQmD,QAASs8C,EAAQK,QAAQC,aAAaloB,EAAOlvB,EAAOq3C,EAAM9uC,OAAS2uC,GACrFJ,EAAQK,QAAQG,UAAUpoB,EAAOlvB,EAAOq3C,EAAM9uC,OAAS2uC,EAC7D,MAECJ,EAAQhwB,SAASG,KAAOowB,EAAM9uC,OAAS2uC,CAEzC,CAEA,IAAgCX,EAAWh1B,EAAOg2B,EAAaC,EAA3DC,EAAkBZ,EAElBa,EAAOL,EAAMK,KAAO,CAAC,EAEzB,SAASL,EAAMvrB,EAAM6rB,EAAcC,GAClC,GAAY,MAAR9rB,EAAc,MAAM,IAAIppB,MAAM,wEAIlC,IAgBIm1C,EAhBA3oB,EAAQ,EAERpE,EAAWxS,OAAOvB,KAAK6gC,GAAQn5C,KAAI,SAAS44C,GAC/C,GAAiB,MAAbA,EAAM,GAAY,MAAM,IAAIS,YAAY,gCAC5C,GAAK,wBAAyB18C,KAAKi8C,GAClC,MAAM,IAAIS,YAAY,wEAEvB,MAAO,CACNT,MAAOA,EACPd,UAAWqB,EAAOP,GAClBhyB,MAAOsxB,EAAgBU,GAEzB,IACIU,EAAoC,mBAAjBC,aAA8BA,aAAer+C,WAChE8H,EAAI+0C,EAAQhpB,UACZyqB,GAAY,EAKhB,GAFAjB,EAAY,KAEQ,MAAhBW,EAAsB,CACzB,IAAIO,EAAcxB,EAAciB,GAEhC,IAAK7sB,EAASqtB,MAAK,SAAUr6C,GAAK,OAAOA,EAAEunB,MAAM6yB,EAAa,IAC7D,MAAM,IAAIE,eAAe,+CAE3B,CAEA,SAASC,IACRJ,GAAY,EAGZ,IAAI1vC,EAASuuC,EAAQhwB,SAASD,KACN,MAApBwwB,EAAM9uC,OAAO,KAChBA,EAASuuC,EAAQhwB,SAASwxB,OAAS/vC,EACX,MAApB8uC,EAAM9uC,OAAO,IAEE,OADlBA,EAASuuC,EAAQhwB,SAASyxB,SAAWhwC,GAC1B,KAAYA,EAAS,IAAMA,IAMxC,IAAI2uC,EAAO3uC,EAAOvR,SAChBwD,QAAQ,2BAA4Bg+C,oBACpCpsC,MAAMirC,EAAM9uC,OAAOjN,QACjB9C,EAAOk+C,EAAcQ,GAIzB,SAASrpB,IACR,GAAIqpB,IAASS,EAAc,MAAM,IAAIj1C,MAAM,mCAAqCi1C,GAChFV,EAAQU,EAAc,KAAM,CAACn9C,SAAS,GACvC,CALAo8C,EAAOp+C,EAAKs7C,OAAQgD,EAAQK,QAAQjoB,OAQpC,SAASupB,EAAK36C,GAIb,KAAOA,EAAIgtB,EAASxvB,OAAQwC,IAC3B,GAAIgtB,EAAShtB,GAAGunB,MAAM7sB,GAAO,CAC5B,IAAIkgD,EAAU5tB,EAAShtB,GAAGy4C,UACtBoC,EAAe7tB,EAAShtB,GAAGu5C,MAC3BuB,EAAYF,EACZ1tC,EAASwsC,EAAa,SAASqB,GAClC,GAAI7tC,IAAWwsC,EAAf,CACA,GAAIqB,IAASnB,EAAM,OAAOe,EAAK36C,EAAI,GACnCy4C,EAAoB,MAARsC,GAAsC,mBAAdA,EAAKrd,MAAuC,mBAATqd,EAA6B,MAAPA,EAC7Ft3B,EAAQ/oB,EAAKs7C,OAAQyD,EAAcL,EAAMM,EAAa,KACtDC,EAAkBiB,EAAQ1C,OAAS0C,EAAU,KAC/B,IAAVxpB,EAAa6nB,EAAYV,UAE5BnnB,EAAQ,EACR6nB,EAAYV,OAAOD,OARa,CAUlC,EAaA,YAVIsC,EAAQld,MAA2B,mBAAZkd,GAC1BA,EAAU,CAAC,EACX1tC,EAAO4tC,IAECF,EAAQI,QAChBr3C,EAAEqsB,MAAK,WACN,OAAO4qB,EAAQI,QAAQtgD,EAAKs7C,OAAQoD,EAAMyB,EAC3C,IAAG7qB,KAAK9iB,EAAQ6iB,GAEZ7iB,EAAO,OAEb,CAED6iB,GACD,CAtCA4qB,CAAK,EAuCN,CA0BA,OApBAzB,EAAY,WACNiB,IACJA,GAAY,EACZF,EAAUM,GAEZ,EAEyC,mBAA9BvB,EAAQK,QAAQG,WAC1BO,EAAW,WACVf,EAAQrlB,oBAAoB,WAAYulB,GAAW,EACpD,EACAF,EAAQr0B,iBAAiB,WAAYu0B,GAAW,IAClB,MAApBK,EAAM9uC,OAAO,KACvByuC,EAAY,KACZa,EAAW,WACVf,EAAQrlB,oBAAoB,aAAc4mB,GAAc,EACzD,EACAvB,EAAQr0B,iBAAiB,aAAc41B,GAAc,IAG/CtB,EAAYT,MAAMxqB,EAAM,CAC9BitB,eAAgB,WAEf,UADA7pB,EAAQA,EAAQ,EAAI,IACD2nB,IAAaY,EACjC,EACAuB,SAAUX,EACVR,SAAUA,EACVrc,KAAM,WACL,GAAKtM,GAAS2nB,IAAaY,EAA3B,CAEA,IAAIwB,EAAQ,CAACnD,EAAMS,EAAWh1B,EAAM5d,IAAK4d,IAEzC,OADIk2B,IAAiBwB,EAAQxB,EAAgBzB,OAAOiD,EAAM,KACnDA,CAJ2C,CAKnD,GAEF,CAsFA,OArFA5B,EAAM1kC,IAAM,SAASukC,EAAM1+C,EAAMnB,GACd,MAAdmgD,KACHngD,EAAUA,GAAW,CAAC,GACdmD,SAAU,GAEnBg9C,EAAa,KACbP,EAAQC,EAAM1+C,EAAMnB,EACrB,EACAggD,EAAMjkC,IAAM,WAAY,OAAOmkC,CAAW,EAC1CF,EAAM9uC,OAAS,KACf8uC,EAAM6B,KAAO,CACZ1d,KAAM,SAASyd,GACd,IAEgBE,EAASlyB,EAFrB5vB,EAAU4hD,EAAM13B,MAAMlqB,QAEtBkqB,EAAQ,CAAC,EACbq1B,EAAOr1B,EAAO03B,EAAM13B,OAGpBA,EAAMrmB,SAAWqmB,EAAMlqB,QAAUkqB,EAAM5d,IAAM4d,EAAM63B,OACnD73B,EAAMy3B,SAAWz3B,EAAMw3B,eAAiBx3B,EAAM83B,SAC9C93B,EAAM+3B,eAAiB/3B,EAAMs2B,SAAW,KAKxC,IAAI0B,EAAQ1tC,EAAEotC,EAAM13B,MAAMrmB,UAAY,IAAKqmB,EAAO03B,EAAM9sB,UAqDxD,OA7CIotB,EAAMh4B,MAAM1B,SAAWtiB,QAAQg8C,EAAMh4B,MAAM1B,YAC9C05B,EAAMh4B,MAAM0F,KAAO,KACnBsyB,EAAMh4B,MAAM,iBAAmB,OAG/Bg4B,EAAMh4B,MAAM43B,QAAU,OAEtBA,EAAUI,EAAMh4B,MAAM43B,QACtBlyB,EAAOsyB,EAAMh4B,MAAM0F,KACnBsyB,EAAMh4B,MAAM0F,KAAOowB,EAAM9uC,OAAS0e,EAClCsyB,EAAMh4B,MAAM43B,QAAU,SAAS/+C,GAC9B,IAAIkrB,EACmB,mBAAZ6zB,EACV7zB,EAAS6zB,EAAQviD,KAAKwD,EAAE0J,cAAe1J,GAClB,MAAX++C,GAAsC,iBAAZA,GAEK,mBAAxBA,EAAQK,aACzBL,EAAQK,YAAYp/C,IAcT,IAAXkrB,GAAqBlrB,EAAEugC,kBAET,IAAbvgC,EAAE6/B,QAA4B,IAAZ7/B,EAAEqB,OAA2B,IAAZrB,EAAEqB,OAEpCrB,EAAE0J,cAActM,QAAqC,UAA3B4C,EAAE0J,cAActM,QAE3C4C,EAAE0d,SAAY1d,EAAEyd,SAAYzd,EAAEmhC,UAAanhC,EAAE2gC,SAE9C3gC,EAAEmC,iBACFnC,EAAEi8C,QAAS,EACXgB,EAAM1kC,IAAIsU,EAAM,KAAM5vB,GAExB,GAEMkiD,CACR,GAEDlC,EAAM3L,MAAQ,SAAS/nC,GACtB,OAAO4d,GAAgB,MAAP5d,EAAc4d,EAAM5d,GAAO4d,CAC5C,EAEO81B,CACR,8BCnQA,IAAIoC,EAAc1D,EAAQ,MAE1B0D,EAAYC,MAAQ3D,EAAQ,MAC5B0D,EAAYpiB,SAAW0e,EAAQ,MAE/BxnC,EAAOC,QAAUirC,+BCLjB,IAAIA,EAAc1D,EAAQ,KACtB4D,EAAU5D,EAAQ,MAClBgB,EAAchB,EAAQ,KAEtBlqC,EAAI,WAAe,OAAO4tC,EAAYnvC,MAAMzT,KAAM0T,UAAW,EACjEsB,EAAEA,EAAI4tC,EACN5tC,EAAE6tC,MAAQD,EAAYC,MACtB7tC,EAAEwrB,SAAWoiB,EAAYpiB,SACzBxrB,EAAEyqC,MAAQS,EAAYT,MACtBzqC,EAAEwrC,MAAQtB,EAAQ,MAClBlqC,EAAEmqC,OAASD,EAAQ,MACnBlqC,EAAEwqC,OAASU,EAAYV,OACvBxqC,EAAE8tC,QAAUA,EAAQA,QACpB9tC,EAAEwnC,MAAQsG,EAAQtG,MAClBxnC,EAAE+tC,iBAAmB7D,EAAQ,MAC7BlqC,EAAEguC,iBAAmB9D,EAAQ,MAC7BlqC,EAAE6qC,cAAgBX,EAAQ,MAC1BlqC,EAAE4qC,cAAgBV,EAAQ,MAC1BlqC,EAAEotC,MAAQlD,EAAQ,MAClBlqC,EAAEiuC,gBAAkB/D,EAAQ,MAE5BxnC,EAAOC,QAAU3C,8BCrBjB,IAAImqC,EAASD,EAAQ,MAErBxnC,EAAOC,QAAUunC,EAAQ,IAARA,CAA8BC,EAAQ9Q,sBAAuB/T,gCCF9E5iB,EAAOC,QAAU8J,OAAOs+B,QAAU,SAASp/C,EAAQ48B,GAC/CA,GAAQ9b,OAAOvB,KAAKqd,GAAQ5mB,SAAQ,SAAS7J,GAAOnM,EAAOmM,GAAOywB,EAAOzwB,EAAK,GAClF,+BCFA,IAAIk2C,EAAmB9D,EAAQ,MAC3Ba,EAASb,EAAQ,MAGrBxnC,EAAOC,QAAU,SAASzO,EAAU+zC,GACnC,GAAK,wBAAyB14C,KAAK2E,GAClC,MAAM,IAAI+3C,YAAY,gDAEvB,GAAc,MAAVhE,EAAgB,OAAO/zC,EAC3B,IAAIg6C,EAAah6C,EAASgY,QAAQ,KAC9BiiC,EAAYj6C,EAASgY,QAAQ,KAC7BkiC,EAAWD,EAAY,EAAIj6C,EAASzE,OAAS0+C,EAC7CE,EAAUH,EAAa,EAAIE,EAAWF,EACtC7C,EAAOn3C,EAASqM,MAAM,EAAG8tC,GACzBC,EAAQ,CAAC,EAEbvD,EAAOuD,EAAOrG,GAEd,IAAIsG,EAAWlD,EAAK18C,QAAQ,yBAAyB,SAASqR,EAAGlI,EAAK02C,GAGrE,cAFOF,EAAMx2C,GAEM,MAAfmwC,EAAOnwC,GAAqBkI,EAEzBwuC,EAAWvG,EAAOnwC,GAAOioC,mBAAmB58B,OAAO8kC,EAAOnwC,IAClE,IAGI22C,EAAgBF,EAASriC,QAAQ,KACjCwiC,EAAeH,EAASriC,QAAQ,KAChCyiC,EAAcD,EAAe,EAAIH,EAAS9+C,OAASi/C,EACnDE,EAAaH,EAAgB,EAAIE,EAAcF,EAC/Ch1B,EAAS80B,EAAShuC,MAAM,EAAGquC,GAE3BV,GAAc,IAAGz0B,GAAUvlB,EAASqM,MAAM2tC,EAAYE,IACtDK,GAAiB,IAAGh1B,IAAWy0B,EAAa,EAAI,IAAM,KAAOK,EAAShuC,MAAMkuC,EAAeE,IAC/F,IAAIE,EAAcb,EAAiBM,GAInC,OAHIO,IAAap1B,IAAWy0B,EAAa,GAAKO,EAAgB,EAAI,IAAM,KAAOI,GAC3EV,GAAa,IAAG10B,GAAUvlB,EAASqM,MAAM4tC,IACzCO,GAAgB,IAAGj1B,IAAW00B,EAAY,EAAI,GAAK,KAAOI,EAAShuC,MAAMmuC,IACtEj1B,CACR,+BCxCA,IAAIoxB,EAAgBX,EAAQ,MAO5BxnC,EAAOC,QAAU,SAASzO,GACzB,IAAI46C,EAAejE,EAAc32C,GAC7B66C,EAAetiC,OAAOvB,KAAK4jC,EAAa7G,QACxC/8B,EAAO,GACP8jC,EAAS,IAAIh9C,OAAO,IAAM88C,EAAazD,KAAK18C,QAK/C,sDACA,SAASqR,EAAGlI,EAAKm/B,GAChB,OAAW,MAAPn/B,EAAoB,KAAOkI,GAC/BkL,EAAKhL,KAAK,CAACH,EAAGjI,EAAK8K,EAAa,QAAVq0B,IACR,QAAVA,EAAwB,OACd,MAAVA,EAAsB,aACnB,WAAaA,GAAS,IAC9B,IACG,KACJ,OAAO,SAAStqC,GAGf,IAAK,IAAIsF,EAAI,EAAGA,EAAI88C,EAAat/C,OAAQwC,IACxC,GAAI68C,EAAa7G,OAAO8G,EAAa98C,MAAQtF,EAAKs7C,OAAO8G,EAAa98C,IAAK,OAAO,EAGnF,IAAKiZ,EAAKzb,OAAQ,OAAOu/C,EAAOz/C,KAAK5C,EAAK0+C,MAC1C,IAAIzhB,EAASolB,EAAOt6B,KAAK/nB,EAAK0+C,MAC9B,GAAc,MAAVzhB,EAAgB,OAAO,EAC3B,IAAS33B,EAAI,EAAGA,EAAIiZ,EAAKzb,OAAQwC,IAChCtF,EAAKs7C,OAAO/8B,EAAKjZ,GAAG8N,GAAKmL,EAAKjZ,GAAG2Q,EAAIgnB,EAAO33B,EAAI,GAAK06C,mBAAmB/iB,EAAO33B,EAAI,IAEpF,OAAO,CACR,CACD,+BCxCA,IAAI87C,EAAmB7D,EAAQ,MAG/BxnC,EAAOC,QAAU,SAASk/B,GACzB,IAAIqM,EAAarM,EAAI31B,QAAQ,KACzBiiC,EAAYtM,EAAI31B,QAAQ,KACxBkiC,EAAWD,EAAY,EAAItM,EAAIpyC,OAAS0+C,EACxCE,EAAUH,EAAa,EAAIE,EAAWF,EACtC7C,EAAOxJ,EAAIthC,MAAM,EAAG8tC,GAAS1/C,QAAQ,UAAW,KAOpD,OALK08C,GAEY,MAAZA,EAAK,KAAYA,EAAO,IAAMA,GAC9BA,EAAK57C,OAAS,GAA+B,MAA1B47C,EAAKA,EAAK57C,OAAS,KAAY47C,EAAOA,EAAK9qC,MAAM,GAAI,KAHlE8qC,EAAO,IAKX,CACNA,KAAMA,EACNpD,OAAQiG,EAAa,EAClB,CAAC,EACDH,EAAiBlM,EAAIthC,MAAM2tC,EAAa,EAAGE,IAEhD,yBCrBA,IAAIH,EAAkB,SAAlBA,EAA2BgB,GAC9B,KAAMjkD,gBAAgBijD,GAAkB,MAAM,IAAIp3C,MAAM,qCACxD,GAAwB,mBAAbo4C,EAAyB,MAAM,IAAI7qB,UAAU,+BAExD,IAAIpsB,EAAOhN,KAAMkkD,EAAY,GAAIC,EAAY,GAAIC,EAAiB5wC,EAAQ0wC,GAAW,GAAOG,EAAgB7wC,EAAQ2wC,GAAW,GAC3HG,EAAWt3C,EAAKu3C,UAAY,CAACL,UAAWA,EAAWC,UAAWA,GAC9DjD,EAAoC,mBAAjBC,aAA8BA,aAAer+C,WACpE,SAAS0Q,EAAQwT,EAAMw9B,GACtB,OAAO,SAASC,EAAQ19C,GACvB,IAAIkwB,EACJ,IACC,IAAIutB,GAAyB,MAATz9C,GAAmC,iBAAVA,GAAuC,mBAAVA,GAAwD,mBAAvBkwB,EAAOlwB,EAAMkwB,MAKvHiqB,GAAU,WACJsD,GAAgC,IAAhBx9B,EAAKviB,QAAc61B,QAAQjW,MAAM,wCAAyCtd,GAC/F,IAAK,IAAIE,EAAI,EAAGA,EAAI+f,EAAKviB,OAAQwC,IAAK+f,EAAK/f,GAAGF,GAC9Cm9C,EAAUz/C,OAAS,EAAG0/C,EAAU1/C,OAAS,EACzC6/C,EAASjsB,MAAQmsB,EACjBF,EAASI,MAAQ,WAAYD,EAAQ19C,EAAM,CAC5C,QAX6I,CAC7I,GAAIA,IAAUiG,EAAM,MAAM,IAAIosB,UAAU,uCACxCurB,EAAY1tB,EAAKyY,KAAK3oC,GACvB,CAaD,CAFA,MAAOxD,GACN8gD,EAAc9gD,EACf,CACD,CACD,CACA,SAASohD,EAAY1tB,GACpB,IAAI2tB,EAAO,EACX,SAASvX,EAAIxpC,GACZ,OAAO,SAASkD,GACX69C,IAAS,GACb/gD,EAAGkD,EACJ,CACD,CACA,IAAI40C,EAAUtO,EAAIgX,GAClB,IAAKptB,EAAKoW,EAAI+W,GAAiBzI,EAA+B,CAArB,MAAOp4C,GAAIo4C,EAAQp4C,EAAE,CAC/D,CAEAohD,EAAYV,EACb,EACAhB,EAAgBtjD,UAAUs3B,KAAO,SAAS8B,EAAa8rB,GACtD,IAQIC,EAAaC,EARAT,EAANtkD,KAAsBukD,UACjC,SAASjxC,EAAO9C,EAAUwW,EAAMkC,EAAMmP,GACrCrR,EAAK9R,MAAK,SAASnO,GAClB,GAAwB,mBAAbyJ,EAAyB0Y,EAAKniB,QACpC,IAAK+9C,EAAYt0C,EAASzJ,GAAiD,CAAxC,MAAOxD,GAAQwhD,GAAYA,EAAWxhD,EAAE,CACjF,IAC8B,mBAAnB+gD,EAASI,OAAwBrsB,IAAUisB,EAASjsB,OAAOisB,EAASI,OAChF,CAEA,IAAI3tB,EAAU,IAAIksB,GAAgB,SAAStsB,EAASC,GAASkuB,EAAcnuB,EAASouB,EAAanuB,CAAM,IAEvG,OADAtjB,EAAOylB,EAAaurB,EAASJ,UAAWY,GAAa,GAAOxxC,EAAOuxC,EAAaP,EAASH,UAAWY,GAAY,GACzGhuB,CACR,EACAksB,EAAgBtjD,UAAS,MAAS,SAASklD,GAC1C,OAAO7kD,KAAKi3B,KAAK,KAAM4tB,EACxB,EACA5B,EAAgBtjD,UAAS,QAAW,SAAS6Q,GAC5C,OAAOxQ,KAAKi3B,MACX,SAASlwB,GACR,OAAOk8C,EAAgBtsB,QAAQnmB,KAAYymB,MAAK,WAC/C,OAAOlwB,CACR,GACD,IACA,SAASi+C,GACR,OAAO/B,EAAgBtsB,QAAQnmB,KAAYymB,MAAK,WAC/C,OAAOgsB,EAAgBrsB,OAAOouB,EAC/B,GACD,GAEF,EACA/B,EAAgBtsB,QAAU,SAAS5vB,GAClC,OAAIA,aAAiBk8C,EAAwBl8C,EACtC,IAAIk8C,GAAgB,SAAStsB,GAAUA,EAAQ5vB,EAAM,GAC7D,EACAk8C,EAAgBrsB,OAAS,SAAS7vB,GACjC,OAAO,IAAIk8C,GAAgB,SAAStsB,EAASC,GAASA,EAAO7vB,EAAM,GACpE,EACAk8C,EAAgBgC,IAAM,SAASj+B,GAC9B,OAAO,IAAIi8B,GAAgB,SAAStsB,EAASC,GAC5C,IAAIsuB,EAAQl+B,EAAKviB,OAAQgS,EAAQ,EAAGmoB,EAAS,GAC7C,GAAoB,IAAhB5X,EAAKviB,OAAckyB,EAAQ,SAC1B,IAAK,IAAI1vB,EAAI,EAAGA,EAAI+f,EAAKviB,OAAQwC,KACrC,SAAUA,GACT,SAASk+C,EAAQp+C,GAChB0P,IACAmoB,EAAO33B,GAAKF,EACR0P,IAAUyuC,GAAOvuB,EAAQiI,EAC9B,CACe,MAAX5X,EAAK/f,IAAkC,iBAAZ+f,EAAK/f,IAAsC,mBAAZ+f,EAAK/f,IAA8C,mBAAjB+f,EAAK/f,GAAGgwB,KAGnGkuB,EAAQn+B,EAAK/f,IAFjB+f,EAAK/f,GAAGgwB,KAAKkuB,EAASvuB,EAGvB,CAVD,CAUG3vB,EAEL,GACD,EACAg8C,EAAgBmC,KAAO,SAASp+B,GAC/B,OAAO,IAAIi8B,GAAgB,SAAStsB,EAASC,GAC5C,IAAK,IAAI3vB,EAAI,EAAGA,EAAI+f,EAAKviB,OAAQwC,IAChC+f,EAAK/f,GAAGgwB,KAAKN,EAASC,EAExB,GACD,EAEAlf,EAAOC,QAAUsrC,8BC7GjB,IAAIA,EAAkB/D,EAAQ,MAER,oBAAXn9C,aACoB,IAAnBA,OAAO49C,QACjB59C,OAAO49C,QAAUsD,EACNlhD,OAAO49C,QAAQhgD,UAAS,UACnCoC,OAAO49C,QAAQhgD,UAAS,QAAWsjD,EAAgBtjD,UAAS,SAE7D+X,EAAOC,QAAU5V,OAAO49C,cACI,IAAX3/B,EAAAA,QACa,IAAnBA,EAAAA,EAAO2/B,QACjB3/B,EAAAA,EAAO2/B,QAAUsD,EACNjjC,EAAAA,EAAO2/B,QAAQhgD,UAAS,UACnCqgB,EAAAA,EAAO2/B,QAAQhgD,UAAS,QAAWsjD,EAAgBtjD,UAAS,SAE7D+X,EAAOC,QAAUqI,EAAAA,EAAO2/B,SAExBjoC,EAAOC,QAAUsrC,yBCjBlBvrC,EAAOC,QAAU,SAASwf,GACzB,GAA+C,oBAA3C1V,OAAO9hB,UAAU4b,SAASxb,KAAKo3B,GAA+B,MAAO,GAEzE,IAAI7d,EAAO,GACX,IAAK,IAAIxM,KAAOqqB,EACfkuB,EAAYv4C,EAAKqqB,EAAOrqB,IAGzB,OAAOwM,EAAKlB,KAAK,KAEjB,SAASitC,EAAYv4C,EAAK/F,GACzB,GAAIrH,MAAMU,QAAQ2G,GACjB,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAMtC,OAAQwC,IACjCo+C,EAAYv4C,EAAM,IAAM7F,EAAI,IAAKF,EAAME,SAGpC,GAA8C,oBAA1Cwa,OAAO9hB,UAAU4b,SAASxb,KAAKgH,GACvC,IAAK,IAAIE,KAAKF,EACbs+C,EAAYv4C,EAAM,IAAM7F,EAAI,IAAKF,EAAME,SAGpCqS,EAAKpE,KAAK6/B,mBAAmBjoC,IAAiB,MAAT/F,GAA2B,KAAVA,EAAe,IAAMguC,mBAAmBhuC,GAAS,IAC7G,CACD,yBCvBA2Q,EAAOC,QAAU,SAASkkB,GACzB,GAAe,KAAXA,GAA2B,MAAVA,EAAgB,MAAO,CAAC,EACpB,MAArBA,EAAOypB,OAAO,KAAYzpB,EAASA,EAAOtmB,MAAM,IAGpD,IADA,IAAIgwC,EAAU1pB,EAAO9vB,MAAM,KAAMy5C,EAAW,CAAC,EAAG7jD,EAAO,CAAC,EAC/CsF,EAAI,EAAGA,EAAIs+C,EAAQ9gD,OAAQwC,IAAK,CACxC,IAAIw+C,EAAQF,EAAQt+C,GAAG8E,MAAM,KACzBe,EAAM60C,mBAAmB8D,EAAM,IAC/B1+C,EAAyB,IAAjB0+C,EAAMhhD,OAAek9C,mBAAmB8D,EAAM,IAAM,GAElD,SAAV1+C,EAAkBA,GAAQ,EACX,UAAVA,IAAmBA,GAAQ,GAEpC,IAAI2+C,EAAS54C,EAAIf,MAAM,YACnB45C,EAAShkD,EACTmL,EAAIoU,QAAQ,MAAQ,GAAGwkC,EAAO9vC,MAClC,IAAK,IAAIxN,EAAI,EAAGA,EAAIs9C,EAAOjhD,OAAQ2D,IAAK,CACvC,IAAIw9C,EAAQF,EAAOt9C,GAAIy9C,EAAYH,EAAOt9C,EAAI,GAC1C09C,EAAwB,IAAbD,IAAoBp2C,MAAMF,SAASs2C,EAAW,KAC7D,GAAc,KAAVD,EAEkB,MAAjBJ,EADA14C,EAAM44C,EAAOnwC,MAAM,EAAGnN,GAAGgQ,UAE5BotC,EAAS14C,GAAOpN,MAAMU,QAAQulD,GAAUA,EAAOlhD,OAAS,GAEzDmhD,EAAQJ,EAAS14C,UAGb,GAAc,cAAV84C,EAAuB,MAChC,GAAIx9C,IAAMs9C,EAAOjhD,OAAS,EAAGkhD,EAAOC,GAAS7+C,MACxC,CAGJ,IAAIg/C,EAAOtkC,OAAOukC,yBAAyBL,EAAQC,GACvC,MAARG,IAAcA,EAAOA,EAAKh/C,OAClB,MAARg/C,IAAcJ,EAAOC,GAASG,EAAOD,EAAW,GAAK,CAAC,GAC1DH,EAASI,CACV,CACD,CACD,CACA,OAAOpkD,CACR,+BCxCA+V,EAAOC,QAAUunC,EAAQ,KAARA,CAA2Bn9C,qCCA5C,IAAIk9C,EAAQC,EAAQ,MAChB+G,EAAmB/G,EAAQ,MAE/BxnC,EAAOC,QAAU,WAChB,IAAIyqC,EAAQ6D,EAAiBxyC,MAAM,EAAGC,WAItC,OAFA0uC,EAAMh2B,IAAM,IACZg2B,EAAM9sB,SAAW2pB,EAAMiH,kBAAkB9D,EAAM9sB,UACxC8sB,CACR,+BCTA,IAAInD,EAAQC,EAAQ,MAChB+G,EAAmB/G,EAAQ,MAE3BiH,EAAiB,+EACjBC,EAAgB,CAAC,EACjBvkC,EAAS,CAAC,EAAEpV,eAEhB,SAAS45C,EAAQlvB,GAChB,IAAK,IAAIrqB,KAAOqqB,EAAQ,GAAItV,EAAO9hB,KAAKo3B,EAAQrqB,GAAM,OAAO,EAC7D,OAAO,CACR,CAEA,SAASw5C,EAAgBjiD,GAExB,IADA,IAAIuC,EAAOwlB,EAAM,MAAOm6B,EAAU,GAAI77B,EAAQ,CAAC,EACxC9jB,EAAQu/C,EAAez8B,KAAKrlB,IAAW,CAC7C,IAAIW,EAAO4B,EAAM,GAAIG,EAAQH,EAAM,GACnC,GAAa,KAAT5B,GAAyB,KAAV+B,EAAcqlB,EAAMrlB,OAClC,GAAa,MAAT/B,EAAc0lB,EAAMf,GAAK5iB,OAC7B,GAAa,MAAT/B,EAAcuhD,EAAQrxC,KAAKnO,QAC/B,GAAoB,MAAhBH,EAAM,GAAG,GAAY,CAC7B,IAAI4/C,EAAY5/C,EAAM,GAClB4/C,IAAWA,EAAYA,EAAU7iD,QAAQ,YAAa,MAAMA,QAAQ,QAAS,OAChE,UAAbiD,EAAM,GAAgB2/C,EAAQrxC,KAAKsxC,GAClC97B,EAAM9jB,EAAM,IAAoB,KAAd4/C,EAAmBA,EAAYA,IAAa,CACpE,CACD,CAEA,OADID,EAAQ9hD,OAAS,IAAGimB,EAAMoB,UAAYy6B,EAAQnuC,KAAK,MAChDguC,EAAc/hD,GAAY,CAAC+nB,IAAKA,EAAK1B,MAAOA,EACpD,CAEA,SAAS+7B,EAAapuB,EAAO+pB,GAC5B,IAAI13B,EAAQ03B,EAAM13B,MACd4K,EAAW2pB,EAAMiH,kBAAkB9D,EAAM9sB,UACzCvwB,EAAW8c,EAAO9hB,KAAK2qB,EAAO,SAC9BoB,EAAY/mB,EAAW2lB,EAAK,MAASA,EAAMoB,UAM/C,GAJAs2B,EAAMh2B,IAAMiM,EAAMjM,IAClBg2B,EAAM13B,MAAQ,KACd03B,EAAM9sB,cAAWxiB,GAEZuzC,EAAQhuB,EAAM3N,SAAW27B,EAAQ37B,GAAQ,CAC7C,IAAIg8B,EAAW,CAAC,EAEhB,IAAK,IAAI55C,KAAO4d,EACX7I,EAAO9hB,KAAK2qB,EAAO5d,KAAM45C,EAAS55C,GAAO4d,EAAM5d,IAGpD4d,EAAQg8B,CACT,CAEA,IAAK,IAAI55C,KAAOurB,EAAM3N,MACjB7I,EAAO9hB,KAAKs4B,EAAM3N,MAAO5d,IAAgB,cAARA,IAAwB+U,EAAO9hB,KAAK2qB,EAAO5d,KAC/E4d,EAAM5d,GAAOurB,EAAM3N,MAAM5d,IAc3B,IAAK,IAAIA,KAXQ,MAAbgf,GAA8C,MAAzBuM,EAAM3N,MAAMoB,YAAmBpB,EAAMoB,UAChD,MAAbA,EAC4B,MAAzBuM,EAAM3N,MAAMoB,UACX3T,OAAOkgB,EAAM3N,MAAMoB,WAAa,IAAM3T,OAAO2T,GAC7CA,EACwB,MAAzBuM,EAAM3N,MAAMoB,UACXuM,EAAM3N,MAAMoB,UACZ,MAED/mB,IAAU2lB,EAAK,MAAS,MAEZA,EACf,GAAI7I,EAAO9hB,KAAK2qB,EAAO5d,IAAgB,QAARA,EAAe,CAC7Cs1C,EAAM13B,MAAQA,EACd,KACD,CASD,OANIhrB,MAAMU,QAAQk1B,IAAiC,IAApBA,EAAS7wB,QAA+B,MAAf6wB,EAAS,IAAkC,MAApBA,EAAS,GAAGlJ,IAC1Fg2B,EAAM7xC,KAAO+kB,EAAS,GAAGA,SAEzB8sB,EAAM9sB,SAAWA,EAGX8sB,CACR,CAkBA1qC,EAAOC,QAhBP,SAAqBtT,GACpB,GAAgB,MAAZA,GAAwC,iBAAbA,GAA6C,mBAAbA,GAAoD,mBAAlBA,EAASsgC,KACzG,MAAM94B,MAAM,wDAGb,IAAIu2C,EAAQ6D,EAAiBxyC,MAAM,EAAGC,WAEtC,MAAwB,iBAAbrP,IACV+9C,EAAM9sB,SAAW2pB,EAAMiH,kBAAkB9D,EAAM9sB,UAC9B,MAAbjxB,GAAyBoiD,EAAaL,EAAc/hD,IAAaiiD,EAAgBjiD,GAAW+9C,IAGjGA,EAAMh2B,IAAM/nB,EACL+9C,EACR,+BChGA,IAAInD,EAAQC,EAAQ,MA+BpBxnC,EAAOC,QAAU,WAChB,IAA+C2d,EAA3C5K,EAAQhX,UAAU1T,MAAOovB,EAAQpvB,KAAO,EAS5C,GAPa,MAAT0qB,EACHA,EAAQ,CAAC,GACkB,iBAAVA,GAAmC,MAAbA,EAAM0B,KAAe1sB,MAAMU,QAAQsqB,MAC1EA,EAAQ,CAAC,EACT0E,EAAQpvB,MAGL0T,UAAUjP,SAAW2qB,EAAQ,EAChCkG,EAAW5hB,UAAU0b,GAChB1vB,MAAMU,QAAQk1B,KAAWA,EAAW,CAACA,SAG1C,IADAA,EAAW,GACJlG,EAAQ1b,UAAUjP,QAAQ6wB,EAASpgB,KAAKxB,UAAU0b,MAG1D,OAAO6vB,EAAM,GAAIv0B,EAAM5d,IAAK4d,EAAO4K,EACpC,+BClDA,IAAI2pB,EAAQC,EAAQ,MAEpBxnC,EAAOC,QAAU,SAASsoC,GACzB,IACI0G,EADAC,EAAO3G,GAAWA,EAAQr/C,SAG1BimD,EAAY,CACfC,IAAK,6BACLC,KAAM,sCAGP,SAASC,EAAa5E,GACrB,OAAOA,EAAM13B,OAAS03B,EAAM13B,MAAMu8B,OAASJ,EAAUzE,EAAMh2B,IAC5D,CAGA,SAAS86B,EAAW9E,EAAOla,GAC1B,GAAIka,EAAM/pB,QAAU6P,EAAU,MAAM,IAAIr8B,MAAM,qCAC/C,CAMA,SAASs7C,EAAS/E,GACjB,IAAIla,EAAWka,EAAM/pB,MACrB,IACC,OAAOr4B,KAAKyT,MAAMy0B,EAAUx0B,UAG7B,CAFE,QACDwzC,EAAW9E,EAAOla,EACnB,CACD,CAIA,SAAShY,IACR,IACC,OAAO02B,EAAK12B,aAGb,CAFE,MAAO3sB,GACR,OAAO,IACR,CACD,CAEA,SAAS6jD,EAAY1iD,EAAQ2iD,EAAQj4B,EAAO5c,EAAKwqB,EAAOjS,EAAau8B,GACpE,IAAK,IAAIrgD,EAAImoB,EAAOnoB,EAAIuL,EAAKvL,IAAK,CACjC,IAAIm7C,EAAQiF,EAAOpgD,GACN,MAATm7C,GACHmF,EAAW7iD,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,EAEvC,CACD,CACA,SAASw8B,EAAW7iD,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,GAC7C,IAAIqB,EAAMg2B,EAAMh2B,IAChB,GAAmB,iBAARA,EAGV,OAFAg2B,EAAM/pB,MAAQ,CAAC,EACI,MAAf+pB,EAAM13B,OAAe88B,EAAcpF,EAAM13B,MAAO03B,EAAOplB,GACnD5Q,GACP,IAAK,KAQR,SAAoB1nB,EAAQ09C,EAAOr3B,GAClCq3B,EAAMqF,IAAMb,EAAKjmB,eAAeyhB,EAAM9sB,UACtCoyB,EAAWhjD,EAAQ09C,EAAMqF,IAAK18B,EAC/B,CAXa48B,CAAWjjD,EAAQ09C,EAAOr3B,GAAc,MAClD,IAAK,IAAK68B,EAAWljD,EAAQ09C,EAAOkF,EAAIv8B,GAAc,MACtD,IAAK,KAqCR,SAAwBrmB,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,GACjD,IAAIyV,EAAWomB,EAAK5nB,yBACpB,GAAsB,MAAlBojB,EAAM9sB,SAAkB,CAC3B,IAAIA,EAAW8sB,EAAM9sB,SACrB8xB,EAAY5mB,EAAUlL,EAAU,EAAGA,EAAS7wB,OAAQu4B,EAAO,KAAMsqB,EAClE,CACAlF,EAAMqF,IAAMjnB,EAAS1S,WACrBs0B,EAAMyF,QAAUrnB,EAASrX,WAAW1kB,OACpCijD,EAAWhjD,EAAQ87B,EAAUzV,EAC9B,CA9Ca+8B,CAAepjD,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,GAAc,MACjE,SA8CH,SAAuBrmB,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,GAChD,IAAIqB,EAAMg2B,EAAMh2B,IACZ1B,EAAQ03B,EAAM13B,MACd3nB,EAAK2nB,GAASA,EAAM3nB,GAIpBxC,GAFJ+mD,EAAKN,EAAa5E,IAAUkF,GAG3BvkD,EAAK6jD,EAAKmB,gBAAgBT,EAAIl7B,EAAK,CAACrpB,GAAIA,IAAO6jD,EAAKmB,gBAAgBT,EAAIl7B,GACxErpB,EAAK6jD,EAAKthD,cAAc8mB,EAAK,CAACrpB,GAAIA,IAAO6jD,EAAKthD,cAAc8mB,GAS7D,GARAg2B,EAAMqF,IAAMlnD,EAEC,MAATmqB,GA+lBL,SAAkB03B,EAAO13B,EAAO48B,GAC/B,IAAK,IAAIx6C,KAAO4d,EACfs9B,EAAQ5F,EAAOt1C,EAAK,KAAM4d,EAAM5d,GAAMw6C,EAExC,CAlmBEW,CAAS7F,EAAO13B,EAAO48B,GAGxBI,EAAWhjD,EAAQnE,EAASwqB,IAEvBm9B,EAAwB9F,KACV,MAAdA,EAAM7xC,OACU,KAAf6xC,EAAM7xC,KAAahQ,EAAQstB,YAAcu0B,EAAM7xC,KAC9C6xC,EAAM9sB,SAAW,CAAC2pB,EAAM,SAAKnsC,OAAWA,EAAWsvC,EAAM7xC,UAAMuC,OAAWA,KAE1D,MAAlBsvC,EAAM9sB,UAAkB,CAC3B,IAAIA,EAAW8sB,EAAM9sB,SACrB8xB,EAAY7mD,EAAS+0B,EAAU,EAAGA,EAAS7wB,OAAQu4B,EAAO,KAAMsqB,GAC9C,WAAdlF,EAAMh2B,KAA6B,MAAT1B,GAsoBjC,SAA4B03B,EAAO13B,GAClC,GAAI,UAAWA,EACd,GAAmB,OAAhBA,EAAM3jB,OACyB,IAA7Bq7C,EAAMqF,IAAIj3B,gBAAsB4xB,EAAMqF,IAAI1gD,MAAQ,UAChD,CACN,IAAIohD,EAAa,GAAKz9B,EAAM3jB,MACxBq7C,EAAMqF,IAAI1gD,QAAUohD,IAA2C,IAA7B/F,EAAMqF,IAAIj3B,gBAC/C4xB,EAAMqF,IAAI1gD,MAAQohD,EAEpB,CAEG,kBAAmBz9B,GAAOs9B,EAAQ5F,EAAO,gBAAiB,KAAM13B,EAAM8F,mBAAe1d,EAC1F,CAlpBgDs1C,CAAmBhG,EAAO13B,EACxE,CAEF,CA3EYplB,CAAcZ,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,QAgGpD,SAAyBrmB,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,IApBnD,SAAuBq3B,EAAOplB,GAC7B,IAAIgjB,EACJ,GAA8B,mBAAnBoC,EAAMh2B,IAAIuY,KAAqB,CAGzC,GAFAyd,EAAM/pB,MAAQ5W,OAAOugB,OAAOogB,EAAMh2B,KAEA,OADlC4zB,EAAWoC,EAAM/pB,MAAMsM,MACV0jB,kBAA2B,OACxCrI,EAASqI,mBAAoB,CAC9B,KAAO,CAGN,GAFAjG,EAAM/pB,WAAQ,EAEoB,OADlC2nB,EAAWoC,EAAMh2B,KACJi8B,kBAA2B,OACxCrI,EAASqI,mBAAoB,EAC7BjG,EAAM/pB,MAAgC,MAAvB+pB,EAAMh2B,IAAIzsB,WAAyD,mBAA7ByiD,EAAMh2B,IAAIzsB,UAAUglC,KAAuB,IAAIyd,EAAMh2B,IAAIg2B,GAASA,EAAMh2B,IAAIg2B,EAClI,CAIA,GAHAoF,EAAcpF,EAAM/pB,MAAO+pB,EAAOplB,GACf,MAAfolB,EAAM13B,OAAe88B,EAAcpF,EAAM13B,MAAO03B,EAAOplB,GAC3DolB,EAAMkC,SAAWrF,EAAMqJ,UAAUnB,EAASpnD,KAAKqiD,EAAM/pB,MAAMsM,KAAMyd,IAC7DA,EAAMkC,WAAalC,EAAO,MAAMv2C,MAAM,0DAC1Cm0C,EAASqI,kBAAoB,IAC9B,EAECE,CAAcnG,EAAOplB,GACC,MAAlBolB,EAAMkC,UACTiD,EAAW7iD,EAAQ09C,EAAMkC,SAAUtnB,EAAOsqB,EAAIv8B,GAC9Cq3B,EAAMqF,IAAMrF,EAAMkC,SAASmD,IAC3BrF,EAAMyF,QAAuB,MAAbzF,EAAMqF,IAAcrF,EAAMkC,SAASuD,QAAU,GAG7DzF,EAAMyF,QAAU,CAElB,CAvGMW,CAAgB9jD,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,EAChD,CAKA,IAAI09B,EAAkB,CAAC1oB,QAAS,QAASV,MAAO,QAASO,MAAO,QAASC,MAAO,QAASP,GAAI,QAASU,GAAI,KAAMT,GAAI,KAAMO,SAAU,QAASh2B,IAAK,YAClJ,SAAS89C,EAAWljD,EAAQ09C,EAAOkF,EAAIv8B,GACtC,IAAInkB,EAAQw7C,EAAM9sB,SAAS1uB,MAAM,kBAAoB,GAMjDsrB,EAAO00B,EAAKthD,cAAcmjD,EAAgB7hD,EAAM,KAAO,OAChD,+BAAP0gD,GACHp1B,EAAKxqB,UAAY,2CAA+C06C,EAAM9sB,SAAW,SACjFpD,EAAOA,EAAKpE,YAEZoE,EAAKxqB,UAAY06C,EAAM9sB,SAExB8sB,EAAMqF,IAAMv1B,EAAKpE,WACjBs0B,EAAMyF,QAAU31B,EAAK/I,WAAW1kB,OAEhC29C,EAAMkC,SAAW,GAGjB,IAFA,IACI5B,EADAliB,EAAWomB,EAAK5nB,yBAEb0jB,EAAQxwB,EAAKpE,YACnBs0B,EAAMkC,SAASpvC,KAAKwtC,GACpBliB,EAASzsB,YAAY2uC,GAEtBgF,EAAWhjD,EAAQ87B,EAAUzV,EAC9B,CAiLA,SAAS29B,EAAYhkD,EAAQd,EAAKyjD,EAAQrqB,EAAOjS,EAAau8B,GAC7D,GAAI1jD,IAAQyjD,IAAiB,MAAPzjD,GAAyB,MAAVyjD,GAChC,GAAW,MAAPzjD,GAA8B,IAAfA,EAAIa,OAAc2iD,EAAY1iD,EAAQ2iD,EAAQ,EAAGA,EAAO5iD,OAAQu4B,EAAOjS,EAAau8B,QACvG,GAAc,MAAVD,GAAoC,IAAlBA,EAAO5iD,OAAckkD,EAAYjkD,EAAQd,EAAK,EAAGA,EAAIa,YAC3E,CACJ,IAAImkD,EAAuB,MAAVhlD,EAAI,IAA4B,MAAdA,EAAI,GAAGkJ,IACtC+7C,EAAuB,MAAbxB,EAAO,IAA+B,MAAjBA,EAAO,GAAGv6C,IACzCsiB,EAAQ,EAAG05B,EAAW,EAC1B,IAAKF,EAAY,KAAOE,EAAWllD,EAAIa,QAA2B,MAAjBb,EAAIklD,IAAmBA,IACxE,IAAKD,EAAS,KAAOz5B,EAAQi4B,EAAO5iD,QAA2B,MAAjB4iD,EAAOj4B,IAAgBA,IACrE,GAAgB,OAAZy5B,GAAkC,MAAdD,EAAoB,OAC5C,GAAIA,IAAeC,EAClBF,EAAYjkD,EAAQd,EAAKklD,EAAUllD,EAAIa,QACvC2iD,EAAY1iD,EAAQ2iD,EAAQj4B,EAAOi4B,EAAO5iD,OAAQu4B,EAAOjS,EAAau8B,QAChE,GAAKuB,EAiBL,CAKN,IAHA,IAA2Dp3C,EAAG4G,EAAG0wC,EAAIC,EAAIC,EAArEC,EAAStlD,EAAIa,OAAS,EAAG+N,EAAM60C,EAAO5iD,OAAS,EAG5CykD,GAAUJ,GAAYt2C,GAAO4c,IACnC25B,EAAKnlD,EAAIslD,GACTF,EAAK3B,EAAO70C,GACRu2C,EAAGj8C,MAAQk8C,EAAGl8C,MACdi8C,IAAOC,GAAIG,EAAWzkD,EAAQqkD,EAAIC,EAAIhsB,EAAOjS,EAAau8B,GAChD,MAAV0B,EAAGvB,MAAa18B,EAAci+B,EAAGvB,KACrCyB,IAAU12C,IAGX,KAAO02C,GAAUJ,GAAYt2C,GAAO4c,IACnC3d,EAAI7N,EAAIklD,GACRzwC,EAAIgvC,EAAOj4B,GACP3d,EAAE3E,MAAQuL,EAAEvL,MAChBg8C,IAAY15B,IACR3d,IAAM4G,GAAG8wC,EAAWzkD,EAAQ+M,EAAG4G,EAAG2kB,EAAOosB,EAAexlD,EAAKklD,EAAU/9B,GAAcu8B,GAG1F,KAAO4B,GAAUJ,GAAYt2C,GAAO4c,GAC/BA,IAAU5c,GACVf,EAAE3E,MAAQk8C,EAAGl8C,KAAOi8C,EAAGj8C,MAAQuL,EAAEvL,KAErCu8C,EAAU3kD,EAAQqkD,EADlBE,EAAaG,EAAexlD,EAAKklD,EAAU/9B,IAEvCg+B,IAAO1wC,GAAG8wC,EAAWzkD,EAAQqkD,EAAI1wC,EAAG2kB,EAAOisB,EAAY3B,KACrDl4B,KAAW5c,GAAK62C,EAAU3kD,EAAQ+M,EAAGsZ,GACvCtZ,IAAMu3C,GAAIG,EAAWzkD,EAAQ+M,EAAGu3C,EAAIhsB,EAAOjS,EAAau8B,GAC9C,MAAV0B,EAAGvB,MAAa18B,EAAci+B,EAAGvB,KACrCqB,IACAC,EAAKnlD,IADOslD,GAEZF,EAAK3B,EAAO70C,GACZf,EAAI7N,EAAIklD,GACRzwC,EAAIgvC,EAAOj4B,GAGZ,KAAO85B,GAAUJ,GAAYt2C,GAAO4c,GAC/B25B,EAAGj8C,MAAQk8C,EAAGl8C,KACdi8C,IAAOC,GAAIG,EAAWzkD,EAAQqkD,EAAIC,EAAIhsB,EAAOjS,EAAau8B,GAChD,MAAV0B,EAAGvB,MAAa18B,EAAci+B,EAAGvB,KAC3Bj1C,IACVu2C,EAAKnlD,IADLslD,GAEAF,EAAK3B,EAAO70C,GAEb,GAAI4c,EAAQ5c,EAAKm2C,EAAYjkD,EAAQd,EAAKklD,EAAUI,EAAS,QACxD,GAAIJ,EAAWI,EAAQ9B,EAAY1iD,EAAQ2iD,EAAQj4B,EAAO5c,EAAM,EAAGwqB,EAAOjS,EAAau8B,OACvF,CAEJ,IAAuJ1/C,EAAK0hD,EAAxJC,EAAsBx+B,EAAay+B,EAAeh3C,EAAM4c,EAAQ,EAAGq6B,EAAa,IAAI/pD,MAAM8pD,GAAe9+C,EAAG,EAAGzD,EAAE,EAAGkH,EAAM,WAAYwhB,EAAU,EACpJ,IAAK1oB,EAAI,EAAGA,EAAIuiD,EAAcviD,IAAKwiD,EAAWxiD,IAAM,EACpD,IAAKA,EAAIuL,EAAKvL,GAAKmoB,EAAOnoB,IAAK,CACnB,MAAPW,IAAaA,EAAM8hD,EAAU9lD,EAAKklD,EAAUI,EAAS,IAEzD,IAAIS,EAAW/hD,GADfohD,EAAK3B,EAAOpgD,IACU6F,KACN,MAAZ68C,IACHx7C,EAAOw7C,EAAWx7C,EAAOw7C,GAAY,EACrCF,EAAWxiD,EAAEmoB,GAASu6B,EACtBZ,EAAKnlD,EAAI+lD,GACT/lD,EAAI+lD,GAAY,KACZZ,IAAOC,GAAIG,EAAWzkD,EAAQqkD,EAAIC,EAAIhsB,EAAOjS,EAAau8B,GAChD,MAAV0B,EAAGvB,MAAa18B,EAAci+B,EAAGvB,KACrC93B,IAEF,CAGA,GAFA5E,EAAcw+B,EACV55B,IAAYu5B,EAASJ,EAAW,GAAGH,EAAYjkD,EAAQd,EAAKklD,EAAUI,EAAS,GACnE,IAAZv5B,EAAey3B,EAAY1iD,EAAQ2iD,EAAQj4B,EAAO5c,EAAM,EAAGwqB,EAAOjS,EAAau8B,QAElF,IAAa,IAATn5C,EAKH,IAFAm7C,EA4IN,SAAwB5/C,GACvB,IAAI+kB,EAAS,CAAC,GACVrjB,EAAI,EAAGiN,EAAI,EAAGpR,EAAI,EAClB2iD,EAAKC,EAAQplD,OAASiF,EAAEjF,OAC5B,IAASwC,EAAI,EAAGA,EAAI2iD,EAAI3iD,IAAK4iD,EAAQ5iD,GAAKyC,EAAEzC,GAC5C,IAASA,EAAI,EAAGA,EAAI2iD,IAAM3iD,EACzB,IAAc,IAAVyC,EAAEzC,GAAN,CACA,IAAImB,EAAIqmB,EAAOA,EAAOhqB,OAAS,GAC/B,GAAIiF,EAAEtB,GAAKsB,EAAEzC,GACZ4iD,EAAQ5iD,GAAKmB,EACbqmB,EAAOvZ,KAAKjO,OAFb,CAOA,IAFAmE,EAAI,EACJiN,EAAIoW,EAAOhqB,OAAS,EACb2G,EAAIiN,GAAG,CAGb,IAAI1D,GAAKvJ,IAAM,IAAMiN,IAAM,IAAMjN,EAAIiN,EAAI,GACrC3O,EAAE+kB,EAAO9Z,IAAMjL,EAAEzC,GACpBmE,EAAIuJ,EAAI,EAGR0D,EAAI1D,CAEN,CACIjL,EAAEzC,GAAKyC,EAAE+kB,EAAOrjB,MACfA,EAAI,IAAGy+C,EAAQ5iD,GAAKwnB,EAAOrjB,EAAI,IACnCqjB,EAAOrjB,GAAKnE,EAhBb,CANyB,CA2B1B,IADAoR,EAAIoW,GADJrjB,EAAIqjB,EAAOhqB,QACI,GACR2G,KAAM,GACZqjB,EAAOrjB,GAAKiN,EACZA,EAAIwxC,EAAQxxC,GAGb,OADAwxC,EAAQplD,OAAS,EACVgqB,CACR,CAnLmBq7B,CAAeL,GAC5B/+C,EAAK4+C,EAAW7kD,OAAS,EACpBwC,EAAIuL,EAAKvL,GAAKmoB,EAAOnoB,IACzBoR,EAAIgvC,EAAOpgD,IACkB,IAAzBwiD,EAAWxiD,EAAEmoB,GAAem4B,EAAW7iD,EAAQ2T,EAAG2kB,EAAOsqB,EAAIv8B,GAE5Du+B,EAAW5+C,KAAQzD,EAAImoB,EAAO1kB,IAC7B2+C,EAAU3kD,EAAQ2T,EAAG0S,GAEd,MAAT1S,EAAEovC,MAAa18B,EAAcs8B,EAAOpgD,GAAGwgD,UAG5C,IAAKxgD,EAAIuL,EAAKvL,GAAKmoB,EAAOnoB,IACzBoR,EAAIgvC,EAAOpgD,IACkB,IAAzBwiD,EAAWxiD,EAAEmoB,IAAem4B,EAAW7iD,EAAQ2T,EAAG2kB,EAAOsqB,EAAIv8B,GACpD,MAAT1S,EAAEovC,MAAa18B,EAAcs8B,EAAOpgD,GAAGwgD,IAI/C,CACD,KA9GqB,CAEpB,IAAIsC,EAAenmD,EAAIa,OAAS4iD,EAAO5iD,OAASb,EAAIa,OAAS4iD,EAAO5iD,OAKpE,IADA2qB,EAAQA,EAAQ05B,EAAW15B,EAAQ05B,EAC5B15B,EAAQ26B,EAAc36B,KAC5B3d,EAAI7N,EAAIwrB,OACR/W,EAAIgvC,EAAOj4B,KACS,MAAL3d,GAAkB,MAAL4G,IACd,MAAL5G,EAAW81C,EAAW7iD,EAAQ2T,EAAG2kB,EAAOsqB,EAAI8B,EAAexlD,EAAKwrB,EAAQ,EAAGrE,IACtE,MAAL1S,EAAW2xC,EAAWtlD,EAAQ+M,GAClC03C,EAAWzkD,EAAQ+M,EAAG4G,EAAG2kB,EAAOosB,EAAexlD,EAAKwrB,EAAQ,EAAGrE,GAAcu8B,IAE/E1jD,EAAIa,OAASslD,GAAcpB,EAAYjkD,EAAQd,EAAKwrB,EAAOxrB,EAAIa,QAC/D4iD,EAAO5iD,OAASslD,GAAc3C,EAAY1iD,EAAQ2iD,EAAQj4B,EAAOi4B,EAAO5iD,OAAQu4B,EAAOjS,EAAau8B,EACzG,CA8FD,CACD,CACA,SAAS6B,EAAWzkD,EAAQd,EAAKw+C,EAAOplB,EAAOjS,EAAau8B,GAC3D,IAAI2C,EAASrmD,EAAIwoB,IACjB,GAAI69B,IADwB7H,EAAMh2B,IACd,CAGnB,GAFAg2B,EAAM/pB,MAAQz0B,EAAIy0B,MAClB+pB,EAAMzgB,OAAS/9B,EAAI+9B,OAqgBrB,SAAyBygB,EAAOx+C,GAC/B,EAAG,CAED,IAIIsmD,EALL,GAAmB,MAAf9H,EAAM13B,OAAuD,mBAA/B03B,EAAM13B,MAAMw3B,qBAE/BpvC,KADVo3C,EAAQ/C,EAASpnD,KAAKqiD,EAAM13B,MAAMw3B,eAAgBE,EAAOx+C,MACjCsmD,EAAO,MAEpC,GAAyB,iBAAd9H,EAAMh2B,KAA0D,mBAA/Bg2B,EAAM/pB,MAAM6pB,qBAEzCpvC,KADVo3C,EAAQ/C,EAASpnD,KAAKqiD,EAAM/pB,MAAM6pB,eAAgBE,EAAOx+C,MACjCsmD,EAAO,MAEpC,OAAO,CACR,OAAS,GAcT,OAbA9H,EAAMqF,IAAM7jD,EAAI6jD,IAChBrF,EAAMyF,QAAUjkD,EAAIikD,QACpBzF,EAAMkC,SAAW1gD,EAAI0gD,SAQrBlC,EAAM13B,MAAQ9mB,EAAI8mB,MAClB03B,EAAM9sB,SAAW1xB,EAAI0xB,SACrB8sB,EAAM7xC,KAAO3M,EAAI2M,MACV,CACR,CA9hBM45C,CAAgB/H,EAAOx+C,GAAM,OACjC,GAAsB,iBAAXqmD,EAIV,OAHmB,MAAf7H,EAAM13B,OACT0/B,EAAgBhI,EAAM13B,MAAO03B,EAAOplB,GAE7BitB,GACP,IAAK,KAaT,SAAoBrmD,EAAKw+C,GACpBx+C,EAAI0xB,SAAS/Z,aAAe6mC,EAAM9sB,SAAS/Z,aAC9C3X,EAAI6jD,IAAI9gD,UAAYy7C,EAAM9sB,UAE3B8sB,EAAMqF,IAAM7jD,EAAI6jD,GACjB,CAlBc4C,CAAWzmD,EAAKw+C,GAAQ,MAClC,IAAK,KAkBT,SAAoB19C,EAAQd,EAAKw+C,EAAOkF,EAAIv8B,GACvCnnB,EAAI0xB,WAAa8sB,EAAM9sB,UAC1Bg1B,EAAW5lD,EAAQd,GACnBgkD,EAAWljD,EAAQ09C,EAAOkF,EAAIv8B,KAG9Bq3B,EAAMqF,IAAM7jD,EAAI6jD,IAChBrF,EAAMyF,QAAUjkD,EAAIikD,QACpBzF,EAAMkC,SAAW1gD,EAAI0gD,SAEvB,CA5BciG,CAAW7lD,EAAQd,EAAKw+C,EAAOkF,EAAIv8B,GAAc,MAC3D,IAAK,KA4BT,SAAwBrmB,EAAQd,EAAKw+C,EAAOplB,EAAOjS,EAAau8B,GAC/DoB,EAAYhkD,EAAQd,EAAI0xB,SAAU8sB,EAAM9sB,SAAU0H,EAAOjS,EAAau8B,GACtE,IAAIO,EAAU,EAAGvyB,EAAW8sB,EAAM9sB,SAElC,GADA8sB,EAAMqF,IAAM,KACI,MAAZnyB,EAAkB,CACrB,IAAK,IAAIruB,EAAI,EAAGA,EAAIquB,EAAS7wB,OAAQwC,IAAK,CACzC,IAAIy7C,EAAQptB,EAASruB,GACR,MAATy7C,GAA8B,MAAbA,EAAM+E,MACT,MAAbrF,EAAMqF,MAAarF,EAAMqF,IAAM/E,EAAM+E,KACzCI,GAAWnF,EAAMmF,SAAW,EAE9B,CACgB,IAAZA,IAAezF,EAAMyF,QAAUA,EACpC,CACD,CA1Cc2C,CAAe9lD,EAAQd,EAAKw+C,EAAOplB,EAAOjS,EAAau8B,GAAK,MACtE,SA0CJ,SAAuB1jD,EAAKw+C,EAAOplB,EAAOsqB,GACzC,IAAI/mD,EAAU6hD,EAAMqF,IAAM7jD,EAAI6jD,IAC9BH,EAAKN,EAAa5E,IAAUkF,EAEV,aAAdlF,EAAMh2B,MACU,MAAfg2B,EAAM13B,QAAe03B,EAAM13B,MAAQ,CAAC,GACtB,MAAd03B,EAAM7xC,OACT6xC,EAAM13B,MAAM3jB,MAAQq7C,EAAM7xC,KAC1B6xC,EAAM7xC,UAAOuC,IAwUhB,SAAqBsvC,EAAOx+C,EAAK8mB,EAAO48B,GACvC,GAAa,MAAT58B,EACH,IAAK,IAAI5d,KAAO4d,EACfs9B,EAAQ5F,EAAOt1C,EAAKlJ,GAAOA,EAAIkJ,GAAM4d,EAAM5d,GAAMw6C,GAGnD,IAAIpnD,EACJ,GAAW,MAAP0D,EACH,IAAK,IAAIkJ,KAAOlJ,EACU,OAAnB1D,EAAM0D,EAAIkJ,KAA4B,MAAT4d,GAA+B,MAAdA,EAAM5d,IACzD2D,EAAW2xC,EAAOt1C,EAAK5M,EAAKonD,EAIhC,CAnVCmD,CAAYrI,EAAOx+C,EAAI8mB,MAAO03B,EAAM13B,MAAO48B,GACtCY,EAAwB9F,KACZ,MAAZx+C,EAAI2M,MAA8B,MAAd6xC,EAAM7xC,MAA+B,KAAf6xC,EAAM7xC,KAC/C3M,EAAI2M,KAAKgL,aAAe6mC,EAAM7xC,KAAKgL,aAAY3X,EAAI6jD,IAAI35B,WAAWnnB,UAAYy7C,EAAM7xC,OAGxE,MAAZ3M,EAAI2M,OAAc3M,EAAI0xB,SAAW,CAAC2pB,EAAM,SAAKnsC,OAAWA,EAAWlP,EAAI2M,UAAMuC,EAAWlP,EAAI6jD,IAAI35B,cAClF,MAAds0B,EAAM7xC,OAAc6xC,EAAM9sB,SAAW,CAAC2pB,EAAM,SAAKnsC,OAAWA,EAAWsvC,EAAM7xC,UAAMuC,OAAWA,KAClG41C,EAAYnoD,EAASqD,EAAI0xB,SAAU8sB,EAAM9sB,SAAU0H,EAAO,KAAMsqB,IAGnE,CAhEaoD,CAAc9mD,EAAKw+C,EAAOplB,EAAOsqB,QAiE9C,SAAyB5iD,EAAQd,EAAKw+C,EAAOplB,EAAOjS,EAAau8B,GAEhE,GADAlF,EAAMkC,SAAWrF,EAAMqJ,UAAUnB,EAASpnD,KAAKqiD,EAAM/pB,MAAMsM,KAAMyd,IAC7DA,EAAMkC,WAAalC,EAAO,MAAMv2C,MAAM,0DAC1Cu+C,EAAgBhI,EAAM/pB,MAAO+pB,EAAOplB,GACjB,MAAfolB,EAAM13B,OAAe0/B,EAAgBhI,EAAM13B,MAAO03B,EAAOplB,GACvC,MAAlBolB,EAAMkC,UACW,MAAhB1gD,EAAI0gD,SAAkBiD,EAAW7iD,EAAQ09C,EAAMkC,SAAUtnB,EAAOsqB,EAAIv8B,GACnEo+B,EAAWzkD,EAAQd,EAAI0gD,SAAUlC,EAAMkC,SAAUtnB,EAAOjS,EAAau8B,GAC1ElF,EAAMqF,IAAMrF,EAAMkC,SAASmD,IAC3BrF,EAAMyF,QAAUzF,EAAMkC,SAASuD,SAEP,MAAhBjkD,EAAI0gD,UACZ0F,EAAWtlD,EAAQd,EAAI0gD,UACvBlC,EAAMqF,SAAM30C,EACZsvC,EAAMyF,QAAU,IAGhBzF,EAAMqF,IAAM7jD,EAAI6jD,IAChBrF,EAAMyF,QAAUjkD,EAAIikD,QAEtB,CAlFO8C,CAAgBjmD,EAAQd,EAAKw+C,EAAOplB,EAAOjS,EAAau8B,EAC9D,MAEC0C,EAAWtlD,EAAQd,GACnB2jD,EAAW7iD,EAAQ09C,EAAOplB,EAAOsqB,EAAIv8B,EAEvC,CA6EA,SAAS2+B,EAAUrC,EAAQj4B,EAAO5c,GAEjC,IADA,IAAI5K,EAAM6Z,OAAOugB,OAAO,MACjB5S,EAAQ5c,EAAK4c,IAAS,CAC5B,IAAIgzB,EAAQiF,EAAOj4B,GACnB,GAAa,MAATgzB,EAAe,CAClB,IAAIt1C,EAAMs1C,EAAMt1C,IACL,MAAPA,IAAalF,EAAIkF,GAAOsiB,EAC7B,CACD,CACA,OAAOxnB,CACR,CAMA,IAAIiiD,EAAU,GA0Cd,SAAST,EAAe/B,EAAQpgD,EAAG8jB,GAClC,KAAO9jB,EAAIogD,EAAO5iD,OAAQwC,IACzB,GAAiB,MAAbogD,EAAOpgD,IAA+B,MAAjBogD,EAAOpgD,GAAGwgD,IAAa,OAAOJ,EAAOpgD,GAAGwgD,IAElE,OAAO18B,CACR,CAUA,SAASs+B,EAAU3kD,EAAQ09C,EAAOr3B,GACjC,IAAI6/B,EAAOhE,EAAK5nB,yBAChB6rB,EAAgBnmD,EAAQkmD,EAAMxI,GAC9BsF,EAAWhjD,EAAQkmD,EAAM7/B,EAC1B,CACA,SAAS8/B,EAAgBnmD,EAAQkmD,EAAMxI,GAEtC,KAAoB,MAAbA,EAAMqF,KAAerF,EAAMqF,IAAIl/C,aAAe7D,GAAQ,CAC5D,GAAyB,iBAAd09C,EAAMh2B,KAEhB,GAAa,OADbg2B,EAAQA,EAAMkC,UACK,cACb,GAAkB,MAAdlC,EAAMh2B,IAChB,IAAK,IAAInlB,EAAI,EAAGA,EAAIm7C,EAAMkC,SAAS7/C,OAAQwC,IAC1C2jD,EAAK72C,YAAYquC,EAAMkC,SAASr9C,SAE3B,GAAkB,MAAdm7C,EAAMh2B,IAEhBw+B,EAAK72C,YAAYquC,EAAMqF,UACjB,GAA8B,IAA1BrF,EAAM9sB,SAAS7wB,QAEzB,GAAa,OADb29C,EAAQA,EAAM9sB,SAAS,IACJ,cAEnB,IAASruB,EAAI,EAAGA,EAAIm7C,EAAM9sB,SAAS7wB,OAAQwC,IAAK,CAC/C,IAAIy7C,EAAQN,EAAM9sB,SAASruB,GACd,MAATy7C,GAAemI,EAAgBnmD,EAAQkmD,EAAMlI,EAClD,CAED,KACD,CACD,CAEA,SAASgF,EAAWhjD,EAAQ+iD,EAAK18B,GACb,MAAfA,EAAqBrmB,EAAOijC,aAAa8f,EAAK18B,GAC7CrmB,EAAOqP,YAAY0zC,EACzB,CAEA,SAASS,EAAwB9F,GAChC,GAAmB,MAAfA,EAAM13B,OACsB,MAA/B03B,EAAM13B,MAAMogC,iBACmB,MAA/B1I,EAAM13B,MAAMqgC,gBACV,OAAO,EACV,IAAIz1B,EAAW8sB,EAAM9sB,SACrB,GAAgB,MAAZA,GAAwC,IAApBA,EAAS7wB,QAAoC,MAApB6wB,EAAS,GAAGlJ,IAAa,CACzE,IAAIgK,EAAUd,EAAS,GAAGA,SACtB8sB,EAAMqF,IAAI//C,YAAc0uB,IAASgsB,EAAMqF,IAAI//C,UAAY0uB,EAC5D,MACK,GAAkB,MAAdgsB,EAAM7xC,MAA4B,MAAZ+kB,GAAwC,IAApBA,EAAS7wB,OAAc,MAAM,IAAIoH,MAAM,mDAC1F,OAAO,CACR,CAGA,SAAS88C,EAAYjkD,EAAQ2iD,EAAQj4B,EAAO5c,GAC3C,IAAK,IAAIvL,EAAImoB,EAAOnoB,EAAIuL,EAAKvL,IAAK,CACjC,IAAIm7C,EAAQiF,EAAOpgD,GACN,MAATm7C,GAAe4H,EAAWtlD,EAAQ09C,EACvC,CACD,CACA,SAAS4H,EAAWtlD,EAAQ09C,GAC3B,IAEI4I,EAAaC,EASZx8B,EAXDy8B,EAAO,EACPhjB,EAAWka,EAAM/pB,MAoBrB,GAlByB,iBAAd+pB,EAAMh2B,KAA0D,mBAA/Bg2B,EAAM/pB,MAAMoqB,gBAEzC,OADVh0B,EAAS04B,EAASpnD,KAAKqiD,EAAM/pB,MAAMoqB,eAAgBL,KACV,mBAAhB3zB,EAAOwI,OACnCi0B,EAAO,EACPF,EAAcv8B,GAGZ2zB,EAAM13B,OAA+C,mBAA/B03B,EAAM13B,MAAM+3B,gBAEvB,OADVh0B,EAAS04B,EAASpnD,KAAKqiD,EAAM13B,MAAM+3B,eAAgBL,KACV,mBAAhB3zB,EAAOwI,OAEnCi0B,GAAQ,EACRD,EAAcx8B,GAGhBy4B,EAAW9E,EAAOla,GAGbgjB,EAGE,CACN,GAAmB,MAAfF,EAAqB,CACxB,IAAI9hC,EAAO,WAEC,EAAPgiC,KAAYA,GAAQ,IAAcC,IACvC,EACAH,EAAY/zB,KAAK/N,EAAMA,EACxB,CACmB,MAAf+hC,IACC/hC,EAAO,WAEC,EAAPgiC,KAAYA,GAAQ,IAAcC,IACvC,EACAF,EAAYh0B,KAAK/N,EAAMA,GAEzB,MAjBC83B,EAASoB,GACT55C,EAAY9D,EAAQ09C,GAkBrB,SAAS+I,IACRjE,EAAW9E,EAAOla,GAClB8Y,EAASoB,GACT55C,EAAY9D,EAAQ09C,EACrB,CACD,CACA,SAASkI,EAAW5lD,EAAQ09C,GAC3B,IAAK,IAAIn7C,EAAI,EAAGA,EAAIm7C,EAAMkC,SAAS7/C,OAAQwC,IAC1CvC,EAAO8D,YAAY45C,EAAMkC,SAASr9C,GAEpC,CACA,SAASuB,EAAY9D,EAAQ09C,GAE5B,KAAoB,MAAbA,EAAMqF,KAAerF,EAAMqF,IAAIl/C,aAAe7D,GAAQ,CAC5D,GAAyB,iBAAd09C,EAAMh2B,KAEhB,GAAa,OADbg2B,EAAQA,EAAMkC,UACK,cACb,GAAkB,MAAdlC,EAAMh2B,IAChBk+B,EAAW5lD,EAAQ09C,OACb,CACN,GAAkB,MAAdA,EAAMh2B,MACT1nB,EAAO8D,YAAY45C,EAAMqF,MACpB/nD,MAAMU,QAAQgiD,EAAM9sB,WAAW,MAErC,GAA8B,IAA1B8sB,EAAM9sB,SAAS7wB,QAElB,GAAa,OADb29C,EAAQA,EAAM9sB,SAAS,IACJ,cAEnB,IAAK,IAAIruB,EAAI,EAAGA,EAAIm7C,EAAM9sB,SAAS7wB,OAAQwC,IAAK,CAC/C,IAAIy7C,EAAQN,EAAM9sB,SAASruB,GACd,MAATy7C,GAAel6C,EAAY9D,EAAQg+C,EACxC,CAEF,CACA,KACD,CACD,CACA,SAAS1B,EAASoB,GAGjB,GAFyB,iBAAdA,EAAMh2B,KAAoD,mBAAzBg2B,EAAM/pB,MAAM2oB,UAAyBmG,EAASpnD,KAAKqiD,EAAM/pB,MAAM2oB,SAAUoB,GACjHA,EAAM13B,OAAyC,mBAAzB03B,EAAM13B,MAAMs2B,UAAyBmG,EAASpnD,KAAKqiD,EAAM13B,MAAMs2B,SAAUoB,GAC1E,iBAAdA,EAAMh2B,IACM,MAAlBg2B,EAAMkC,UAAkBtD,EAASoB,EAAMkC,cACrC,CACN,IAAIhvB,EAAW8sB,EAAM9sB,SACrB,GAAI51B,MAAMU,QAAQk1B,GACjB,IAAK,IAAIruB,EAAI,EAAGA,EAAIquB,EAAS7wB,OAAQwC,IAAK,CACzC,IAAIy7C,EAAQptB,EAASruB,GACR,MAATy7C,GAAe1B,EAAS0B,EAC7B,CAEF,CACD,CAQA,SAASsF,EAAQ5F,EAAOt1C,EAAKlJ,EAAKmD,EAAOugD,GACxC,GAAY,QAARx6C,GAAyB,OAARA,GAAyB,MAAT/F,IAAiBqkD,EAAkBt+C,KAASlJ,IAAQmD,GA2E1F,SAAyBq7C,EAAO99C,GAC/B,MAAgB,UAATA,GAA6B,YAATA,GAA+B,kBAATA,GAAqC,aAATA,GAAuB89C,EAAMqF,MAAQv3B,KAAiC,WAAdkyB,EAAMh2B,KAAoBg2B,EAAMqF,IAAIl/C,aAAeq+C,EAAK12B,aAC9L,CA7EoGm7B,CAAgBjJ,EAAOt1C,IAA0B,iBAAV/F,GAA1I,CACA,GAAe,MAAX+F,EAAI,IAAyB,MAAXA,EAAI,GAAY,OAAOw+C,EAAYlJ,EAAOt1C,EAAK/F,GACrE,GAAwB,WAApB+F,EAAIyI,MAAM,EAAG,GAAiB6sC,EAAMqF,IAAI8D,eAAe,+BAAgCz+C,EAAIyI,MAAM,GAAIxO,QACpG,GAAY,UAAR+F,EAAiB0+C,EAAYpJ,EAAMqF,IAAK7jD,EAAKmD,QACjD,GAAI0kD,EAAerJ,EAAOt1C,EAAKw6C,GAAK,CACxC,GAAY,UAARx6C,EAAiB,CAIpB,IAAmB,UAAds1C,EAAMh2B,KAAiC,aAAdg2B,EAAMh2B,MAAuBg2B,EAAMqF,IAAI1gD,QAAU,GAAKA,GAASq7C,EAAMqF,MAAQv3B,IAAiB,OAE5H,GAAkB,WAAdkyB,EAAMh2B,KAA4B,OAARxoB,GAAgBw+C,EAAMqF,IAAI1gD,QAAU,GAAKA,EAAO,OAE9E,GAAkB,WAAdq7C,EAAMh2B,KAA4B,OAARxoB,GAAgBw+C,EAAMqF,IAAI1gD,QAAU,GAAKA,EAAO,MAE/E,CAEkB,UAAdq7C,EAAMh2B,KAA2B,SAARtf,EAAgBs1C,EAAMqF,IAAI7kC,aAAa9V,EAAK/F,GACpEq7C,EAAMqF,IAAI36C,GAAO/F,CACvB,KACsB,kBAAVA,EACNA,EAAOq7C,EAAMqF,IAAI7kC,aAAa9V,EAAK,IAClCs1C,EAAMqF,IAAIn/C,gBAAgBwE,GAE3Bs1C,EAAMqF,IAAI7kC,aAAqB,cAAR9V,EAAsB,QAAUA,EAAK/F,EAxBkG,CA0BrK,CACA,SAAS0J,EAAW2xC,EAAOt1C,EAAKlJ,EAAK0jD,GACpC,GAAY,QAARx6C,GAAyB,OAARA,GAAuB,MAAPlJ,IAAewnD,EAAkBt+C,GACtE,GAAe,MAAXA,EAAI,IAAyB,MAAXA,EAAI,IAAes+C,EAAkBt+C,GACtD,GAAY,UAARA,EAAiB0+C,EAAYpJ,EAAMqF,IAAK7jD,EAAK,WACjD,IACJ6nD,EAAerJ,EAAOt1C,EAAKw6C,IAChB,cAARx6C,GACU,UAARA,IACU,WAAds1C,EAAMh2B,KACW,WAAdg2B,EAAMh2B,MAAiD,IAA7Bg2B,EAAMqF,IAAIj3B,eAAwB4xB,EAAMqF,MAAQv3B,MAE3D,UAAdkyB,EAAMh2B,KAA2B,SAARtf,EAGxB,CACN,IAAI4+C,EAAc5+C,EAAIoU,QAAQ,MACT,IAAjBwqC,IAAoB5+C,EAAMA,EAAIyI,MAAMm2C,EAAc,KAC1C,IAAR9nD,GAAew+C,EAAMqF,IAAIn/C,gBAAwB,cAARwE,EAAsB,QAAUA,EAC9E,MALCs1C,EAAMqF,IAAI36C,GAAO,UAX+Cw+C,EAAYlJ,EAAOt1C,OAAKgG,EAiB1F,CAgCA,SAASs4C,EAAkB9mD,GAC1B,MAAgB,WAATA,GAA8B,aAATA,GAAgC,aAATA,GAAgC,aAATA,GAAgC,mBAATA,GAAsC,mBAATA,CAC/H,CACA,SAASmnD,EAAerJ,EAAOt1C,EAAKw6C,GAEnC,YAAcx0C,IAAPw0C,IAENlF,EAAMh2B,IAAIlL,QAAQ,MAAQ,GAAoB,MAAfkhC,EAAM13B,OAAiB03B,EAAM13B,MAAM3nB,IAE1D,SAAR+J,GAA0B,SAARA,GAA0B,SAARA,GAA0B,UAARA,GAA2B,WAARA,IAErEA,KAAOs1C,EAAMqF,GACnB,CAGA,IAAIkE,EAAiB,SACrB,SAASnlD,EAAYolD,GAAW,MAAO,IAAMA,EAAQplD,aAAc,CACnE,SAASqlD,EAAa/+C,GACrB,MAAkB,MAAXA,EAAI,IAAyB,MAAXA,EAAI,GAAaA,EACjC,aAARA,EAAqB,QACpBA,EAAInJ,QAAQgoD,EAAgBnlD,EAC/B,CACA,SAASglD,EAAYjrD,EAASqD,EAAKmP,GAClC,GAAInP,IAAQmP,QAEL,GAAa,MAATA,EAEVxS,EAAQwS,MAAMw2B,QAAU,QAClB,GAAqB,iBAAVx2B,EAEjBxS,EAAQwS,MAAMw2B,QAAUx2B,OAClB,GAAW,MAAPnP,GAA8B,iBAARA,EAIhC,IAAK,IAAIkJ,KAFTvM,EAAQwS,MAAMw2B,QAAU,GAERx2B,EAEF,OADThM,EAAQgM,EAAMjG,KACCvM,EAAQwS,MAAM45B,YAAYkf,EAAa/+C,GAAMqL,OAAOpR,QAElE,CAGN,IAAK,IAAI+F,KAAOiG,EAAO,CACtB,IAAIhM,EACS,OADTA,EAAQgM,EAAMjG,MACI/F,EAAQoR,OAAOpR,MAAYoR,OAAOvU,EAAIkJ,KAC3DvM,EAAQwS,MAAM45B,YAAYkf,EAAa/+C,GAAM/F,EAE/C,CAEA,IAAK,IAAI+F,KAAOlJ,EACC,MAAZA,EAAIkJ,IAA8B,MAAdiG,EAAMjG,IAC7BvM,EAAQwS,MAAM+4C,eAAeD,EAAa/+C,GAG7C,CACD,CAaA,SAASi/C,IAER/rD,KAAKoZ,EAAIutC,CACV,CAeA,SAAS2E,EAAYlJ,EAAOt1C,EAAK/F,GAChC,GAAoB,MAAhBq7C,EAAMzgB,OAAgB,CACzB,GAAIygB,EAAMzgB,OAAO70B,KAAS/F,EAAO,OACpB,MAATA,GAAmC,mBAAVA,GAAyC,iBAAVA,GAIlC,MAArBq7C,EAAMzgB,OAAO70B,IAAcs1C,EAAMqF,IAAI7sB,oBAAoB9tB,EAAIyI,MAAM,GAAI6sC,EAAMzgB,QAAQ,GACzFygB,EAAMzgB,OAAO70B,QAAOgG,IAJK,MAArBsvC,EAAMzgB,OAAO70B,IAAcs1C,EAAMqF,IAAI77B,iBAAiB9e,EAAIyI,MAAM,GAAI6sC,EAAMzgB,QAAQ,GACtFygB,EAAMzgB,OAAO70B,GAAO/F,EAKtB,MAAoB,MAATA,GAAmC,mBAAVA,GAAyC,iBAAVA,IAClEq7C,EAAMzgB,OAAS,IAAIoqB,EACnB3J,EAAMqF,IAAI77B,iBAAiB9e,EAAIyI,MAAM,GAAI6sC,EAAMzgB,QAAQ,GACvDygB,EAAMzgB,OAAO70B,GAAO/F,EAEtB,CAGA,SAASygD,EAAcjqB,EAAQ6kB,EAAOplB,GACR,mBAAlBO,EAAOglB,QAAuB4E,EAASpnD,KAAKw9B,EAAOglB,OAAQH,GACvC,mBAApB7kB,EAAO4kB,UAAyBnlB,EAAM9nB,KAAKiyC,EAASzX,KAAKnS,EAAO4kB,SAAUC,GACtF,CACA,SAASgI,EAAgB7sB,EAAQ6kB,EAAOplB,GACR,mBAApBO,EAAOilB,UAAyBxlB,EAAM9nB,KAAKiyC,EAASzX,KAAKnS,EAAOilB,SAAUJ,GACtF,CA6BA,OAnEA2J,EAAUpsD,UAAY8hB,OAAOugB,OAAO,MACpC+pB,EAAUpsD,UAAUgjD,YAAc,SAAUqJ,GAC3C,IACIv9B,EADAjb,EAAUxT,KAAK,KAAOgsD,EAAGhnD,MAEN,mBAAZwO,EAAwBib,EAASjb,EAAQzT,KAAKisD,EAAG/+C,cAAe++C,GACnC,mBAAxBx4C,EAAQmvC,aAA4BnvC,EAAQmvC,YAAYqJ,GACpEhsD,KAAKoZ,IAAmB,IAAd4yC,EAAGxM,SAAkB,EAAIx/C,KAAKoZ,MAC7B,IAAXqV,IACHu9B,EAAGtmD,iBACHsmD,EAAGrmD,kBAEL,EAwDO,SAAS8hD,EAAKJ,EAAQ7H,GAC5B,IAAKiI,EAAK,MAAM,IAAIruB,UAAU,qFAC9B,IAAI4D,EAAQ,GACR0Z,EAASxmB,IACT3E,EAAYk8B,EAAIj8B,aAGF,MAAdi8B,EAAIJ,SAAgBI,EAAI55B,YAAc,IAE1Cw5B,EAASpI,EAAMiH,kBAAkBxmD,MAAMU,QAAQinD,GAAUA,EAAS,CAACA,IACnE,IAAI4E,EAAatF,EACjB,IACCA,EAAkC,mBAAXnH,EAAwBA,OAAS1sC,EACxD41C,EAAYjB,EAAKA,EAAIJ,OAAQA,EAAQrqB,EAAO,KAAoB,iCAAdzR,OAA+CzY,EAAYyY,EAG9G,CAFE,QACDo7B,EAAgBsF,CACjB,CACAxE,EAAIJ,OAASA,EAEC,MAAV3Q,GAAkBxmB,MAAoBwmB,GAAkC,mBAAjBA,EAAO/qC,OAAsB+qC,EAAO/qC,QAC/F,IAAK,IAAI1E,EAAI,EAAGA,EAAI+1B,EAAMv4B,OAAQwC,IAAK+1B,EAAM/1B,IAC9C,CACD,+BC18BA,IAAIg4C,EAAQC,EAAQ,MAEpBxnC,EAAOC,QAAU,SAAStO,GAEzB,OADY,MAARA,IAAcA,EAAO,IAClB41C,EAAM,SAAKnsC,OAAWA,EAAWzJ,OAAMyJ,OAAWA,EAC1D,yBCLA,SAASmsC,EAAM7yB,EAAKtf,EAAK4d,EAAO4K,EAAU/kB,EAAMk3C,GAC/C,MAAO,CAACr7B,IAAKA,EAAKtf,IAAKA,EAAK4d,MAAOA,EAAO4K,SAAUA,EAAU/kB,KAAMA,EAAMk3C,IAAKA,EAAKI,aAAS/0C,EAAWulB,WAAOvlB,EAAW6uB,YAAQ7uB,EAAWwxC,cAAUxxC,EACxJ,CACAmsC,EAAMqJ,UAAY,SAAS9lC,GAC1B,OAAI9iB,MAAMU,QAAQoiB,GAAcy8B,EAAM,SAAKnsC,OAAWA,EAAWmsC,EAAMiH,kBAAkB1jC,QAAO1P,OAAWA,GAC/F,MAAR0P,GAAgC,kBAATA,EAA2B,KAClC,iBAATA,EAA0BA,EAC9By8B,EAAM,SAAKnsC,OAAWA,EAAWqF,OAAOqK,QAAO1P,OAAWA,EAClE,EACAmsC,EAAMiH,kBAAoB,SAAS55B,GAClC,IAAIgJ,EAAW,GACf,GAAIhJ,EAAM7nB,OAAQ,CAKjB,IAJA,IAAIokD,EAAsB,MAAZv8B,EAAM,IAA8B,MAAhBA,EAAM,GAAGxf,IAIlC7F,EAAI,EAAGA,EAAIqlB,EAAM7nB,OAAQwC,IACjC,IAAiB,MAAZqlB,EAAMrlB,IAA8B,MAAhBqlB,EAAMrlB,GAAG6F,OAAiB+7C,EAClD,MAAM,IAAIzvB,UAAU,2DAGtB,IAASnyB,EAAI,EAAGA,EAAIqlB,EAAM7nB,OAAQwC,IACjCquB,EAASruB,GAAKg4C,EAAMqJ,UAAUh8B,EAAMrlB,GAEtC,CACA,OAAOquB,CACR,EAEA5d,EAAOC,QAAUsnC,+BC5BjB,IAAIgE,EAAkB/D,EAAQ,KAC1BgB,EAAchB,EAAQ,KAE1BxnC,EAAOC,QAAUunC,EAAQ,KAARA,CAA6Bn9C,OAAQkhD,EAAiB/C,EAAYV,qCCHnF,IAAII,EAAgBV,EAAQ,MAE5BxnC,EAAOC,QAAU,SAASsoC,EAASN,EAASuM,GAC3C,IAAIC,EAAgB,EAEpB,SAASC,EAAanI,GACrB,OAAO,IAAItE,EAAQsE,EACpB,CAQA,SAASoI,EAAYhrC,GACpB,OAAO,SAASw1B,EAAKv9B,GACD,iBAARu9B,GAAoBv9B,EAAOu9B,EAAKA,EAAMA,EAAIA,KACpC,MAARv9B,IAAcA,EAAO,CAAC,GAC/B,IAAIyd,EAAU,IAAI4oB,GAAQ,SAAShpB,EAASC,GAC3CvV,EAAQu+B,EAAc/I,EAAKv9B,EAAK2jC,QAAS3jC,GAAM,SAAU3X,GACxD,GAAyB,mBAAd2X,EAAKtU,KACf,GAAItF,MAAMU,QAAQuB,GACjB,IAAK,IAAIsF,EAAI,EAAGA,EAAItF,EAAK8C,OAAQwC,IAChCtF,EAAKsF,GAAK,IAAIqS,EAAKtU,KAAKrD,EAAKsF,SAG1BtF,EAAO,IAAI2X,EAAKtU,KAAKrD,GAE3Bg1B,EAAQh1B,EACT,GAAGi1B,EACJ,IACA,IAAwB,IAApBtd,EAAKgzC,WAAqB,OAAOv1B,EACrC,IAAItgB,EAAQ,EACZ,SAASzH,IACQ,KAAVyH,GAAuC,mBAAjBy1C,GAA6BA,GAC1D,CAEA,OAEA,SAAS5rB,EAAKvJ,GACb,IAAIE,EAAOF,EAAQE,KAkBnB,OAVAF,EAAQnrB,YAAcwgD,EACtBr1B,EAAQE,KAAO,WACdxgB,IACA,IAAIyS,EAAO+N,EAAKxjB,MAAMsjB,EAASrjB,WAK/B,OAJAwV,EAAK+N,KAAKjoB,GAAU,SAASzL,GAE5B,GADAyL,IACc,IAAVyH,EAAa,MAAMlT,CACxB,IACO+8B,EAAKpX,EACb,EACO6N,CACR,CAtBOuJ,CAAKvJ,EAuBb,CACD,CAEA,SAASw1B,EAAUjzC,EAAMzG,GACxB,IAAK,IAAI/F,KAAOwM,EAAKigC,QACpB,GAAI,CAAC,EAAE9sC,eAAe1M,KAAKuZ,EAAKigC,QAASzsC,IAAQ+F,EAAKtO,KAAKuI,GAAM,OAAO,EAEzE,OAAO,CACR,CAEA,OA3DAs/C,EAAazsD,UAAYggD,EAAQhgD,UACjCysD,EAAaI,UAAY7M,EA0DlB,CACNmD,QAASuJ,GAAY,SAASxV,EAAKv9B,EAAMqd,EAASC,GACjD,IAMoB61B,EANhB31B,EAAwB,MAAfxd,EAAKwd,OAAiBxd,EAAKwd,OAAO5X,cAAgB,MAC3D/b,EAAOmW,EAAKnW,KACZupD,IAAgC,MAAlBpzC,EAAK07B,WAAqB17B,EAAK07B,YAActY,KAAKsY,WAAgB7xC,aAAgB88C,EAAQ0M,UACxG5Q,EAAeziC,EAAKyiC,eAAyC,mBAAjBziC,EAAKszC,QAAyB,GAAK,QAE/E3R,EAAM,IAAIgF,EAAQ/E,eAAkB2R,GAAU,EAC9C3kB,EAAW+S,EACXhC,EAAQgC,EAAIhC,MAmBhB,IAAK,IAAInsC,KAjBTmuC,EAAIhC,MAAQ,WACX4T,GAAU,EACV5T,EAAMl5C,KAAKC,KACZ,EAEAi7C,EAAIM,KAAKzkB,EAAQ+f,GAAoB,IAAfv9B,EAAK29B,MAAsC,iBAAd39B,EAAKwzC,KAAoBxzC,EAAKwzC,UAAOh6C,EAAoC,iBAAlBwG,EAAKuX,SAAwBvX,EAAKuX,cAAW/d,GAEnJ45C,GAAsB,MAARvpD,IAAiBopD,EAAUjzC,EAAM,oBAClD2hC,EAAIpC,iBAAiB,eAAgB,mCAEN,mBAArBv/B,EAAKyzC,aAA+BR,EAAUjzC,EAAM,cAC9D2hC,EAAIpC,iBAAiB,SAAU,4BAE5Bv/B,EAAK0zC,kBAAiB/R,EAAI+R,gBAAkB1zC,EAAK0zC,iBACjD1zC,EAAK3Q,UAASsyC,EAAItyC,QAAU2Q,EAAK3Q,SACrCsyC,EAAIc,aAAeA,EAEHziC,EAAKigC,SAChB,CAAC,GAAE9sC,eAAe1M,KAAKuZ,EAAKigC,QAASzsC,IACxCmuC,EAAIpC,iBAAiB/rC,EAAKwM,EAAKigC,QAAQzsC,IAIzCmuC,EAAIa,mBAAqB,SAASkQ,GAEjC,IAAIa,GAEyB,IAAzBb,EAAGrrD,OAAOo6B,WACb,IACC,IAMmCP,EAN/Bif,EAAWuS,EAAGrrD,OAAOq4C,QAAU,KAAOgT,EAAGrrD,OAAOq4C,OAAS,KAA6B,MAArBgT,EAAGrrD,OAAOq4C,QAAmB,cAAez0C,KAAKsyC,GAMlHiD,EAAWkS,EAAGrrD,OAAOm5C,SAqBzB,GAnBqB,SAAjBiC,EAGEiQ,EAAGrrD,OAAOo7C,cAAwC,mBAAjBziC,EAAKszC,UAAwB9S,EAAWpd,KAAK3iB,MAAMiyC,EAAGrrD,OAAOq7C,eACxFD,GAAiC,SAAjBA,GAMX,MAAZjC,IAAkBA,EAAWkS,EAAGrrD,OAAOq7C,cAGhB,mBAAjB1iC,EAAKszC,SACf9S,EAAWxgC,EAAKszC,QAAQZ,EAAGrrD,OAAQ2Y,GACnCmgC,GAAU,GAC4B,mBAArBngC,EAAKyzC,cACtBjT,EAAWxgC,EAAKyzC,YAAYjT,IAEzBL,EAAS9iB,EAAQmjB,OAChB,CACJ,IAAMtf,EAAUwxB,EAAGrrD,OAAOq7C,YACK,CAA/B,MAAOz4C,GAAKi3B,EAAUsf,CAAS,CAC/B,IAAIz1B,EAAQ,IAAIxY,MAAM2uB,GACtBnW,EAAMta,KAAOiiD,EAAGrrD,OAAOq4C,OACvB30B,EAAMy1B,SAAWA,EACjBljB,EAAOvS,EACR,CAID,CAFA,MAAO9gB,GACNqzB,EAAOrzB,EACR,CAEF,EAE2B,mBAAhB+V,EAAK2zC,SACfhS,EAAM3hC,EAAK2zC,OAAOhS,EAAK3hC,EAAMu9B,IAAQoE,KAGzB/S,IACXukB,EAAgBxR,EAAIhC,MACpBgC,EAAIhC,MAAQ,WACX4T,GAAU,EACVJ,EAAc1sD,KAAKC,KACpB,GAIU,MAARmD,EAAc83C,EAAIvB,OACa,mBAAnBpgC,EAAK07B,UAA0BiG,EAAIvB,KAAKpgC,EAAK07B,UAAU7xC,IAC9DA,aAAgB88C,EAAQ0M,SAAU1R,EAAIvB,KAAKv2C,GAC/C83C,EAAIvB,KAAKhd,KAAKwwB,UAAU/pD,GAC9B,IACAq5C,MAAO6P,GAAY,SAASxV,EAAKv9B,EAAMqd,EAASC,GAC/C,IAAI+lB,EAAerjC,EAAKqjC,cAAgB,YAAc15C,KAAK4M,MAAsB,KAAhB5M,KAAK0O,UAAmB,IAAMw6C,IAC3FzpC,EAASu9B,EAAQr/C,SAAS0E,cAAc,UAC5C26C,EAAQtD,GAAgB,SAASh7C,UACzBs+C,EAAQtD,GACfj6B,EAAOna,WAAWC,YAAYka,GAC9BiU,EAAQh1B,EACT,EACA+gB,EAAOi5B,QAAU,kBACTsE,EAAQtD,GACfj6B,EAAOna,WAAWC,YAAYka,GAC9BkU,EAAO,IAAI/qB,MAAM,wBAClB,EACA6W,EAAON,IAAMy0B,GAAOA,EAAI31B,QAAQ,KAAO,EAAI,IAAM,KAChD6zB,mBAAmBz7B,EAAK6zC,aAAe,YAAc,IACrDpY,mBAAmB4H,GACpBsD,EAAQr/C,SAASwE,gBAAgB2O,YAAY2O,EAC9C,IAEF,+BC/LA,IAAIw9B,EAAchB,EAAQ,KAE1BxnC,EAAOC,QAAUunC,EAAQ,KAARA,CAAwBn9C,OAAQm+C,8BCFjDxoC,EAAOC,QAAU,EAAjBD,iBCDE,WACF,aAEA01C,EAAOvM,KAAO,CAAC,EACfuM,EAAOC,KA6JP,WACC,IAAIxpD,EAAK6P,UAAU,GACf45C,EAAU5tD,MAAMC,UAAU4V,MAAMxV,KAAK2T,UAAW,GACpD,OAAO4P,EAAMgqC,GAAS1lD,KAAI,SAAS0lD,GAClC,OAAOzpD,EAAG4P,WAAMX,EAAWw6C,EAC5B,GACD,EAlKAF,EAAOG,KAgIP,SAAc1pD,EAAI5D,EAAKutD,GACtB,IAAIC,EAASD,EAAO5lD,KAAI,SAASyQ,GAChC,IAAI6Q,EAAOrlB,EAAG5D,EAAKoY,GAEnB,OADI6Q,IAASkkC,EAAOvM,OAAM5gD,EAAMipB,GACzBA,CACR,IAEA,OADAukC,EAAOxtD,GACAwtD,CACR,EAvIAL,EAAO9pC,MAAQA,EACf8pC,EAAOM,QAAUA,EACjBN,EAAOO,UAuIP,SAAmBv1B,EAAQ/O,GAC1B,IAAIikC,EAAUl1B,EAAOxwB,KAAI,SAAS+wB,GAAS,OAAOA,EAAM,EAAG,IAEvD80B,EAASC,GAAQ,WACpB,IAAIE,EAAUl6C,UAAUA,UAAUjP,OAAS,GAM3C,OALA6oD,EAAQ32C,SAAQ,SAAS82C,EAAQxmD,GAC5B2mD,EAAQ1sC,QAAQusC,IAAW,IAC9BpkC,EAAO+O,EAAOnxB,GAAG,GAAGoiB,EAAMokC,KAC5B,IAEOpkC,CACR,GAAGikC,GAIH,OAFAG,EAAOpkC,GAEAokC,CACR,EAtJAL,EAAO,mBAAqBA,EAE5B,IAAIS,GAAa,EASjB,SAAST,EAAOrmD,GACf,IAuCIyL,EAvCAs7C,EAAmB,GACnBC,EAAe,GAEnB,SAASN,EAAOp1C,GAUf,OATI3E,UAAUjP,QAAU4T,IAAM+0C,EAAOvM,OACpC95C,EAAQsR,EACJkjC,EAAKkS,KACRA,EAAOO,YACPP,EAAOQ,OAAS,SAChBH,EAAiBn3C,SAAQ,SAAS7L,EAAG7D,GAAK6D,EAAEijD,EAAa9mD,GAAGF,GAAQ,MAI/DA,CACR,CA0BA,SAASmnD,IAUR,OATA17C,EAAM46C,KACFxlD,KAAI,SAASb,GAMhB,OALc,IAAVA,IACH0mD,EAAOU,SAASx3C,SAAQ,SAAU/L,GAAIA,EAAEwjD,iBAAiBX,EAAO,IAChEA,EAAOQ,OAAS,QAChBR,EAAOU,SAAS1pD,OAASqpD,EAAiBrpD,OAASspD,EAAatpD,OAAS,GAEnEsC,CACR,IACOyL,CACR,CAmBA,OAtDAi7C,EAAO7hD,YAAcwhD,EACrBK,EAAOQ,OAASv6C,UAAUjP,QAAUsC,IAAUqmD,EAAOvM,KAAO,SAAW,UACvE4M,EAAOU,SAAW,GAElBV,EAAOO,UAAY,WACdzS,EAAKkS,KAASA,EAAOQ,OAAS,YAClCH,EAAiBn3C,SAAQ,SAAS7L,GACjCA,EAAEkjD,WACH,GACD,EAEAP,EAAOY,KAAO,SAASxqD,EAAIyqD,GAC1B,IAAI3tD,EAAS2tD,EAAgBlB,IAAWA,EAAOvpD,EAAGkD,IAIlD,OAHApG,EAAOwtD,SAASj5C,KAAKu4C,GACrBK,EAAiB54C,KAAKvU,GACtBotD,EAAa74C,KAAKrR,GACXlD,CACR,EAEA8sD,EAAO7lD,IAAM,SAAS/D,GACrB,OAAO4pD,EAAOY,KAAKxqD,EAAsB,WAAlB4pD,EAAOQ,OAC/B,EAgBAR,EAAOtvC,OAAS,WAAa,OAAgB,MAATpX,GAAyC,mBAAjBA,EAAMoX,OAAwBpX,EAAMoX,SAAWpX,CAAM,EAEjH0mD,EAAO,oBAAsBA,EAAO7lD,IACpC6lD,EAAO,mBAAqB,SAAS7zC,GAAK,OAAO8zC,GAAQ,SAASa,EAAIC,GAAM,OAAOD,IAAKC,IAAM,GAAG,CAAC50C,EAAG6zC,GAAS,EAE9GA,EAAOW,iBAAmB,SAAS1L,GAClC,IAAI+L,EAAaX,EAAiB5sC,QAAQwhC,IACtB,IAAhB+L,IACHX,EAAiB/pC,OAAO0qC,EAAY,GACpCV,EAAahqC,OAAO0qC,EAAY,GAElC,EAEAhtC,OAAOya,eAAeuxB,EAAQ,MAAO,CACpClxC,IAAK,WAAa,OAAO/J,GAAO07C,GAAY,IAGtCT,CACR,CAEA,SAASC,EAAQ7pD,EAAIypD,GACpB,IAAIn4B,EAAQm4B,EAAQoB,OAAM,SAAS5jD,GAClC,GAAIA,EAAEc,cAAgBwhD,EACrB,MAAM,IAAIvhD,MAAM,gFACjB,MAAoB,WAAbf,EAAEmjD,MACV,IACIR,EAASt4B,EACVi4B,EAAOvpD,EAAG4P,MAAM,KAAM65C,EAAQntD,OAAO,CAACmtD,MACtCF,IAECQ,EAAU,GAEVe,EAAUrB,EAAQ1lD,KAAI,SAASkD,GAClC,OAAOA,EAAEujD,MAAK,SAAStnD,GAOtB,OANA6mD,EAAQ14C,KAAKpK,IACTqqB,GAASm4B,EAAQoB,OAAM,SAAS5jD,GAAK,MAAoB,YAAbA,EAAEmjD,MAAqB,OACtE94B,GAAQ,EACRs4B,EAAO5pD,EAAG4P,MAAM,KAAM65C,EAAQntD,OAAO,CAACytD,MACtCA,EAAU,IAEJ7mD,CACR,IAAG,EACJ,IAEI6nD,EAAYnB,EAAOj7C,IAAI5K,KAAI,SAASb,IACzB,IAAVA,IACH4nD,EAAQh4C,SAAQ,SAASk4C,GAAUA,EAAOr8C,KAAI,EAAM,IACpDo8C,EAAUp8C,KAAI,GAGhB,IAEA,OAAOi7C,CACR,CAEA,SAASnqC,EAAMgqC,GACd,OAAOI,GAAQ,WAAa,OAAOJ,EAAQ1lD,KAAI,SAASkD,GAAK,OAAOA,GAAI,GAAG,GAAGwiD,EAC/E,CAsCA,SAAS/R,EAAKzwC,GACb,MAAoB,YAAbA,EAAEmjD,QAAqC,WAAbnjD,EAAEmjD,QAAoC,aAAbnjD,EAAEmjD,MAC7D,CA/JAxsC,OAAOya,eAAekxB,EAAQ,OAAQ,CACrC7wC,IAAK,WAGJ,OAFAsxC,GAAcvzB,QAAQw0B,IAAI,mDAC1BjB,GAAa,EACNT,EAAOvM,IACf,IA4JkCnpC,EAAgB,QAAI01C,CAItD,CAjLC,+BCCF,86BACA,IAAM2B,EAAS,WAGT59B,EAAO,GAUP69B,EAAgB,QAChBC,EAAgB,aAChBC,EAAkB,4BAGlBC,EAAS,CACd,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKZ12C,EAAQxV,KAAKwV,MACb22C,EAAqBj3C,OAAOyI,aAUlC,SAASyD,EAAMrf,GACd,MAAM,IAAIqqD,WAAWF,EAAOnqD,GAC7B,CA6BA,SAASsqD,EAAUzzB,EAAQh4B,GAC1B,IAAMspC,EAAQtR,EAAO9vB,MAAM,KACvB0iB,EAAS,GACT0e,EAAM1oC,OAAS,IAGlBgqB,EAAS0e,EAAM,GAAK,IACpBtR,EAASsR,EAAM,IAIhB,IACMoiB,EA/BP,SAAa5tC,EAAO9d,GAGnB,IAFA,IAAM4qB,EAAS,GACXhqB,EAASkd,EAAMld,OACZA,KACNgqB,EAAOhqB,GAAUZ,EAAG8d,EAAMld,IAE3B,OAAOgqB,CACR,CAwBiB7mB,EAFhBi0B,EAASA,EAAOl4B,QAAQurD,EAAiB,MACnBnjD,MAAM,KACAlI,GAAIuU,KAAK,KACrC,OAAOqW,EAAS8gC,CACjB,CAeA,SAASC,EAAW3zB,GAInB,IAHA,IAAM4zB,EAAS,GACXC,EAAU,EACRjrD,EAASo3B,EAAOp3B,OACfirD,EAAUjrD,GAAQ,CACxB,IAAMsC,EAAQ80B,EAAOjT,WAAW8mC,KAChC,GAAI3oD,GAAS,OAAUA,GAAS,OAAU2oD,EAAUjrD,EAAQ,CAE3D,IAAMwnC,EAAQpQ,EAAOjT,WAAW8mC,KACR,QAAX,MAARzjB,GACJwjB,EAAOv6C,OAAe,KAARnO,IAAkB,KAAe,KAARklC,GAAiB,QAIxDwjB,EAAOv6C,KAAKnO,GACZ2oD,IAEF,MACCD,EAAOv6C,KAAKnO,EAEd,CACA,OAAO0oD,CACR,CAUA,IAAME,EAAa,SAAAhuC,GAAK,OAAIxJ,OAAOy3C,cAAa,MAApBz3C,OAAwBwJ,EAAM,EAmCpDkuC,EAAe,SAASC,EAAO14B,GAGpC,OAAO04B,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAAR14B,IAAc,EACzD,EAOM24B,EAAQ,SAASjgD,EAAOkgD,EAAWC,GACxC,IAAIl7C,EAAI,EAGR,IAFAjF,EAAQmgD,EAAYx3C,EAAM3I,EA1Kd,KA0K8BA,GAAS,EACnDA,GAAS2I,EAAM3I,EAAQkgD,GACOlgD,EAAQogD,IAA2Bn7C,GAAKoc,EACrErhB,EAAQ2I,EAAM3I,EA3JMqhB,IA6JrB,OAAO1Y,EAAM1D,EAAI,GAAsBjF,GAASA,EAhLpC,IAiLb,EASMqgD,EAAS,SAAS7jC,GAEvB,IAtD6B8jC,EAsDvBX,EAAS,GACTY,EAAc/jC,EAAM7nB,OACtBwC,EAAI,EACJgO,EA5LY,IA6LZq7C,EA9Le,GAoMfC,EAAQjkC,EAAMkkC,YAlMD,KAmMbD,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAInoD,EAAI,EAAGA,EAAImoD,IAASnoD,EAExBkkB,EAAM1D,WAAWxgB,IAAM,KAC1Bic,EAAM,aAEPorC,EAAOv6C,KAAKoX,EAAM1D,WAAWxgB,IAM9B,IAAK,IAAIvC,EAAQ0qD,EAAQ,EAAIA,EAAQ,EAAI,EAAG1qD,EAAQwqD,GAAwC,CAQ3F,IADA,IAAII,EAAOxpD,EACF+R,EAAI,EAAGjE,EAAIoc,GAA0Bpc,GAAKoc,EAAM,CAEpDtrB,GAASwqD,GACZhsC,EAAM,iBAGP,IAAMyrC,GA9FqBM,EA8FA9jC,EAAM1D,WAAW/iB,MA7F9B,GAAO,GACfuqD,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEbj/B,GAsFD2+B,GAAS3+B,GAAQ2+B,EAAQr3C,GAAOs2C,EAAS9nD,GAAK+R,KACjDqL,EAAM,YAGPpd,GAAK6oD,EAAQ92C,EACb,IAAMd,EAAInD,GAAKu7C,EA7OL,EA6OoBv7C,GAAKu7C,EA5OzB,MA4O8Cv7C,EAAIu7C,EAE5D,GAAIR,EAAQ53C,EACX,MAGD,IAAMw4C,EAAav/B,EAAOjZ,EACtBc,EAAIP,EAAMs2C,EAAS2B,IACtBrsC,EAAM,YAGPrL,GAAK03C,CAEN,CAEA,IAAMC,EAAMlB,EAAOhrD,OAAS,EAC5B6rD,EAAOP,EAAM9oD,EAAIwpD,EAAME,EAAa,GAARF,GAIxBh4C,EAAMxR,EAAI0pD,GAAO5B,EAAS95C,GAC7BoP,EAAM,YAGPpP,GAAKwD,EAAMxR,EAAI0pD,GACf1pD,GAAK0pD,EAGLlB,EAAO1rC,OAAO9c,IAAK,EAAGgO,EAEvB,CAEA,OAAOkD,OAAOy3C,cAAa,MAApBz3C,OAAwBs3C,EAChC,EASMmB,EAAS,SAAStkC,GAevB,IAdA,IAcgC,EAd1BmjC,EAAS,GAMXY,GAHJ/jC,EAAQkjC,EAAWljC,IAGK7nB,OAGpBwQ,EA5RY,IA6RZnF,EAAQ,EACRwgD,EA/Re,GAkSnB,IAA2BhkC,KAAK,aAAE,KAAvB8R,EAAY,QAClBA,EAAe,KAClBqxB,EAAOv6C,KAAKk6C,EAAmBhxB,GAEjC,CAEA,IAAIyyB,EAAcpB,EAAOhrD,OACrBqsD,EAAiBD,EAWrB,IALIA,GACHpB,EAAOv6C,KA9SS,KAkTV47C,EAAiBT,GAAa,CAKpC,IADA,IACgC,EAD5Br7C,EAAI+5C,EACR,IAA2BziC,KAAK,aAAE,KAAvB8R,EAAY,QAClBA,GAAgBnpB,GAAKmpB,EAAeppB,IACvCA,EAAIopB,EAEN,CAIA,IAAM2yB,EAAwBD,EAAiB,EAC3C97C,EAAIC,EAAIwD,GAAOs2C,EAASj/C,GAASihD,IACpC1sC,EAAM,YAGPvU,IAAUkF,EAAIC,GAAK87C,EACnB97C,EAAID,EAEJ,IAAK,IAA2B,EAAhC,IAA2BsX,KAAK,aAAE,KAAvB8R,EAAY,QAItB,GAHIA,EAAenpB,KAAOnF,EAAQi/C,GACjC1qC,EAAM,YAEH+Z,GAAgBnpB,EAAG,CAGtB,IADA,IAAI+7C,EAAIlhD,EACCiF,EAAIoc,GAA0Bpc,GAAKoc,EAAM,CACjD,IAAMjZ,EAAInD,GAAKu7C,EArVP,EAqVsBv7C,GAAKu7C,EApV3B,MAoVgDv7C,EAAIu7C,EAC5D,GAAIU,EAAI94C,EACP,MAED,IAAM+4C,EAAUD,EAAI94C,EACdw4C,EAAav/B,EAAOjZ,EAC1Bu3C,EAAOv6C,KACNk6C,EAAmBS,EAAa33C,EAAI+4C,EAAUP,EAAY,KAE3DM,EAAIv4C,EAAMw4C,EAAUP,EACrB,CAEAjB,EAAOv6C,KAAKk6C,EAAmBS,EAAamB,EAAG,KAC/CV,EAAOP,EAAMjgD,EAAOihD,EAAuBD,GAAkBD,GAC7D/gD,EAAQ,IACNghD,CACH,CACD,GAEEhhD,IACAmF,CAEH,CACA,OAAOw6C,EAAOr3C,KAAK,GACpB,EAaM84C,EAAY,SAAS5kC,GAC1B,OAAOgjC,EAAUhjC,GAAO,SAASuP,GAChC,OAAOmzB,EAAczqD,KAAKs3B,GACvBs0B,EAAOt0B,EAAOtmB,MAAM,GAAG/O,eACvBq1B,CACJ,GACD,EAaMs1B,EAAU,SAAS7kC,GACxB,OAAOgjC,EAAUhjC,GAAO,SAASuP,GAChC,OAAOozB,EAAc1qD,KAAKs3B,GACvB,OAAS+0B,EAAO/0B,GAChBA,CACJ,GACD,EA8BA,QAzBiB,CAMhB,QAAW,QAQX,KAAQ,CACP,OAAU2zB,EACV,OAAUG,GAEX,OAAUQ,EACV,OAAUS,EACV,QAAWO,EACX,UAAaD,cClbb,WAMD,IAAIpiB,EAAa,CACf,YACA,YACA,QACA,SACA,YACA,YAEA,iBACA,mBACA,oBACA,kBACA,cAEA,aACA,eACA,gBACA,cAGA,YACA,cACA,aACA,cACA,WACA,iBACA,aACA,aAEA,YACA,gBACA,aACA,iBAEA,gBACA,cAEA,UACA,cAIEsiB,EAA+B,oBAAXrvD,OACpBsvD,EAAaD,GAAuC,MAA1BrvD,OAAOuvD,gBAErC,SAASC,EAAoBhxD,EAAS+B,EAAU9B,GAC9C,IAAK4wD,EACH,MAAM,IAAIvlD,MAAM,kFAGlB,IAAIiK,EAAQtV,GAAWA,EAAQsV,QAAS,EACxC,GAAIA,EAAO,CACT,IAAIjO,EAAKjH,SAAS4wD,cAAc,6CAC5B3pD,GAAIA,EAAGU,WAAWC,YAAYX,EACpC,CAGA,IAAImC,EAAMpJ,SAAS0E,cAAc,OACjC0E,EAAI2f,GAAK,2CACT/oB,SAASuC,KAAK4Q,YAAY/J,GAE1B,IAAI+I,EAAQ/I,EAAI+I,MACZ81B,EAAW9mC,OAAOymC,iBAAmBzmC,OAAOymC,iBAAiBjoC,GAAWA,EAAQkxD,aAChFC,EAA+B,UAArBnxD,EAAQgG,SAGtBwM,EAAM4+C,WAAa,WACdD,IACH3+C,EAAM6+C,SAAW,cAGnB7+C,EAAMzQ,SAAW,WACZwT,IACH/C,EAAMw4B,WAAa,UAGrBuD,EAAWn4B,SAAQ,SAAUylB,GACvBs1B,GAAoB,eAATt1B,EAEbrpB,EAAM8+C,WAAahpB,EAAS3mC,OAE5B6Q,EAAMqpB,GAAQyM,EAASzM,EAE3B,IAEIi1B,EAEE9wD,EAAQ0B,aAAesN,SAASs5B,EAAS3mC,UAC3C6Q,EAAMu9B,UAAY,UAEpBv9B,EAAMq9B,SAAW,SAGnBpmC,EAAI6jB,YAActtB,EAAQwG,MAAMoT,UAAU,EAAG7X,GAGzCovD,IACF1nD,EAAI6jB,YAAc7jB,EAAI6jB,YAAYlqB,QAAQ,MAAO,MAEnD,IAAIqH,EAAOpK,SAAS0E,cAAc,QAMlC0F,EAAK6iB,YAActtB,EAAQwG,MAAMoT,UAAU7X,IAAa,IACxD0H,EAAI+J,YAAY/I,GAEhB,IAAI8mD,EAAc,CAChBtvD,IAAKwI,EAAK7I,UAAYoN,SAASs5B,EAAyB,gBACxD76B,KAAMhD,EAAK+mD,WAAaxiD,SAASs5B,EAA0B,iBAC3D3mC,OAAQqN,SAASs5B,EAAqB,aASxC,OANI/yB,EACF9K,EAAK+H,MAAMi/C,gBAAkB,OAE7BpxD,SAASuC,KAAKqF,YAAYwB,GAGrB8nD,CACT,MAE6D,IAAlBp6C,EAAOC,QAChDD,EAAOC,QAAU45C,EACTH,IACRrvD,OAAOwvD,oBAAsBA,EAG9B,CAvIA,kBCFD,IAAIU,EAA6B,EAAQ,MAErCC,EADsC,EAAQ,UAEE,IAAzCA,EAAmC,IAAmBA,EAAmC,EAAID,QAC/C,IAA9CC,EAAwC,SAAmBA,EAAwC,OAAID,GAClHv6C,EAAOC,QAAUs6C,kBCLjB,IAAIA,EAA6B,EAAQ,MAErCC,EADsC,EAAQ,UAEW,IAAlDA,EAA4C,aAAmBA,EAA4C,WAAID,GAC1Hv6C,EAAOC,QAAUs6C,iBCJjB,IAAIA,EAA6B,EAAQ,MAErCC,EADsC,EAAQ,UAEM,IAA7CA,EAAuC,QAAmBA,EAAuC,MAAID,GAChHv6C,EAAOC,QAAUs6C,kBCJjB,IAAIA,EAA6B,EAAQ,MAErCC,EADsC,EAAQ,UAEE,IAAzCA,EAAmC,IAAmBA,EAAmC,EAAID,GACxGv6C,EAAOC,QAAUs6C,kBCJjB,IAAIA,EAA6B,EAAQ,KAErCC,EADsC,EAAQ,UAES,IAAhDA,EAA0C,WAAmBA,EAA0C,SAAID,GACtHv6C,EAAOC,QAAUs6C,YCGjBv6C,EAAOC,QAPP,SAA2B4J,EAAKxZ,IACnB,MAAPA,GAAeA,EAAMwZ,EAAI9c,UAAQsD,EAAMwZ,EAAI9c,QAC/C,IAAK,IAAIwC,EAAI,EAAGkrD,EAAO,IAAIzyD,MAAMqI,GAAMd,EAAIc,EAAKd,IAC9CkrD,EAAKlrD,GAAKsa,EAAIta,GAEhB,OAAOkrD,CACT,EACoCz6C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,kBCJzGD,EAAOC,QAHP,SAAyB4J,GACvB,GAAI7hB,MAAMU,QAAQmhB,GAAM,OAAOA,CACjC,EACkC7J,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,iBCGvGD,EAAOC,QANP,SAAgC3K,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIu0C,eAAe,6DAE3B,OAAOv0C,CACT,EACyC0K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,kBCD9GD,EAAOC,QALP,SAAyB2sC,EAAUxgD,GACjC,KAAMwgD,aAAoBxgD,GACxB,MAAM,IAAIs1B,UAAU,oCAExB,EACkC1hB,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,kBCLvG,SAAS06C,EAAkB1xD,EAAQiP,GACjC,IAAK,IAAI3I,EAAI,EAAGA,EAAI2I,EAAMnL,OAAQwC,IAAK,CACrC,IAAIqrD,EAAa1iD,EAAM3I,GACvBqrD,EAAW/uB,WAAa+uB,EAAW/uB,aAAc,EACjD+uB,EAAWn2B,cAAe,EACtB,UAAWm2B,IAAYA,EAAW7uB,UAAW,GACjDhiB,OAAOya,eAAev7B,EAAQ2xD,EAAWxlD,IAAKwlD,EAChD,CACF,CASA56C,EAAOC,QARP,SAAsB7T,EAAayuD,EAAYC,GAM7C,OALID,GAAYF,EAAkBvuD,EAAYnE,UAAW4yD,GACrDC,GAAaH,EAAkBvuD,EAAa0uD,GAChD/wC,OAAOya,eAAep4B,EAAa,YAAa,CAC9C2/B,UAAU,IAEL3/B,CACT,EAC+B4T,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,iBCJpGD,EAAOC,QAbP,SAAyB5K,EAAKD,EAAK/F,GAWjC,OAVI+F,KAAOC,EACT0U,OAAOya,eAAenvB,EAAKD,EAAK,CAC9B/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IAGZ12B,EAAID,GAAO/F,EAENgG,CACT,EACkC2K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,kBCbvG,SAAS86C,EAAgBhhD,GAIvB,OAHAiG,EAAOC,QAAU86C,EAAkBhxC,OAAOixC,eAAiBjxC,OAAOC,eAAeguB,OAAS,SAAyBj+B,GACjH,OAAOA,EAAE+6C,WAAa/qC,OAAOC,eAAejQ,EAC9C,EAAGiG,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QACjE86C,EAAgBhhD,EACzB,CACAiG,EAAOC,QAAU86C,EAAiB/6C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,wBCNvG,IAAI+6C,EAAiBxT,EAAQ,KAiB7BxnC,EAAOC,QAhBP,SAAmBg7C,EAAUC,GAC3B,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIx5B,UAAU,sDAEtBu5B,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,GAAcA,EAAWjzD,UAAW,CACrEiM,YAAa,CACX7E,MAAO4rD,EACPlvB,UAAU,EACVtH,cAAc,KAGlB1a,OAAOya,eAAey2B,EAAU,YAAa,CAC3ClvB,UAAU,IAERmvB,GAAYF,EAAeC,EAAUC,EAC3C,EAC4Bl7C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,kBCOjGD,EAAOC,QAxBP,SAA+B4J,EAAKta,GAClC,IAAIqe,EAAY,MAAP/D,EAAc,KAAyB,oBAAX6D,QAA0B7D,EAAI6D,OAAOC,WAAa9D,EAAI,cAC3F,GAAU,MAAN+D,EAAJ,CACA,IAGIutC,EAAIC,EAHJC,EAAO,GACPC,GAAK,EACLC,GAAK,EAET,IACE,IAAK3tC,EAAKA,EAAGvlB,KAAKwhB,KAAQyxC,GAAMH,EAAKvtC,EAAG4D,QAAQ1C,QAC9CusC,EAAK79C,KAAK29C,EAAG9rD,QACTE,GAAK8rD,EAAKtuD,SAAWwC,GAF4B+rD,GAAK,GAa9D,CATE,MAAOhyB,GACPiyB,GAAK,EACLH,EAAK9xB,CACP,CAAE,QACA,IACOgyB,GAAsB,MAAhB1tC,EAAW,QAAWA,EAAW,QAG9C,CAFE,QACA,GAAI2tC,EAAI,MAAMH,CAChB,CACF,CACA,OAAOC,CApBe,CAqBxB,EACwCr7C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,kBCrB7GD,EAAOC,QAHP,WACE,MAAM,IAAIyhB,UAAU,4IACtB,EACmC1hB,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,wBCHxG,IAAIu7C,EAAUhU,EAAAA,MAAAA,QACViU,EAAwBjU,EAAQ,KASpCxnC,EAAOC,QARP,SAAoC3K,EAAMjN,GACxC,GAAIA,IAA2B,WAAlBmzD,EAAQnzD,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIq5B,UAAU,4DAEtB,OAAO+5B,EAAsBnmD,EAC/B,EAC6C0K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,wBCVlH,IAAIu7C,EAAUhU,EAAAA,MAAAA,QACd,SAASkU,IACP,aACA17C,EAAOC,QAAUy7C,EAAsB,WACrC,OAAOz7C,CACT,EAAGD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACb07C,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eACZyvB,EAAiBza,OAAOya,gBAAkB,SAAUnvB,EAAKD,EAAKi5C,GAC5Dh5C,EAAID,GAAOi5C,EAAKh/C,KAClB,EACAusD,EAAU,mBAAqBluC,OAASA,OAAS,CAAC,EAClDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAC7C,SAASC,EAAO7mD,EAAKD,EAAK/F,GACxB,OAAO0a,OAAOya,eAAenvB,EAAKD,EAAK,CACrC/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IACR12B,EAAID,EACV,CACA,IACE8mD,EAAO,CAAC,EAAG,GAKb,CAJE,MAAO5yB,GACP4yB,EAAS,SAAgB7mD,EAAKD,EAAK/F,GACjC,OAAOgG,EAAID,GAAO/F,CACpB,CACF,CACA,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GACpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EACjFC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IACvC,OAAO73B,EAAeg4B,EAAW,UAAW,CAC1CntD,MAAOqtD,EAAiBP,EAAS7mD,EAAM6G,KACrCqgD,CACN,CACA,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CACLlgB,KAAM,SACNkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAOtB,CALE,MAAO8b,GACP,MAAO,CACLh8B,KAAM,QACNkgB,IAAK8b,EAET,CACF,CACArpB,EAAQ2oB,KAAOA,EACf,IAAIg0B,EAAmB,CAAC,EACxB,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBb,EAAOa,EAAmBlB,GAAgB,WACxC,OAAOvzD,IACT,IACA,IAAIwhB,EAAWC,OAAOC,eACpBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MACjE81B,GAA2BA,IAA4BrB,GAAMxxC,EAAO9hB,KAAK20D,EAAyBnB,KAAoBkB,EAAoBC,GAC1I,IAAIC,EAAKH,EAA2B70D,UAAYs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GACpF,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAAUmgB,GAC5C88B,EAAOj0D,EAAWm3B,GAAQ,SAAU5R,GAClC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC9B,GACF,GACF,CACA,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAI,UAAY+vC,EAAOjwD,KAAM,CAC3B,IAAIypB,EAASwmC,EAAO/vC,IAClBne,EAAQ0nB,EAAO1nB,MACjB,OAAOA,GAAS,UAAYmsD,EAAQnsD,IAAU8a,EAAO9hB,KAAKgH,EAAO,WAAaguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAAUlwB,GAC9HiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EACjC,IAAG,SAAUoK,GACXg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAChC,IAAKm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAAUk+B,GAC7C1mC,EAAO1nB,MAAQouD,EAAWx+B,EAAQlI,EACpC,IAAG,SAAUpK,GACX,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACzC,GACF,CACAA,EAAOq+B,EAAO/vC,IAChB,CACA,IAAIkwC,EACJl5B,EAAel8B,KAAM,UAAW,CAC9B+G,MAAO,SAAe+vB,EAAQ5R,GAC5B,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAAUp+B,EAASC,GACxCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC/B,GACF,CACA,OAAOw+B,EAAkBA,EAAkBA,EAAgBn+B,KAAKo+B,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASjB,EAAiBP,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQ,iBACZ,OAAO,SAAUvB,EAAQ5R,GACvB,GAAI,cAAgBmT,EAAO,MAAM,IAAIxsB,MAAM,gCAC3C,GAAI,cAAgBwsB,EAAO,CACzB,GAAI,UAAYvB,EAAQ,MAAM5R,EAC9B,MA8EG,CACLne,WAAO+L,EACP0T,MAAM,EA/EN,CACA,IAAK3S,EAAQijB,OAASA,EAAQjjB,EAAQqR,IAAMA,IAAO,CACjD,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CACA,GAAI,SAAWzhD,EAAQijB,OAAQjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAAS,GAAI,UAAYrR,EAAQijB,OAAQ,CAC7G,GAAI,mBAAqBuB,EAAO,MAAMA,EAAQ,YAAaxkB,EAAQqR,IACnErR,EAAQ6hD,kBAAkB7hD,EAAQqR,IACpC,KAAO,WAAarR,EAAQijB,QAAUjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KACvEmT,EAAQ,YACR,IAAI48B,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAI,WAAaohD,EAAOjwD,KAAM,CAC5B,GAAIqzB,EAAQxkB,EAAQ2S,KAAO,YAAc,iBAAkByuC,EAAO/vC,MAAQovC,EAAkB,SAC5F,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAElB,CACA,UAAYyuC,EAAOjwD,OAASqzB,EAAQ,YAAaxkB,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAClG,CACF,CACF,CACA,SAASqwC,EAAoBjX,EAAUzqC,GACrC,IAAIijB,EAASwnB,EAASj5B,SAASxR,EAAQijB,QACvC,QAAIhkB,IAAcgkB,EAAQ,CACxB,GAAIjjB,EAAQyqC,SAAW,KAAM,UAAYzqC,EAAQijB,OAAQ,CACvD,GAAIwnB,EAASj5B,SAAiB,SAAMxR,EAAQijB,OAAS,SAAUjjB,EAAQqR,SAAMpS,EAAWyiD,EAAoBjX,EAAUzqC,GAAU,UAAYA,EAAQijB,QAAS,OAAOw9B,EACpKzgD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,iDACxD,CACA,OAAOk7B,CACT,CACA,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KACzD,GAAI,UAAY+vC,EAAOjwD,KAAM,OAAO6O,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAAKrR,EAAQyqC,SAAW,KAAMgW,EACjH,IAAIsB,EAAOX,EAAO/vC,IAClB,OAAO0wC,EAAOA,EAAKpvC,MAAQ3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAAO8M,EAAQqV,KAAOo1B,EAASwX,QAAS,WAAajiD,EAAQijB,SAAWjjB,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,GAAYe,EAAQyqC,SAAW,KAAMgW,GAAoBsB,GAAQ/hD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAAqCvlB,EAAQyqC,SAAW,KAAMgW,EACrW,CACA,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CACVwQ,OAAQD,EAAK,IAEf,KAAKA,IAASvQ,EAAMyQ,SAAWF,EAAK,IAAK,KAAKA,IAASvQ,EAAM0Q,WAAaH,EAAK,GAAIvQ,EAAM2Q,SAAWJ,EAAK,IAAKh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACrI,CACA,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBAAiBiwD,EAAO/vC,IAAKugC,EAAM8Q,WAAatB,CAChE,CACA,SAASd,EAAQJ,GACf/zD,KAAKq2D,WAAa,CAAC,CACjBJ,OAAQ,SACNlC,EAAYp9C,QAAQo/C,EAAc/1D,MAAOA,KAAKgxB,OAAM,EAC1D,CACA,SAAS4N,EAAO43B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EAAgB,OAAOA,EAAe12D,KAAKy2D,GAC/C,GAAI,mBAAqBA,EAASttC,KAAM,OAAOstC,EAC/C,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EACPiiB,EAAO,SAASA,IACd,OAASjiB,EAAIuvD,EAAS/xD,QACpB,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAAI,OAAOiiB,EAAKniB,MAAQyvD,EAASvvD,GAAIiiB,EAAK1C,MAAO,EAAI0C,EAEjF,OAAOA,EAAKniB,WAAQ+L,EAAWoW,EAAK1C,MAAO,EAAI0C,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMwtC,EAEV,CACA,SAASA,IACP,MAAO,CACL3vD,WAAO+L,EACP0T,MAAM,EAEV,CACA,OAAO+tC,EAAkB50D,UAAY60D,EAA4Bt4B,EAAey4B,EAAI,cAAe,CACjG5tD,MAAOytD,EACPr4B,cAAc,IACZD,EAAes4B,EAA4B,cAAe,CAC5DztD,MAAOwtD,EACPp4B,cAAc,IACZo4B,EAAkBoC,YAAc/C,EAAOY,EAA4Bd,EAAmB,qBAAsB/7C,EAAQi/C,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOjrD,YACjD,QAASkrD,IAASA,IAASvC,GAAqB,uBAAyBuC,EAAKH,aAAeG,EAAKjkD,MACpG,EAAG8E,EAAQo/C,KAAO,SAAUF,GAC1B,OAAOp1C,OAAOixC,eAAiBjxC,OAAOixC,eAAemE,EAAQrC,IAA+BqC,EAAOrK,UAAYgI,EAA4BZ,EAAOiD,EAAQnD,EAAmB,sBAAuBmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAAKkC,CAC5O,EAAGl/C,EAAQq/C,MAAQ,SAAU9xC,GAC3B,MAAO,CACLgwC,QAAShwC,EAEb,EAAG0vC,EAAsBE,EAAcn1D,WAAYi0D,EAAOkB,EAAcn1D,UAAW6zD,GAAqB,WACtG,OAAOxzD,IACT,IAAI2X,EAAQm9C,cAAgBA,EAAen9C,EAAQs/B,MAAQ,SAAU4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxG,IAAWA,IAAgBA,EAAcpV,SACzC,IAAIsX,EAAO,IAAInC,EAAcx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAAcgB,GACxE,OAAOp9C,EAAQi/C,oBAAoB9C,GAAWmD,EAAOA,EAAK/tC,OAAO+N,MAAK,SAAUxI,GAC9E,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC3C,GACF,EAAG0rC,EAAsBD,GAAKf,EAAOe,EAAIjB,EAAmB,aAAcE,EAAOe,EAAIpB,GAAgB,WACnG,OAAOvzD,IACT,IAAI4zD,EAAOe,EAAI,YAAY,WACzB,MAAO,oBACT,IAAIh9C,EAAQuI,KAAO,SAAUhgB,GAC3B,IAAIi3B,EAAS1V,OAAOvhB,GAClBggB,EAAO,GACT,IAAK,IAAIpT,KAAOqqB,EACdjX,EAAKhL,KAAKpI,GAEZ,OAAOoT,EAAKmW,UAAW,SAASnN,IAC9B,KAAOhJ,EAAKzb,QAAS,CACnB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAAQ,OAAOjO,EAAKniB,MAAQ+F,EAAKoc,EAAK1C,MAAO,EAAI0C,CAC9D,CACA,OAAOA,EAAK1C,MAAO,EAAI0C,CACzB,CACF,EAAGvR,EAAQinB,OAASA,EAAQu1B,EAAQx0D,UAAY,CAC9CiM,YAAauoD,EACbnjC,MAAO,SAAekmC,GACpB,GAAIl3D,KAAKw1B,KAAO,EAAGx1B,KAAKkpB,KAAO,EAAGlpB,KAAKw1D,KAAOx1D,KAAKy1D,WAAQ3iD,EAAW9S,KAAKwmB,MAAO,EAAIxmB,KAAKs+C,SAAW,KAAMt+C,KAAK82B,OAAS,OAAQ92B,KAAKklB,SAAMpS,EAAW9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAAiBY,EAAe,IAAK,IAAIrkD,KAAQ7S,KAC/N,MAAQ6S,EAAKyyC,OAAO,IAAMzjC,EAAO9hB,KAAKC,KAAM6S,KAAUpD,OAAOoD,EAAK0C,MAAM,MAAQvV,KAAK6S,QAAQC,EAEjG,EACAoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EACZ,IAAI2wC,EAAan3D,KAAKq2D,WAAW,GAAGE,WACpC,GAAI,UAAYY,EAAWnyD,KAAM,MAAMmyD,EAAWjyC,IAClD,OAAOllB,KAAKo3D,IACd,EACA1B,kBAAmB,SAA2B2B,GAC5C,GAAIr3D,KAAKwmB,KAAM,MAAM6wC,EACrB,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GACnB,OAAOtC,EAAOjwD,KAAO,QAASiwD,EAAO/vC,IAAMmyC,EAAWxjD,EAAQqV,KAAOouC,EAAKC,IAAW1jD,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,KAAcykD,CAC5I,CACA,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC1BguD,EAASxP,EAAM8Q,WACjB,GAAI,SAAW9Q,EAAMwQ,OAAQ,OAAO3iD,EAAO,OAC3C,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAChCgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAClC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GAC9D,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,MAAO,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OACzD,CACL,IAAKuB,EAAY,MAAM,IAAI5rD,MAAM,0CACjC,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,CACF,CACF,CACF,EACAR,OAAQ,SAAgB3wD,EAAMkgB,GAC5B,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MAAQ3T,EAAO9hB,KAAK0lD,EAAO,eAAiBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CACjG,IAAIuB,EAAejS,EACnB,KACF,CACF,CACAiS,IAAiB,UAAY1yD,GAAQ,aAAeA,IAAS0yD,EAAazB,QAAU/wC,GAAOA,GAAOwyC,EAAavB,aAAeuB,EAAe,MAC7I,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EACvD,OAAOtB,EAAOjwD,KAAOA,EAAMiwD,EAAO/vC,IAAMA,EAAKwyC,GAAgB13D,KAAK82B,OAAS,OAAQ92B,KAAKkpB,KAAOwuC,EAAavB,WAAY7B,GAAoBt0D,KAAKgP,SAASimD,EAC5J,EACAjmD,SAAU,SAAkBimD,EAAQmB,GAClC,GAAI,UAAYnB,EAAOjwD,KAAM,MAAMiwD,EAAO/vC,IAC1C,MAAO,UAAY+vC,EAAOjwD,MAAQ,aAAeiwD,EAAOjwD,KAAOhF,KAAKkpB,KAAO+rC,EAAO/vC,IAAM,WAAa+vC,EAAOjwD,MAAQhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAAKllB,KAAK82B,OAAS,SAAU92B,KAAKkpB,KAAO,OAAS,WAAa+rC,EAAOjwD,MAAQoxD,IAAap2D,KAAKkpB,KAAOktC,GAAW9B,CACtQ,EACAvjB,OAAQ,SAAgBolB,GACtB,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAAY,OAAOn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UAAWE,EAAc7Q,GAAQ6O,CACrH,CACF,EACA,MAAS,SAAgB2B,GACvB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAI,UAAYtB,EAAOjwD,KAAM,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EAChB,CACA,OAAOkS,CACT,CACF,CACA,MAAM,IAAI9rD,MAAM,wBAClB,EACA+rD,cAAe,SAAuBpB,EAAUX,EAAYC,GAC1D,OAAO91D,KAAKs+C,SAAW,CACrBj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GACR,SAAW91D,KAAK82B,SAAW92B,KAAKklB,SAAMpS,GAAYwhD,CACvD,GACC38C,CACL,CACAD,EAAOC,QAAUy7C,EAAqB17C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,iBC1T3G,SAASkgD,EAAgBpmD,EAAG7G,GAK1B,OAJA8M,EAAOC,QAAUkgD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEpH,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAAGiG,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QACjEkgD,EAAgBpmD,EAAG7G,EAC5B,CACA8M,EAAOC,QAAUkgD,EAAiBngD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,wBCPvG,IAAImgD,EAAiB5Y,EAAQ,MACzB6Y,EAAuB7Y,EAAQ,MAC/B8Y,EAA6B9Y,EAAQ,MACrC+Y,EAAkB/Y,EAAQ,MAI9BxnC,EAAOC,QAHP,SAAwB4J,EAAKta,GAC3B,OAAO6wD,EAAev2C,IAAQw2C,EAAqBx2C,EAAKta,IAAM+wD,EAA2Bz2C,EAAKta,IAAMgxD,GACtG,EACiCvgD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,kBCPtG,SAASu7C,EAAQnmD,GAGf,OAAQ2K,EAAOC,QAAUu7C,EAAU,mBAAqB9tC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUtY,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBqY,QAAUrY,EAAInB,cAAgBwZ,QAAUrY,IAAQqY,OAAOzlB,UAAY,gBAAkBoN,CAC1H,EAAG2K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QAAUu7C,EAAQnmD,EAC5F,CACA2K,EAAOC,QAAUu7C,EAASx7C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,wBCT/F,IAAIugD,EAAmBhZ,EAAQ,MAS/BxnC,EAAOC,QARP,SAAqClG,EAAG0mD,GACtC,GAAK1mD,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAOymD,EAAiBzmD,EAAG0mD,GACtD,IAAIljD,EAAIwM,OAAO9hB,UAAU4b,SAASxb,KAAK0R,GAAG8D,MAAM,GAAI,GAEpD,MADU,WAANN,GAAkBxD,EAAE7F,cAAaqJ,EAAIxD,EAAE7F,YAAYiH,MAC7C,QAANoC,GAAqB,QAANA,EAAoBvV,MAAMigB,KAAKlO,GACxC,cAANwD,GAAqB,2CAA2C1Q,KAAK0Q,GAAWijD,EAAiBzmD,EAAG0mD,QAAxG,CALc,CAMhB,EAC8CzgD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,wBCPnH,IAAIygD,EAAUlZ,EAAQ,KAARA,GACdxnC,EAAOC,QAAUygD,EAGjB,IACEC,mBAAqBD,CAOvB,CANE,MAAOE,GACmB,iBAAfx4C,WACTA,WAAWu4C,mBAAqBD,EAEhCr4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAE5C,ICbIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAGpE9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB1jD,EAAI,WACvB,GAA0B,iBAAfgL,WAAyB,OAAOA,WAC3C,IACC,OAAO9f,MAAQ,IAAI+f,SAAS,cAAb,EAGhB,CAFE,MAAOxc,GACR,GAAsB,iBAAXxB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBy2D,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,2dCL9D,SAAS8xD,EAAKr2C,EAAM4Z,GAClB,IAAIp3B,EAAoB,WAAbwd,EAAK4J,IAAoB5J,EAAKkI,MAAMouC,MAAQ,QAAU,SAAYt2C,EAAKkI,MAAM1lB,KAyCxF,OArCEwd,EAAKkI,MAAMquC,SADA,UAAT/zD,EACoB,WACpBo3B,EACE,GAAG7mB,MAAMxV,KAAKC,KAAKg5D,iBAAiB,SAAUp/C,GAC5C,OAAOA,EAAE7S,KACX,IAEJ,EACkB,WAAT/B,EACa,SAAUzB,GAC9B64B,EAAKp8B,KAAKg5D,gBAAgB,GAAGjyD,MAC/B,EACkB,aAAT/B,EACa,SAAUzB,GAC9B64B,EAAKp8B,KAAKswB,QACZ,EAEsB9N,EAAKkI,MAAMuuC,QAAU,SAAU11D,GACnD64B,EAAKp8B,KAAK+G,MACZ,EAGe,WAAbyb,EAAK4J,IACP5J,EAAK8S,SAAS3e,SAAQ,SAAUnV,GAC1BA,EAAOkpB,MAAM3jB,QAAUq1B,KAAU56B,EAAO8zB,SAAS,KAAO8G,MAC1D56B,EAAOkpB,MAAM6F,UAAW,EAE5B,IACkB,aAATvrB,EACTwd,EAAKkI,MAAM4F,QAAU8L,IACH,UAATp3B,EACTwd,EAAKkI,MAAM4F,QAAU8L,MAAW5Z,EAAKkI,MAAM3jB,MAE3Cyb,EAAKkI,MAAM3jB,MAAQq1B,IAGrB5Z,EAAKkI,MAAMmuC,KAAO,KAEXr2C,CACT,CAEAq2C,EAAKl0B,KAAO,SAAUu0B,EAAM12C,EAAM4Z,GAChC,OAAOy8B,EAAKr2C,EAAMA,EAAKkI,MAAMmuC,KAC/B,EAEA,UC/Ce,SAASM,EAAan5C,GACnC,IAAMo5C,EAAiBp5C,EAAOhL,EAExBqkD,EAAkB,SAAUrX,GAAe,2BAAN1oC,EAAI,iCAAJA,EAAI,kBAC7C,IAAMkJ,EAAO42C,EAAe3lD,MAAMzT,KAAM0T,WASxC,OAPK8O,EAAKkI,QAAOlI,EAAKkI,MAAQ,CAAC,GAG3BlI,EAAKkI,MAAMmuC,MACbA,EAAKr2C,EAAMA,EAAKkI,MAAMmuC,MAGjBr2C,CACT,EAEAf,OAAOvB,KAAKk5C,GAAgBziD,SAAQ,SAAC7J,GAAG,OAAMusD,EAAgBvsD,GAAOssD,EAAetsD,EAAI,IAExFkT,EAAOhL,EAAIqkD,CACb,CClBA,IAAMrgD,EAAIjX,OA2BV,QAfiB,IAAIu3D,MACnB,CAAC,EACD,CACE/8C,IAAG,SAACnD,EAAG01B,GACL,OAAOyqB,QAAQh9C,IAAIvD,EAAEwgD,IAAK1qB,EAAY91B,EAAEwgD,IAC1C,EACA19C,IAAG,SAAC1C,EAAG01B,EAAY/nC,GACjB,OAAOwyD,QAAQz9C,IAAI9C,EAAEwgD,IAAK1qB,EAAY/nC,EAAOiS,EAAEwgD,IACjD,YCTJC,MAAMh5D,OAAO8e,KACbk6C,MAAMh5D,OAAOi5D,KAIbP,EAAap3D,QAQb,IAAM43D,EAAat5D,EAAEwD,GAAGuO,QC3BT,SAASwnD,EAAuB5sD,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIu0C,eAAe,6DAE3B,OAAOv0C,CACT,CCLe,SAAS6qD,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLe,SAASkH,IAYtB,OAXAA,EAAWr4C,OAAOs+B,OAASt+B,OAAOs+B,OAAOrQ,OAAS,SAAU/uC,GAC1D,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GACvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CACA,OAAOnM,CACT,EACOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CCLe,SAASqmD,EAA0BvZ,EAAevD,EAAez8C,QAAT,IAANy8C,IAAAA,EAAS,WAAmC,IAA7Bz8C,IAAAA,EAAgC,CAAC,GAC/G,IAAMw5D,EAAa,KAAKx5D,GACxBw5D,EAAW3hC,MAAQ2hC,EAAW3hC,OAAS,CAAC,EACxC2hC,EAAW3hC,MAAMvrB,IAAMmN,KAAK+pB,MAE5BhvB,EAAEwrC,MAAM1kC,IAAI0kC,EAAOvD,EAAQ+c,EAC7B,CLiBA35D,EAAEwD,GAAGuO,QAAU,SAAU5R,EAASy5D,GAG3B,CAAC,kDAAkDC,SAASD,IAC/D3/B,QAAQC,KACN,qaAIJo/B,EAAWjqB,KAAK1vC,KAAhB25D,CAAsBn5D,EACxB,kBMtCA,IAWqB25D,EAAO,6BAIhB9/B,MAAwB,EAAE,mBAiFnC,OA/ED,EAGA+/B,WAAA,WACE,OAAOp6D,KAAKq6B,MAAMr6B,KAAKq6B,MAAM51B,OAAS,EACxC,EAEA,EAGA41D,YAAA,WACE,OAAOr6D,KAAKq6B,MAAMr6B,KAAKq6B,MAAM51B,OAAS,EACxC,EAEA,EAQAyQ,KAAA,SAAKrC,EAAc1J,EAAe0tC,QAAG,IAAHA,IAAAA,EAAM7hC,EAAEwrC,MAAMjkC,OAM9C,IAAM+9C,EAAYt6D,KAAKq6B,MAAMr6B,KAAKq6B,MAAM51B,OAAS,GAC7C61D,GAAaA,EAAUznD,OAASA,GAClC7S,KAAKq6B,MAAMzkB,MAKb,IAAMpT,EAAMxC,KAAKo6D,aACb53D,GAAOA,EAAIqQ,OAASA,EACtB4O,OAAOs+B,OAAOv9C,EAAK,CAAEq0C,IAAAA,EAAK1tC,MAAAA,IAE1BnJ,KAAKq6B,MAAMnlB,KAAK,CAAErC,KAAAA,EAAMgkC,IAAAA,EAAK1tC,MAAAA,GAEjC,EAEA,EAGAoxD,UAAA,WACE,OAAOv6D,KAAKq6B,MAAM51B,OAAS,CAC7B,EAEA,EAGA+1D,KAAA,WACE,IAAKx6D,KAAKu6D,YACR,OAAOv6D,KAAKy6D,OAGdz6D,KAAKq6B,MAAMzkB,MAEXZ,EAAEwrC,MAAM1kC,IAAI9b,KAAKo6D,aAAavjB,IAChC,EAEA,EAGA6jB,QAAA,WAGE,OAFkB16D,KAAKq6B,MAAMr6B,KAAKq6B,MAAM51B,OAAS,GAEhCoyC,GACnB,EAEA,EAGA4jB,KAAA,WACEz6D,KAAKq6B,MAAMtW,OAAO,GAElBg2C,EAA0B,IAC5B,EAAC,EArFyB,GCRPY,EAAI,WACvB,WAAYp6D,GAOVP,KAAK46D,UAAY,aAQjB56D,KAAKmB,SAAWd,EAAEE,GAQlBP,KAAK66D,OAAkD,SAAzCC,aAAaC,QAAQ/6D,KAAK46D,WAQxC56D,KAAK02C,QAAS,EASd12C,KAAKg7D,SAAU,EAEfh7D,KAAKm/C,QACP,CAEA,kBA4DC,OA5DD,EAGArtC,OAAA,WACE9R,KAAK02C,QAAS,EACd12C,KAAKm/C,QACP,EAEA,EAGAptC,QAAA,WACE/R,KAAK02C,QAAS,EACd12C,KAAKg7D,SAAU,EACfh7D,KAAKm/C,QACP,EAEA,EAGAzyC,KAAA,WACES,aAAanN,KAAKi7D,aAClBj7D,KAAKg7D,SAAU,EACfh7D,KAAKm/C,QACP,EAEA,EAGAxyC,KAAA,WACE3M,KAAKg7D,SAAU,EACfh7D,KAAKm/C,QACP,EAEA,EAIA+b,aAAA,WACEl7D,KAAKi7D,YAAcn4D,WAAW9C,KAAK2M,KAAK+iC,KAAK1vC,MAAO,IACtD,EAEA,EAGAm7D,aAAA,WACEn7D,KAAK66D,QAAU76D,KAAK66D,OAEpBC,aAAaM,QAAQp7D,KAAK46D,UAAW56D,KAAK66D,OAAS,OAAS,SAE5D76D,KAAKm/C,QACP,EAEA,EAKAA,OAAA,WACEn/C,KAAKmB,SAASqE,YAAY,aAAcxF,KAAK66D,QAAQr1D,YAAY,UAAWxF,KAAK02C,QAAQlxC,YAAY,cAAexF,KAAKg7D,QAC3H,EAAC,EA1GsB,GCyBKK,EAAS,6BAIrC96D,aAAO,OAOPmqB,WAAK,OAaL2N,WAAK,oBAuGoC,OAhGzC,EAGAkqB,OAAA,SAAOH,GACLpiD,KAAKioD,SAAS7F,EAAM13B,MACtB,EAEA,EAGAy3B,SAAA,SAASC,GACPpiD,KAAKO,QAAU6hD,EAAMqF,GACvB,EAEA,EAGAvF,eAAA,SAAeE,GACbpiD,KAAKioD,SAAS7F,EAAM13B,MACtB,EAEA,EAGA83B,SAAA,SAASJ,GAAuC,EAEhD,EAGAK,eAAA,SAAeL,GAAuC,EAEtD,EAGApB,SAAA,SAASoB,GAAuC,EAEhD,EAaA/hD,EAAC,+GAAD,SAAEgE,GACA,IAAMlD,EAAWd,EAAEL,KAAKO,SAExB,OAAO8D,EAAWlD,EAASN,KAAKwD,GAAYlD,CAC9C,IAEA,EAMOu+C,UAAP,SAAiEh1B,EAA8B4K,QAAjB,IAAb5K,IAAAA,EAAgB,CAAC,QAAuC,IAA1B4K,IAAAA,EAA6B,MAC1H,IAAMgmC,EAAiB,KAAK5wC,GAE5B,OAAO1V,EAAEhV,KAAas7D,EAAgBhmC,EACxC,EAEA,EAIQ2yB,SAAR,SAAiBv9B,GAGf,QAH2B,IAAZA,IAAAA,EAAe,CAAC,GAC9B1qB,KAAK4L,YAAiC2vD,UAAU7wC,GAE7CA,EAAO,CACT,GAAI,aAAcA,EAChB,MAAM,IAAI7e,MAAM,IAEX7L,KAAK4L,YAAiCiH,KAAI,mIAKjD,GAAI,QAAS6X,EACX,MAAM,IAAI7e,MAAM,IAAK7L,KAAK4L,YAAiCiH,KAAI,4DAEnE,CAEA7S,KAAK0qB,MAAQA,CACf,EAEA,EAKO6wC,UAAP,SAAiB7wC,GAAuB,EAAC,EA/HJ,GC5BxB,SAAS8wC,EAAW59C,EAAG69C,GACpC,OAAO79C,IAAMA,IAAM69C,GAAK79C,EAAEje,qBAAqB87D,EACjD,CCLuD,IAElCC,EAAS,WAC5B,WAAY12D,EAAMrD,QAAI,IAAJA,IAAAA,EAAO,CAAC,GACxB3B,KAAKgF,KAAOA,EACZhF,KAAK2B,KAAOA,CACd,CAEA,kBAsBC,OAtBD,EAOAqjB,QAAA,SAAQhgB,EAAMrD,GAAW,WAEvB,YAFgB,IAAJA,IAAAA,EAAO,CAAC,KAEf65D,EAAWx7D,KAAKgF,KAAMA,IAIpByc,OAAOvB,KAAKve,GAAM+sD,OAAM,SAAC5hD,GAAG,OAAK,EAAKnL,KAAKmL,KAASnL,EAAKmL,EAAI,GACtE,EAAC,EAEDyP,IAAA,SAAIzP,GACF,OAAO9M,KAAK2B,KAAKmL,EACnB,EAAC,EAEDgP,IAAA,SAAIhP,EAAK/F,GACP/G,KAAK2B,KAAKmL,GAAO/F,CACnB,EAAC,EA5B2B,GCaA40D,EAAI,mGAcY,OAdZ,0CAItBC,UAAY,GAAE,EAKdC,mBAAoB,EAAI,EAKxBC,6BAA8B,EAAI,EAdZ,OAcY,kBAkC3C,OAlC2C,EAE5CvZ,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEboX,EAAIuC,SAAWvC,EAAInf,QACnBmf,EAAInf,QAAU,IAAIqhB,EAAU17D,KAAK4L,YAAa,CAAEowD,UAAWh8D,KAAK0qB,MAAMsxC,YAEtExC,EAAIyC,OAAOtvD,OACX6sD,EAAI0C,MAAMC,OACZ,EAAC,EAEDha,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEXpiD,KAAK47D,WACPv7D,EAAE,QAAQwC,SAAS7C,KAAK47D,WAGtB57D,KAAK67D,mBACPx7D,EAAE0B,QAAQM,UAAU,GAGlB,sBAAuBi+C,UACzBA,QAAQ8b,kBAAoBp8D,KAAK87D,4BAA8B,OAAS,SAE5E,EAAC,EAED9a,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEXpiD,KAAK47D,WACPv7D,EAAE,QAAQuC,YAAY5C,KAAK47D,UAE/B,EAAC,EAhD+B,CAA+EP,GCfjH,SAAShJ,EAAkB1xD,EAAQiP,GACjC,IAAK,IAAI3I,EAAI,EAAGA,EAAI2I,EAAMnL,OAAQwC,IAAK,CACrC,IAAIqrD,EAAa1iD,EAAM3I,GACvBqrD,EAAW/uB,WAAa+uB,EAAW/uB,aAAc,EACjD+uB,EAAWn2B,cAAe,EACtB,UAAWm2B,IAAYA,EAAW7uB,UAAW,GACjDhiB,OAAOya,eAAev7B,EAAQ2xD,EAAWxlD,IAAKwlD,EAChD,CACF,CACe,SAAS+J,EAAav4D,EAAayuD,EAAYC,GAM5D,OALID,GAAYF,EAAkBvuD,EAAYnE,UAAW4yD,GACrDC,GAAaH,EAAkBvuD,EAAa0uD,GAChD/wC,OAAOya,eAAep4B,EAAa,YAAa,CAC9C2/B,UAAU,IAEL3/B,CACT,CCOe,SAASw4D,EAASvvD,GAC/B,IAAM/H,SAAc+H,EACpB,MAAgB,aAAT/H,GAAiC,WAATA,KAAuB+H,CACxD,CC1BkC,IAQ5BwvD,EAIJ,SAAYnmC,EAAYomC,GAAkB,KAH1CpmC,aAAO,OACPomC,cAAQ,EAGNx8D,KAAKo2B,QAAUA,EACfp2B,KAAKw8D,SAAWA,CAClB,EAOmBC,EAAQ,6BAIjBC,OAAkC,CAAC,CAAC,mBAkB7C,OAED,EAGArW,QAAA,WACE,OAA2C,IAApC5kC,OAAOvB,KAAKlgB,KAAK08D,QAAQj4D,MAClC,EAEA,EAGAixB,IAAA,SAAI5oB,GACF,OAAO2U,OAAOvB,KAAKlgB,KAAK08D,QAAQxC,SAASptD,EAC3C,EAEA,EAGAyP,IAAA,SAAIzP,GACF,OAAO9M,KAAK08D,OAAO5vD,GAAKspB,OAC1B,EAEA,EAGAumC,YAAA,SAAY7vD,GACV,OAAO9M,KAAK08D,OAAO5vD,GAAK0vD,QAC1B,EAEA,EAQA1jD,IAAA,SAAIhM,EAAaspB,EAAYomC,GAG3B,YAH2C,IAAhBA,IAAAA,EAAmB,GAC9Cx8D,KAAK08D,OAAO5vD,GAAO,IAAIyvD,EAAKnmC,EAASomC,GAE9Bx8D,IACT,EAGA,EAuBA2D,QAAA,SAAQmJ,EAAaspB,EAA0BomC,GAC7C,YADoC,IAAjBpmC,IAAAA,EAAoB,WAA6B,IAAvBomC,IAAAA,EAA0B,MAClEx8D,KAAK01B,IAAI5oB,IAEE,OAAZspB,IACFp2B,KAAK08D,OAAO5vD,GAAKspB,QAAUA,GAGZ,OAAbomC,IACFx8D,KAAK08D,OAAO5vD,GAAK0vD,SAAWA,GAGvBx8D,MAVoBA,IAW7B,EAEA,EAkBA4N,WAAA,SAAWd,EAAaspB,GACtB,IAAKp2B,KAAK01B,IAAI5oB,GACZ,MAAM,IAAIjB,MAAM,+CAAgDiB,EAAG,qBAIrE,OAAO9M,KAAK2D,QAAQmJ,EAAKspB,EAC3B,EAEA,EAkBAwmC,YAAA,SAAY9vD,EAAa0vD,GACvB,IAAKx8D,KAAK01B,IAAI5oB,GACZ,MAAM,IAAIjB,MAAM,gDAAiDiB,EAAG,qBAKtE,OAFA9M,KAAK08D,OAAO5vD,GAAK0vD,SAAWA,EAErBx8D,IACT,EAEA,EAKA6E,OAAA,SAAOiI,GAGL,cAFO9M,KAAK08D,OAAO5vD,GAEZ9M,IACT,EAEA,EAMAsjB,MAAA,SAAMu5C,GAAqC,WASzC,OARAp7C,OAAOvB,KAAK28C,EAAUH,QAAQ/lD,SAAQ,SAAC7J,GACrC,IAAM5M,EAAM28D,EAAUH,OAAO5vD,GAEzB5M,aAAeq8D,IACjB,EAAKG,OAAO5vD,GAAO5M,EAEvB,IAEOF,IACT,EAEA,EAkCAijB,QAAA,SAAQ65C,GAA+E,WAgBrF,YAhB6B,IAAvBA,IAAAA,GAA0B,GACPr7C,OAAOvB,KAAKlgB,KAAK08D,QAAQ90D,KAAI,SAACkF,EAAK7F,GAC1D,IAAMgb,EAAO,EAAKy6C,OAAO5vD,GAEzB,OAAKgwD,GAAkBR,EAASr6C,EAAKmU,SAE5B,KACFnU,EAAI,CACPmU,QAAS,EAAK2mC,uBAAuBT,EAASr6C,EAAKmU,SAAWnU,EAAKmU,QAAU3U,OAAOQ,EAAKmU,SAAUtpB,KAI9F,KAAKmV,EAEhB,IAEavM,MAAK,SAAChM,EAAGE,GAAC,OAAKA,EAAE4yD,SAAW9yD,EAAE8yD,QAAQ,IAAE50D,KAAI,SAACqa,GAAI,OAAKA,EAAKmU,OAAO,GACjF,EAEA,EAqBA4mC,SAAA,WAAyD,WACvD,OAAOv7C,OAAOvB,KAAKlgB,KAAK08D,QAAQ58D,QAAO,SAAC8H,EAAKkF,GAC3C,IAAMC,EAAM,CACVqpB,QAAS,EAAK7Z,IAAIzP,GAClBmwD,SAAUnwD,EACV0vD,SAAU,EAAKG,YAAY7vD,IAK7B,OAFAlF,EAAIkF,GAAOC,EAEJnF,CACT,GAAG,CAAC,EACN,EAEA,EAaQm1D,uBAAR,SAAiD3mC,EAAYtpB,GAC3D,OAAO,IAAIwsD,MAAMljC,EAAS,CACxB7Z,IAAG,SAAC5b,EAAQu8D,EAAUC,GACpB,MAAiB,aAAbD,EAAgCpwD,EAE7BysD,QAAQh9C,IAAI5b,EAAQu8D,EAAUC,EACvC,EACArhD,IAAG,SAACnb,EAAQu8D,EAAUn2D,EAAOo2D,GAC3B,GAAY,OAARrwD,GAA6B,aAAbowD,EAClB,MAAM,IAAIrxD,MAAM,oCAGlB,OAAO0tD,QAAQz9C,IAAInb,EAAQu8D,EAAUn2D,EAAOo2D,EAC9C,GAEJ,EAAC,sBAjSD,WACE,OAAO,IAAI7D,MAAMt5D,KAAK08D,OAAQ,CAC5B5gD,IAAG,WAED,OADAwe,QAAQC,KAAK,+CACN,CACT,GAEJ,KAAC,EAtB0B,GCjBvB6iC,EAAS,8DAGZ,OAHY,mBACbz4B,KAAA,WACE,OAAO,QAAI7Y,UAAU,sBACvB,EAAC,EAHY,CAASuvC,GAMxB+B,EAAUC,YAAa,EAEvB,UCbA,SAASzlD,EAAErU,GAAG,IAAI2U,EAAErD,EAAEI,EAAE,GAAG,GAAG,iBAAiB1R,GAAG,iBAAiBA,EAAE0R,GAAG1R,OAAO,GAAG,iBAAiBA,EAAE,GAAG7D,MAAMU,QAAQmD,GAAG,IAAI2U,EAAE,EAAEA,EAAE3U,EAAEkB,OAAOyT,IAAI3U,EAAE2U,KAAKrD,EAAE+C,EAAErU,EAAE2U,OAAOjD,IAAIA,GAAG,KAAKA,GAAGJ,QAAQ,IAAIqD,KAAK3U,EAAEA,EAAE2U,KAAKjD,IAAIA,GAAG,KAAKA,GAAGiD,GAAG,OAAOjD,CAAC,CCWvO,QDX+O,WAAgB,IAAI,IAAI1R,EAAE2U,EAAErD,EAAE,EAAEI,EAAE,GAAGJ,EAAEnB,UAAUjP,SAASlB,EAAEmQ,UAAUmB,QAAQqD,EAAEN,EAAErU,MAAM0R,IAAIA,GAAG,KAAKA,GAAGiD,GAAG,OAAOjD,CAAC,EE2BjW,SAASqoD,EAAQr7C,GACf,MAAuB,iBAATA,GAA8B,OAATA,GAAiB,QAASA,CAC/D,CAEA,SAASs7C,EAAYt7C,GACnB,OAAOq7C,EAAQr7C,IAASA,EAAKmK,MAAQgxC,CACvC,CAuBe,SAASI,EACtBC,EACAC,EACAx1D,QADiC,IAAjCw1D,IAAAA,EAAoC,WACnB,IAAjBx1D,IAAAA,EAAoB,CAAC,GAErB,IA1BoCy1D,EAEhCC,EADEC,EA0BAC,EAAMJ,EAEZ,OA7BoCC,EA0BtBF,aAAoB/9D,MAAQ+9D,EAAW,CAACA,GAzBhDI,EAAyC,GAG/CF,EAAM72D,OAAOJ,SAASiQ,SAAQ,SAACsL,EAAMhb,KAC9Bs2D,EAAYt7C,IAAU27C,IAAaL,EAAYK,IAAa32D,IAAM02D,EAAMl5D,OAAS,KACpFm5D,EAAW37C,EACX47C,EAAS3oD,KAAK+M,GAElB,IAEO47C,GAkBoCj2D,KAAI,SAACqa,GAAS,MAWpC,EAVbskC,EAAU,CAACtkC,EAAKg7C,UAAY,QAAQh7C,EAAKg7C,UAE/C,GAAIK,EAAQr7C,IAASA,EAAKmK,IAAIixC,WAK5B,OAJAp7C,EAAKyI,MAAQzI,EAAKyI,OAAS,CAAC,EAC5BzI,EAAKyI,MAAM5d,IAAMmV,EAAKyI,MAAM5d,KAAOmV,EAAKg7C,SACxCh7C,EAAKnV,IAAMmV,EAAKyI,MAAM5d,IAEfmV,EAGLq7C,EAAQr7C,KACVskC,EAAQrxC,MAAe,OAAV,EAAA+M,EAAKyI,YAAK,EAAV,EAAYqzC,gBAAiB97C,EAAK87C,eAE1B,MAAjB97C,EAAKmK,IAAIjnB,UAAT8c,EAAKmK,IAAIjnB,SAAW8c,EAAKyI,QAC3B67B,EAAQrxC,KAAK,WAIjB,IAAMpI,EAAOwwD,EAAQr7C,KAAa,MAAJA,GAAW,OAAP,EAAJA,EAAMyI,YAAF,EAAJ,EAAa5d,MAAQmV,EAAKg7C,SAExD,OACE,EAACa,EAAG,eAAChyC,UAAWkyC,EAAUzX,GAAUz5C,IAAKA,GAAS5E,GAC/C+Z,EAGP,GACF,CCvFA,IAOqBg8C,EAAc,uFA4BhC,OA5BgC,EACjCt5B,KAAA,WACE,OACE,YAAQ7Y,UAAU,uBAChB,SAAKA,UAAU,aACb,QAAIA,UAAU,wBAAwB0xC,EAAUx9D,KAAK29D,QAAQ16C,aAIrE,EAEA,EAKA06C,MAAA,WACE,IAAMA,EAAQ,IAAIlB,EACZyB,EAAal+D,KAAK0qB,MAAMwzC,WACxBC,EAASD,EAAWC,SAASl7C,UAQnC,OANIk7C,EAAO15D,QACTk5D,EAAM7kD,IAAI,SAAU,QAAIgT,UAAU,gCAAgC0xC,EAAUW,IAAe,IAG7FR,EAAM7kD,IAAI,QAAS,QAAIgT,UAAU,wBAAwBoyC,EAAW/0D,UAE7Dw0D,CACT,EAAC,EA5BgC,CAAStC,GCX7B,SAAS+C,EAA8B7gC,EAAQ8gC,GAC5D,GAAc,MAAV9gC,EAAgB,MAAO,CAAC,EAC5B,IAEIzwB,EAAK7F,EAFLtG,EAAS,CAAC,EACV29D,EAAa78C,OAAOvB,KAAKqd,GAE7B,IAAKt2B,EAAI,EAAGA,EAAIq3D,EAAW75D,OAAQwC,IACjC6F,EAAMwxD,EAAWr3D,GACbo3D,EAASn9C,QAAQpU,IAAQ,IAC7BnM,EAAOmM,GAAOywB,EAAOzwB,IAEvB,OAAOnM,CACT,CCHe,SAASisD,EAA8Bz1B,EAAW+lC,GAC/D,IAAMn2D,EAAQowB,EAAO+lC,GAIrB,cAFO/lC,EAAO+lC,GAEPn2D,CACT,KCuBKw3D,gBC1BgBlc,EAAI,8DAkCtB,OAlCsB,mBACvB1d,KAAA,SAAKyd,GACH,MAAiCA,EAAM13B,MAAK,IAAtClqB,QAAAA,OAAO,IAAG,GAAC,EAAC,EAAKkqB,EAAK,OAE5BA,EAAM0F,OAAN1F,EAAM0F,KAAS,IAIf,IAAMkF,EAAW8sB,EAAM9sB,UAAY,CAAElJ,IAAK,IAAKkJ,SAAU8sB,EAAM7xC,MAE/D,OAAIma,EAAM8zC,SACD,MAAO9zC,EAAQ4K,IAOpB5K,EAAM0F,OAASpb,EAAEwrC,MAAMjkC,QACnB,YAAa/b,IAAUA,EAAQmD,SAAU,IAO7CipD,EAAQliC,EAAO,WACX,UAAWlqB,IAAUA,EAAQ63B,MAAQ,CAAC,GACtC,QAAS73B,EAAQ63B,QAAQ73B,EAAQ63B,MAAMvrB,IAAMmN,KAAK+pB,QAG1DtZ,EAAMlqB,QAAUA,EAET,EAACwU,EAAEwrC,MAAM6B,KAAS33B,EAAQ4K,GACnC,EAAC,EAlCsB,CAAS+lC,GCEnB,SAASoD,EAAO3R,EAAmBpiC,GAA2C,WAAtB,IAArBA,IAAAA,EAAwB,CAAC,GACzEA,EAAMoB,UAAYkyC,EAAU,SAAUtzC,EAAMoB,WAC/B,OAAb,EAAApB,GAAMg0C,UAAN,EAAMA,QAAY,QAClB,IAAItoC,EAAkB,GAKhBuoC,EAA6C,cAAhBj0C,EAAMvhB,OAAyBuhB,EAAMvhB,MAMxE,GALKw1D,UAAiBj0C,EAAMvhB,MAKxB2jD,EAAM,CACR,IAAMtR,EAAWsR,EAAK6J,eAAiB,IACjCiI,EAAY9R,EAAK8R,YAIvB,GAFID,IAAUj0C,EAAMvhB,MAAQuhB,EAAMvhB,OAASqyC,GAEvCojB,EACF,OAAO,yBAASl0C,EAAK,CAAEtI,IAAKw8C,EAAWC,IAAI,MAG7CzoC,EAAUolB,EAAS8J,OAAO,GAAGpmC,cAC7BwL,EAAM3X,MAAQ,CAAE,cAAe+5C,EAAKz1C,QACtC,CAEA,OAAO,SAAUqT,EAAQ0L,EAC3B,CFvCO,SAAS5B,EAASqH,EAAgBp3B,EAAgB2qB,GACvD,YADoE,IAAbA,IAAAA,EAAgB,IAC/DA,EAAQ,EAAI,MAAQ,IAAMyM,EAAO1hB,UAAUiV,EAAOA,EAAQ3qB,IAAWo3B,EAAOp3B,OAAS2qB,EAAQ3qB,EAAS,MAAQ,GACxH,CAUO,SAASq6D,EAAKjjC,EAAgBkjC,GACnC,YADqD,IAAlBA,IAAAA,EAAqBR,EAAaS,cAC7DD,GACN,KAAKR,EAAaU,KAChB,OACEpjC,EACGr1B,cAEA7C,QAAQ,6zTAAyB,KACjCA,QAAQ,MAAO,KACfA,QAAQ,SAAU,IAGzB,KAAK46D,EAAaS,aAClB,QACE,OAAOnjC,EACJr1B,cACA7C,QAAQ,cAAe,KACvBA,QAAQ,MAAO,KACfA,QAAQ,SAAU,IAE3B,CAWO,SAASu7D,EAAgBrjC,GAC9B,IAAMxyB,EAAOwyB,EAAOl4B,QAAQ,gBAAiB,aAAaA,QAAQ,iBAAkB,KAE9EpD,GAAU,IAAI8zC,WAAYC,gBAAgBjrC,EAAM,aAAajE,gBASnE,OAPA85D,EAAgBC,gBAAgBxoD,SAAQ,SAACtS,GAC5B9D,EAAQ2pB,iBAAiB7lB,GACjCsS,SAAQ,SAACpT,GACVA,EAAEsB,QACJ,GACF,IAEOtE,EAAQ6+D,UAAUz7D,QAAQ,OAAQ,KAAKm7C,MAChD,CAYO,SAASugB,EAAQxjC,GACtB,OAAOA,EAAOyjC,OAAO,EAAG,GAAGpgD,cAAgB2c,EAAOyjC,OAAO,EAC3D,CAKO,SAASC,EAAqBC,GACnC,OAAOA,EAAI77D,QAAQ,UAAU,SAACg4B,GAAM,UAASA,EAAOn1B,aAAa,GACnE,CAUO,SAASi5D,EAAqBh7D,GACnC,GAAIA,EAAS,EAAG,MAAM,IAAIoH,MAAM,4DAChC,GAAe,IAAXpH,EAAc,MAAO,GAEzB,IAAM8c,EAAM,IAAIm+C,WAAWj7D,EAAS,GAGpC,OAFA1C,OAAO49D,OAAOC,gBAAgBr+C,GAEvB7hB,MAAMigB,KAAK4B,GAAK,SAACs+C,GACtB,OAAOA,EAAItkD,SAAS,IAAIukD,SAAS,EAAG,IACtC,IAAG1nD,KAAK,GACV,CGxFe,SAAS2nD,GAAUlkC,EAAgBmkC,EAA0Bv7D,GAC1E,IAAKu7D,IAAWv7D,EAAQ,OAAOo3B,EAI/B,IAAMmoB,EAASgc,aAAkBh5D,OAASg5D,EAAS,IAAIh5D,OAAa,MAANg5D,EAAAA,EAAU,GAAI,MAExEC,EAAcpkC,EACdzM,EAAQ,EAeZ,OAZI3qB,IACEu7D,IAAQ5wC,EAAQnsB,KAAKC,IAAI,EAAG24B,EAAO4lB,OAAOuC,GAAUv/C,EAAS,IAEjEw7D,EAAczrC,EAASyrC,EAAax7D,EAAQ2qB,IAK9C6wC,EAAc5/D,EAAE,UAAUkQ,KAAK0vD,GAAa52D,OAExC22D,IAAQC,EAAcA,EAAYt8D,QAAQqgD,EAAQ,oBAE/ChvC,EAAE6tC,MAAMod,EACjB,CC3Be,SAASC,GAAKC,EAAmBz1C,GAG9C,YAHuE,IAAzBA,IAAAA,EAA4B,CAAC,GAC3EA,EAAMoB,UAAYkyC,EAAU,OAAQmC,EAAWz1C,EAAMoB,WAE9C,qBAAG,cAAY,QAAWpB,GACnC,EJ6BA,SALK6zC,GAAAA,EAAY,wBAAZA,EAAY,YAKjB,CALKA,IAAAA,EAAY,KA6BjBW,EAAgBC,gBAAkB,CAAC,aAAc,oCK5DlC,SAASiB,GAAUzuB,GAChC,IAAI/8B,EAAI6kD,KAAM9nB,GACR3N,EAAMy1B,OAyBZ,OApBI7kD,EAAE+G,QAAQqoB,KACZpvB,EAAIovB,GAIOpvB,EAAEsJ,KAAKu7C,SAKT,OACL7kD,EAAE+D,SAAW8gD,OAAQ9gD,OACjB/D,EAAE8H,OAAO,SAET9H,EAAE8H,OAAO,MAGX9H,EAAEiL,SAIZ,CC7Be,SAASwgD,GAAYC,GAClC,OAAIA,aAAgB5gE,MACX4gE,EAAK14D,KAAI,SAACrH,GAAO,OAAK8/D,GAAY9/D,EAAQ,IAAE6X,KAAK,IAC/B,iBAATkoD,GAA8B,OAATA,EAC9BA,EAAKhrC,SAAW+qC,GAAYC,EAAKhrC,UAAYnd,OAAOmoD,EAAK/vD,MAEzD4H,OAAOmoD,EAElB,CCHe,SAASC,GAAiBC,GAEvC,OAAIA,GAAU,IACLv9D,KAAKwV,MAAM+nD,EAAS,KAAWH,GAAY7G,EAAIiH,WAAWC,MAAM,qCAC9DF,GAAU,KACXA,EAAS,KAAMG,QAAQ,GAAKN,GAAY7G,EAAIiH,WAAWC,MAAM,qCAE9DF,EAAOjlD,UAElB,CCSA,IAMqBpX,GAAQ,mGACF,OADE,0CACjB62D,SAAU,EAAK,EADE,OACF,EAElBO,UAAP,SAAiB7wC,GACfA,EAAMoB,YAANpB,EAAMoB,UAAc,IACpBpB,EAAMk2C,kBAANl2C,EAAMk2C,gBAAoB,IAC1Bl2C,EAAMm2C,gBAANn2C,EAAMm2C,cAAkB,IACxBn2C,EAAMo2C,QAANp2C,EAAMo2C,MAAU,IACD,MAAfp2C,EAAMq2C,YAANr2C,EAAMq2C,UAAc,qBACpBr2C,EAAMs2C,wBAANt2C,EAAMs2C,sBAA0BX,GAAY7G,EAAIiH,WAAWC,MAAM,uDACnE,EAAC,kBA0GA,OA1GA,EAED/7B,KAAA,SAAKyd,GACH,IAAMub,EAAQvb,EAAM9sB,SAAWkoC,EAAUpb,EAAM9sB,UAA4C,GACrF2rC,GAAcjhE,KAAK0qB,MAAMw2C,UAAWlhE,KAAKg7D,QAE/C,OACE,SAAKlvC,UAAW,iCAAmC9rB,KAAK0qB,MAAMoB,UAAY,aAAe6xC,EAAMl5D,QAAUzE,KAAKg7D,QAAU,QAAU,KAC/Hh7D,KAAKmhE,UAAU/e,EAAM9sB,UACrB2rC,GAAejhE,KAAKohE,QAAQzD,GAGnC,EAAC,EAEDxb,SAAA,SAASC,GAA4C,WACnD,YAAMD,SAAQ,UAACC,GAKfpiD,KAAKK,IAAIU,GAAG,qBAAqB,WAAM,0BACrC,EAA6B,EAAK2pB,MAA1Bw2C,EAAQ,EAARA,SAAUG,EAAM,EAANA,OAElB,EAAKrG,SAAU,EAIXkG,GACFlsD,EAAEwqC,OAAOD,OAGW,mBAAX8hB,GACTA,IAKGH,GACHlsD,EAAEwqC,SAGJ,IAAM8hB,EAAQ,EAAKjhE,EAAE,kBACfkhE,EAAUD,EAAMv8D,SAAS,wBAEzBvC,EAAyB,OAAtB,EAAiB,OAAjB,EAAG8+D,EAAMx/D,eAAQ,EAAd,EAAgBU,KAAG,EAAI,EAC7BN,EAAuB,OAAjB,EAAGo/D,EAAMp/D,UAAQ,EAAI,EAC3Bs/D,EAAsC,OAAxB,EAAGnhE,EAAE0B,QAAQM,aAAW,EAAI,EAC1Co/D,EAAiC,OAArB,EAAGphE,EAAE0B,QAAQG,UAAQ,EAAI,EAE3Co/D,EAAM1+D,YAAY,2CAElB0+D,EAAM97D,YAAY,qBAAsBhD,EAAMN,EAASs/D,EAAiBC,KAErD,OAAd,EAAAH,EAAMx/D,eAAQ,EAAd,EAAgBU,MAAO,GAAK,GAC/B8+D,EAAM1+D,YAAY,sBAGpB,IAAMoL,EAA2B,OAAvB,EAAiB,OAAjB,EAAGszD,EAAMx/D,eAAQ,EAAd,EAAgBkM,MAAI,EAAI,EAC/BY,EAAqB,OAAhB,EAAG0yD,EAAM1yD,SAAO,EAAI,EACzB8yD,EAAyC,OAAzB,EAAGrhE,EAAE0B,QAAQ2rC,cAAY,EAAI,EAC7Ci0B,EAA+B,OAApB,EAAGthE,EAAE0B,QAAQ6M,SAAO,EAAI,EAEzC0yD,EAAM97D,YAAY,uBAAwB+7D,GAAWvzD,EAAOY,EAAQ8yD,EAAmBC,EACzF,IAEA3hE,KAAKK,IAAIU,GAAG,sBAAsB,WAChC,EAAKi6D,SAAU,EAEX,EAAKtwC,MAAMk3C,QACb,EAAKl3C,MAAMk3C,SAGb5sD,EAAEwqC,QACJ,GACF,EAEA,EAGA2hB,UAAA,SAAU7rC,GACR,OACE,YACExJ,UAAW,mBAAqB9rB,KAAK0qB,MAAMk2C,gBAC3C,gBAAc,OACd,aAAY5gE,KAAK0qB,MAAMs2C,sBACvB,cAAY,WACZ1e,QAAStiD,KAAK0qB,MAAM43B,SAEnBtiD,KAAK6hE,iBAAiBvsC,GAG7B,EAEA,EAGAusC,iBAAA,SAAiBvsC,GACf,MAAO,CACLt1B,KAAK0qB,MAAMw1C,KAAOA,GAAKlgE,KAAK0qB,MAAMw1C,KAAM,CAAEp0C,UAAW,gBAAmB,GACxE,UAAMA,UAAU,gBAAgB9rB,KAAK0qB,MAAMo2C,OAC3C9gE,KAAK0qB,MAAMq2C,UAAYb,GAAKlgE,KAAK0qB,MAAMq2C,UAAW,CAAEj1C,UAAW,iBAAoB,GAEvF,EAAC,EAEDs1C,QAAA,SAAQzD,GACN,OAAO,QAAI7xC,UAAW,+BAAiC9rB,KAAK0qB,MAAMm2C,eAAgBlD,EACpF,EAAC,EApH0B,CAA8DtC,GCzB5E,SAAS+E,GAAUzuB,GAChC,IAAM/8B,EAAI6kD,KAAM9nB,GAEVmwB,EAAWltD,EAAE8H,SACbqlD,EAAOntD,EAAE8H,OAAO,QAChBslD,EAAMC,GAActwB,GAE1B,OACE,UAAMuwB,SAAO,EAACJ,SAAUA,EAAU34D,MAAO44D,EAAM,qBAC5CC,EAGP,CChBA,IAQqBG,GAAY,8DAiB9B,OAjB8B,mBAC/Bx9B,KAAA,WACE,IAAMu5B,EAAal+D,KAAK0qB,MAAMwzC,WACxBkE,EAAWpiE,KAAK0qB,MAAM03C,UAAYlE,EAAWmE,aAE7CvV,EAAOoR,EAAWkE,EAAW,iBAAmB,UAChDzwB,EAAOusB,EAAWkE,EAAW,eAAiB,eAEpD,OACE,gBACKA,GAAYlC,GAAK,gBAAiB,IACpC1G,GAAAA,WAAAA,MAAqB,+BAAiC4I,EAAW,UAAY,WAAa,QAAS,CAClGtV,KAAAA,EACAkV,IAAK5B,GAAUzuB,KAIvB,EAAC,EAjB8B,CAAS0pB,GCUrBiH,GAAe,WAOlC,aAAyC,KAN/BC,eAAS,OACT5gE,UAAI,6BAKC4gE,EAAS,yBAATA,EAAS,gBACtBviE,KAAKuiE,UAAYA,EACjBviE,KAAK2B,KAAO,CAAC,EAIb3B,KAAKwiE,cACP,CAEA,kBAiCC,OAjCD,EAIAA,aAAA,WAAwB,WAClBA,GAAe,EAWnB,OATAxiE,KAAKuiE,UAAU5rD,SAAQ,SAACnG,EAAUvJ,GAChC,IAAMwnB,EAASje,IAEXie,IAAW,EAAK9sB,KAAKsF,KACvB,EAAKtF,KAAKsF,GAAKwnB,EACf+zC,GAAe,EAEnB,IAEOA,CACT,EAEA,EAGAh0C,MAAA,WAAyC,2BAAhC+zC,EAAS,yBAATA,EAAS,gBAChBviE,KAAKuiE,UAAYviE,KAAKuiE,UAAUpiE,OAAOoiE,GAEvCviE,KAAKwiE,cACP,EAEA,EAGAC,WAAA,WACEziE,KAAK2B,KAAO,CAAC,CACf,EAAC,EAjDiC,0DCiCf+gE,GAAgB,8DAuBlC,OAvBkC,mBACnC/9B,KAAA,WACE,MAAwF3kC,KAAK0qB,MAAK,IAA1Fzc,QAAAA,OAAO,IAAG,UAAO,MAAE4H,KAAAA,OAAI,IAAG,WAAQ,EAAE8sD,EAAkB,EAAlBA,mBAAoB72C,EAAS,EAATA,UAAcpB,EAAK,QAE7Ek4C,EAAoB5E,EAAU,mBAAoBlyC,GAClD+2C,EAA6B7E,EACjC,6BACY,UAAZ/vD,GAAuB,+BAA+BA,EACtD4H,GAAQ,+BAA+BA,EACvC8sD,GAGF,OACE,uBACE,aAAYnJ,EAAIiH,WAAWC,MAAM,+CACjCoC,KAAK,UACDp4C,EAAMq4C,eAAc,CACxB,YAAWltD,EACXiW,UAAW+2C,IAEX,uBAAK,cAAY,OAAO/2C,UAAW82C,GAAuBl4C,IAGhE,EAAC,EAvBkC,CAAS2wC,GC5CzB2H,GAAqB,uFAoBvC,OApBuC,EACxCxvD,QAAA,WACE,OAAOxT,KAAK0qB,MAAMmP,aAAU/mB,CAC9B,EAAC,EAEDqvC,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAKijE,aAAejjE,KAAKwT,QAAQk8B,KAAK1vC,MACtCK,EAAE0B,QAAQhB,GAAG,eAAgBf,KAAKijE,aACpC,EAAC,EAEDjiB,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEf/hD,EAAE0B,QAAQmQ,IAAI,eAAgBlS,KAAKijE,aACrC,EAAC,EAEDt+B,KAAA,SAAKyd,GACH,OAAO,WAAGA,EAAM9sB,SAClB,EAAC,EApBuC,CAAS+lC,GCCpC,SAAS6H,KAAiE,MAClF1J,EAAI2J,MAAMC,UAAU,WAEzB,EAAA9oC,SAAQC,KAAI,kBACd,CAeO,SAAS8oC,GAAuB7oC,EAAiB8oC,EAAkBC,EAA6BC,QAAV,IAAnBD,IAAAA,EAAsB,YAAmB,IAAZC,IAAAA,EAAe,eAEpHN,GAAiB,WAAWK,EAAW,iBAAiB/oC,EAAO,+BAA+BgpC,EAAI,SAASF,EAC7G,sFCiCqBG,GAAM,uFA4DxB,OA5DwB,EACzB9+B,KAAA,SAAKyd,GACH,MAAsHpiD,KAAK0qB,MAArH1lB,EAAI,EAAJA,KAAMmE,EAAK,EAALA,MAAqBu6D,EAAS,EAAvB,cAA+BC,EAAQ,EAAdzD,KAAgBl3C,EAAQ,EAARA,SAAU01C,EAAO,EAAPA,QAAS5yC,EAAS,EAATA,UAAkB83C,EAAM,QAAKl5C,EAAK,QAGjH1lB,IAAAA,EAAS,UAGT0+D,IAAAA,EAAcv6D,GAGW,iBAAdu6D,IACTA,EAAYrD,GAAYqD,KAGtB16C,GAAY01C,WACPh0C,EAAM43B,QASf,IAAMuhB,EAAc,GAClB76C,SAAAA,EACA8C,UARFA,EAAYkyC,EAAU4F,EAAQ93C,EAAW,CACvCg4C,QAASH,EACT36C,SAAUA,GAAY01C,EACtBA,QAASA,IAMT15D,KAAAA,EACA,aAAc0+D,GACXh5C,GAGL,OAAO,WAAYm5C,EAAc7jE,KAAK6hE,iBAAiBzf,EAAM9sB,UAC/D,EAAC,EAED6sB,SAAA,SAASC,GAA4C,MACnD,YAAMD,SAAQ,UAACC,GAEf,IAAsBshB,EAAc1jE,KAAK0qB,MAAjC,cAEJ1qB,KAAK2kC,OAAS8+B,EAAO9jE,UAAUglC,MAAS++B,GAAcrD,GAAYje,EAAM9sB,WAA0B,OAAb,EAACt1B,KAAKO,UAAqB,MAA1B,EAAcoiB,cAAd,EAAcA,aAAe,eACrHugD,GACE,gRACAljE,KAAKO,QAGX,EAEA,EAGUshE,iBAAV,SAA2BvsC,GACzB,IAAMquC,EAAW3jE,KAAK0qB,MAAMw1C,KAE5B,MAAO,CACLyD,GAAYzD,GAAKyD,EAAU,CAAE73C,UAAW,gBACxCwJ,GAAY,UAAMxJ,UAAU,gBAAgBwJ,GAC5Ct1B,KAAK0qB,MAAMg0C,SAAW,EAACgE,GAAgB,CAAC7sD,KAAK,QAAQ5H,QAAQ,WAEjE,EAAC,EA5DwB,CAA0DotD,yBCzDjF0I,GAAgC,KAErB,SAASC,GAAWC,EAA+B,GAAwD,IAAtD1zD,EAAI,EAAJA,KAAM2zD,EAAc,EAAdA,eAAgBC,EAAY,EAAZA,aAClFC,EAAyBH,EAASC,eAClCt8B,EAASq8B,EAASl9D,MAAMwO,MAAM,EAAG6uD,GACjCv8B,EAAQo8B,EAASl9D,MAAMwO,MAAM0uD,EAASE,cAE5C,GAAsB,OAAlBJ,KAA4C,IAAlBA,GAAwB,CACpDE,EAASlZ,gBAAkB,OAC3B,IACEgZ,GAAgBnjE,SAASyjE,YAAY,cAAc,EAAO9zD,EAG5D,CAFE,MAAO8T,GACP0/C,IAAgB,CAClB,CACAE,EAASlZ,gBAAkB,OAC7B,CAEIgZ,KAAkBE,EAASl9D,MAAMwO,MAAM,EAAG0uD,EAASC,gBAAgBI,SAAS/zD,KAC9EwzD,IAAgB,GAGbA,KACHE,EAASl9D,MAAQ6gC,EAASr3B,EAAOs3B,EACjCo8B,EAASM,cAAc,IAAIC,YAAY,QAAS,CAAErgC,SAAS,EAAMC,YAAY,MAGzD,MAAlB8/B,GAA0C,MAAhBC,EAC5BF,EAASQ,kBAAkBP,EAAgBC,GAE3CF,EAASQ,kBAAkBL,EAAwBH,EAASE,aAEhE,CCxCkC,IAIbO,GAAiB,WAGpC,WAAYjd,EAAkBxK,GAA4B,KAF1Dp1C,QAAE,EAGA7H,KAAK6H,GAAKjH,SAAS0E,cAAc,YAEjCtF,KAAK2kE,MAAMld,EAAKxK,EAClB,CAAC,kBAiHA,OAjHA,EAES0nB,MAAV,SAAgBld,EAAkBxK,GAA4B,WAC5Dj9C,KAAK6H,GAAGikB,UAAYmxB,EAAOnK,WAAW16B,KAAK,KAC3CpY,KAAK6H,GAAGmhB,SAAWi0B,EAAOj0B,SAC1BhpB,KAAK6H,GAAG+8D,YAAc3nB,EAAO2nB,YAC7B5kE,KAAK6H,GAAGd,MAAQk2C,EAAOl2C,MAEvB,IAAM89D,EAAqB,SAACthE,GAC1B05C,EAAO6nB,eAAenuD,SAAQ,SAACouD,GAC7BA,GACF,IAEAxhE,EAAEi8C,QAAS,CACb,EAEAx/C,KAAK6H,GAAGoxD,QAAU,SAAC11D,GACjB05C,EAAOgc,QAAQ,EAAKpxD,GAAGd,OACvB89D,EAAmBthE,EACrB,EAEAvD,KAAK6H,GAAGy6C,QAAUuiB,EAClB7kE,KAAK6H,GAAGm9D,QAAUH,EAElB7kE,KAAK6H,GAAG+jB,iBAAiB,WAAW,SAACroB,GACnC,EAAK0hE,YAAYhoB,GACdh6B,UACAtM,SAAQ,SAACnD,GAAO,OAAKA,EAAQjQ,EAAE,GACpC,IAEAkkD,EAAIhgB,OAAOznC,KAAK6H,GAClB,EAAC,EAESo9D,YAAV,SAAsBhoB,GACpB,IAAM0gB,EAAQ,IAAIlB,EAQlB,OANAkB,EAAM7kD,IAAI,UAAU,SAAUvV,IACvBA,EAAEyd,SAAWzd,EAAE0d,UAAsB,UAAV1d,EAAEuJ,KAChCmwC,EAAOioB,UAEX,IAEOvH,CACT,EAAC,EAEDwH,aAAA,SAAa7iE,GACXtC,KAAKykE,kBAAkBniE,EAAUA,EACnC,EAAC,EAED8iE,kBAAA,WACE,MAAO,CAACplE,KAAK6H,GAAGq8D,eAAgBlkE,KAAK6H,GAAGs8D,aAC1C,EAAC,EAEDkB,cAAA,SAAcpwD,GAGZ,OAFcjV,KAAK6H,GAAGd,MAETwO,MAAMtS,KAAKC,IAAI,EAAGlD,KAAK6H,GAAGq8D,eAAiBjvD,GAAIjV,KAAK6H,GAAGq8D,eACtE,EAAC,EAEDoB,eAAA,SAAe/0D,GACbvQ,KAAKulE,SAASvlE,KAAK6H,GAAGq8D,eAAgB3zD,EACxC,EAAC,EAEDg1D,SAAA,SAASp3D,EAAaoC,GACpBvQ,KAAKwlE,cAAcr3D,EAAKA,EAAKoC,EAC/B,EAAC,EAEDi1D,cAAA,SAActB,EAAwBC,EAAsB5zD,GAC1DvQ,KAAKykE,kBAAkBP,EAAgBC,GAEvC,IAAMsB,EAAYvB,EAAiB3zD,EAAK9L,OACxCu/D,GAAWhkE,KAAK6H,GAAI,CAAE0I,KAAAA,EAAM2zD,eAAgBuB,EAAWtB,aAAcsB,GACvE,EAAC,EAEDC,oBAAA,SAAoBt2C,EAAe7e,GACjCvQ,KAAKwlE,cAAcp2C,EAAOpvB,KAAK6H,GAAGq8D,eAAgB3zD,EACpD,EAAC,EAESk0D,kBAAV,SAA4Br1C,EAAe5c,GACzCxS,KAAK6H,GAAG48D,kBAAkBr1C,EAAO5c,GACjCxS,KAAK2L,OACP,EAAC,EAED4lD,oBAAA,SAAoBjvD,GAClB,IAAMqjE,EAAYpU,KAAoBvxD,KAAK6H,GAAIvF,GAE/C,MAAO,CACLE,IAAKmjE,EAAUnjE,IAAMxC,KAAK6H,GAAGxF,UAC7B2L,KAAM23D,EAAU33D,KAEpB,EAIA,EAGAgb,SAAA,SAASA,GACPhpB,KAAK6H,GAAGmhB,SAAWA,CACrB,EAEA,EAGArd,MAAA,WACE3L,KAAK6H,GAAG8D,OACV,EAEA,EAGAsG,QAAA,WACEjS,KAAK6H,GAAGhD,QACV,EAAC,EAxHmC,6FC4FjB4D,GAAO,mGAQ4B,OAR5B,0CAClBqlB,WAA6C,KAAI,EACjD83C,aAAmC,KAAI,EAEvCC,QAAkB,GAAE,EACpBC,mBAAa,IAEbC,uBAAiC,EAAK,EACtCC,+BAAyC,EAAK,EAR5B,OAQ4B,kBAuKrD,OAvKqD,EAEtDrhC,KAAA,SAAKyd,GAKH,IAAM9sB,EAAW8sB,EAAM9sB,SAGvB,EAAsIt1B,KAAK0qB,MAA7Hu7C,GAAF,EAAJ11D,KAAoB,EAAd01D,gBAAoD,GAAtC,EAAEC,YAAkB,EAAE5jE,SAAgB,EAAE6jE,oBAAAA,OAAkB,IAAG,GAAK,IAAE98D,KAAY,EAAED,MAAmB,QAE5HpJ,KAAK0qB,MAAcvhB,QAAUg9D,GAChC7rC,QAAQC,KACN,yIAIJ,IAAM6rC,EAAWpmE,KAAKqmE,cAiBtB,GAdID,IAAapmE,KAAK6lE,UACpB7lE,KAAK6lE,QAAUO,EACfpmE,KAAK+lE,uBAAwB,GAG3BE,IAAmBjmE,KAAK8lE,gBAC1B9lE,KAAK8lE,cAAgB9lE,KAAK0qB,MAAMu7C,eAChCjmE,KAAKgmE,+BAAgC,QAOf,IAAb1wC,EACT,MAAM,IAAIzpB,MAAM,iIAKlB,GAAwB,IAApBypB,EAAS7wB,OACX,MAAM,IAAIoH,MAAM,uJAKlB,IAAMiiB,EAAawH,EAAS,GAE5B,GAA0B,iBAAfxH,GAA2BpuB,MAAMU,QAAQ0tB,IAA8B,OAAfA,EACjE,MAAM,IAAIjiB,MAAM,iIAKlB,GAA8B,iBAAnBiiB,EAAW1B,KAAoB,CAAC,IAAK,IAAK,KAAK8tC,SAASpsC,EAAW1B,KAC5E,MAAM,IAAIvgB,MAAM,0DAC4CiiB,EAAW1B,IAAG,wIAM5E,OAFApsB,KAAK8tB,WAAaA,EAEXwH,CACT,EAAC,EAED6sB,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAKsmE,sBACLtmE,KAAKumE,iBACP,EAAC,EAED/jB,SAAA,SAASJ,GACP,YAAMI,SAAQ,UAACJ,GAEfpiD,KAAKsmE,sBACLtmE,KAAKumE,iBACP,EAAC,EAEOA,gBAAR,WACMvmE,KAAK+lE,uBAA+C,OAAtB/lE,KAAK4lE,eACrCvlE,EAAEL,KAAK4lE,cAAcxzD,QACnB,UAEA,kDAEFpS,KAAKwmE,gBACLxmE,KAAK+lE,uBAAwB,GAG3B/lE,KAAKgmE,gCACPhmE,KAAKgmE,+BAAgC,EACrChmE,KAAKymE,mBAET,EAAC,EAEOA,iBAAR,WAC4B,OAAtBzmE,KAAK4lE,gBAEyB,IAA9B5lE,KAAK0qB,MAAMu7C,eACb5lE,EAAEL,KAAK4lE,cAAcxzD,QACnB,OAEA,mDAEqC,IAA9BpS,KAAK0qB,MAAMu7C,gBACpB5lE,EAAEL,KAAK4lE,cAAcxzD,QACnB,OAEA,kDAGN,EAAC,EAEOo0D,cAAR,WACE,GAA0B,OAAtBxmE,KAAK4lE,aAAT,CAEA,MAQI5lE,KAAK0qB,MAAK,IAPZw7C,YAAAA,OAAW,IAAG,GAAI,MAClB5jE,SAAAA,OAAQ,IAAG,QAAK,EAChB8G,EAAK,EAALA,MAAK,IAELC,KAAAA,OAAI,IAAG,GAAK,EACZ48D,EAAc,EAAdA,eAKIxiE,GAJA,EAAJ8M,KAIwC,kBAAnB01D,EAA+B,SAAWjI,EAAU,QAAS,CAACkI,GAAe,WAE9FE,EAAWpmE,KAAKqmE,cACtBrmE,KAAK4lE,aAAahjD,aAAa,QAASwjD,GACxCpmE,KAAK4lE,aAAahjD,aAAa,aAAcwjD,GAG7C/lE,EAAEL,KAAK4lE,cAAcxzD,QACnB,CACE/I,KAAAA,EACAD,MAAAA,EACAH,UAAW3G,EACXmB,QAAAA,GAGF,iDA5BoC,CA8BxC,EAAC,EAEO4iE,YAAR,WACE,IAAQ91D,EAASvQ,KAAK0qB,MAAdna,KAER,OAAO7Q,MAAMU,QAAQmQ,GAAQ8vD,GAAY9vD,GAAQA,CACnD,EAEA,EAMQ+1D,oBAAR,WACE,IAAMI,EAAW1mE,KAAK8tB,WAA0C25B,IAE5Dif,IAAYA,EAAQC,WAAW3mE,KAAK4lE,gBACtC5lE,KAAK4lE,aAAec,EACpB1mE,KAAK+lE,uBAAwB,EAEjC,EAAC,EA/KyB,CAAS1K,GC3EhBuL,GAAU,uFAsH5B,OAtH4B,EAC7BrkB,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAObpiD,KAAK+G,MAAQ/G,KAAK0qB,MAAM3jB,OAAS,GAKjC/G,KAAKgpB,WAAahpB,KAAK0qB,MAAM1B,QAC/B,EAAC,EAED2b,KAAA,WACE,OACE,SAAK7Y,UAAU,cACb,SAAKA,UAAU,+BAEf,QAAIA,UAAU,uCACX0xC,EAAUx9D,KAAK6mE,eAAe5jD,WAC/B,QAAI6I,UAAU,sBAAsB9rB,KAAK8mE,eAAe7jD,YAIhE,EAAC,EAEDk/B,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAK0qB,MAAMq8C,SAASC,OAAShnE,KAAKinE,YAAYjnE,KAAKK,EAAE,+BAA+B,GACtF,EAAC,EAEDmiD,SAAA,SAASJ,GACP,YAAMI,SAAQ,UAACJ,GAEf,IAAM8kB,IAAgBlnE,KAAK0qB,MAAM1B,SAE7BhpB,KAAKgpB,WAAak+C,IACpBlnE,KAAKgpB,SAAWk+C,EAChBlnE,KAAK0qB,MAAMq8C,SAASC,OAAOh+C,SAASk+C,GAExC,EAAC,EAEDC,kBAAA,WAAoB,WAClB,MAAO,CACLr0B,WAAY,CAAC,cAAe,oBAAqB,qBACjD9pB,SAAUhpB,KAAKgpB,SACf47C,YAAa5kE,KAAK0qB,MAAMk6C,aAAe,GACvC79D,MAAO/G,KAAK+G,MACZkyD,QAASj5D,KAAKi5D,QAAQvpB,KAAK1vC,MAC3B8kE,eAAgB,GAChBI,SAAU,WACR,EAAKA,WACLlwD,EAAEwqC,QACJ,EAEJ,EAAC,EAEDynB,YAAA,SAAYxf,GACV,OAAO,IAAIid,GAAkBjd,EAAKznD,KAAKmnE,oBACzC,EAEA,EAKAN,aAAA,WACE,IAAMlJ,EAAQ,IAAIlB,EAkBlB,OAhBAkB,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,qBAAqBp0C,UAAU,yBAAyBiyC,cAAc,qBAAqBzb,QAAStiD,KAAKklE,SAASx1B,KAAK1vC,OACjIA,KAAK0qB,MAAM08C,cAIZpnE,KAAK0qB,MAAM28C,SACb1J,EAAM7kD,IACJ,UACA,EAACrQ,GAAO,CAAC8H,KAAMipD,EAAIiH,WAAWC,MAAM,wCAClC,EAAC+C,GAAM,CAACvD,KAAK,aAAap0C,UAAU,sBAAsBw2B,QAAStiD,KAAK0qB,MAAM28C,YAK7E1J,CACT,EAEA,EAKAmJ,aAAA,WACE,OAAO,IAAIrK,CACb,EAEA,EAKAxD,QAAA,SAAQlyD,GACN/G,KAAK+G,MAAQA,EAEb/G,KAAK0qB,MAAMquC,SAAS/4D,KAAK+G,MAC3B,EAEA,EAGAm+D,SAAA,WACEllE,KAAK0qB,MAAMw6C,SAASllE,KAAK+G,MAC3B,EAAC,EAtH4B,CAASs0D,GCGnBiM,GAAY,uFAkF9B,OAlF8B,EAC/B/kB,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAM,UAACH,GAEbpiD,KAAK+mE,SAAW/mE,KAAK0qB,MAAMq8C,SAO3B/mE,KAAK0+D,SAAU,EAKX1+D,KAAK0qB,MAAM68C,aACbvnE,KAAK+mE,SAASS,oBAAmB,kBAAM,EAAKC,YAAY,GAAEznE,KAAK0qB,MAAM68C,aAGvEvnE,KAAK+mE,SAASW,OAAOtxC,QAAQp2B,KAAK0qB,MAAMi9C,iBAAmB,GAC7D,EAAC,EAEDhjC,KAAA,WAAO,MACL,OACE,EAACq+B,GAAqB,CAACnpC,KAAM75B,KAAKynE,WAAW/3B,KAAK1vC,OAChD,SAAK8rB,UAAWkyC,EAAU,eAAgBh+D,KAAK0qB,MAAMoB,YAClD2yC,EAAOz+D,KAAK0qB,MAAMoiC,KAAM,CAAEhhC,UAAW,wBACtC,SAAKA,UAAU,wBACb,QAAIA,UAAU,uBAAuB0xC,EAAUx9D,KAAK4nE,cAAc3kD,YAClE,SAAK6I,UAAU,uBACb,EAAC86C,GAAU,CACTQ,YAAapnE,KAAK0qB,MAAM08C,YACxBxC,YAAa5kE,KAAK0qB,MAAMk6C,YACxB57C,SAAUhpB,KAAK0+D,SAAW1+D,KAAK0qB,MAAM1B,SACrC+9C,SAAU/mE,KAAK+mE,SACfM,QAA2B,OAApB,EAAErnE,KAAK6nE,oBAAa,EAAlB,EAAoBn4B,KAAK1vC,MAClC+4D,SAAU/4D,KAAK+mE,SAASW,OAAOtxC,QAC/B8uC,SAAUllE,KAAKklE,SAASx1B,KAAK1vC,MAC7B+G,MAAO/G,KAAK+mE,SAASW,OAAOtxC,cAIlC,EAACssC,GAAgB,CAACz0D,QAAQ,QAAQ00D,mBAAoB3E,EAAU,uBAAwBh+D,KAAK0+D,SAAW,UAAW7oD,KAAK,WAIhI,EAEA,EAKA4xD,WAAA,WACE,IAAMrxC,EAAUp2B,KAAK+mE,SAASW,OAAOtxC,UAErC,OAAOA,GAAWA,IAAYp2B,KAAK0qB,MAAMi9C,eAC3C,EAEA,EAKAC,YAAA,WACE,OAAO,IAAInL,CACb,EAEA,EAKAyI,SAAA,WAAY,EAEZ,EAGA4C,OAAA,WACE9nE,KAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,EAAC,EAlF8B,CAAS6b,GCnB1C,SAAS0M,GAA6BxkE,GAChCi2D,GAAAA,SAAAA,iBACFA,GAAAA,SAAAA,WACAj2D,EAAEoC,kBAEN,CAEA,IASqBqiE,GAAa,uEACzBzM,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMk6C,YAAcl6C,EAAMk6C,aAAevE,GAAY7G,GAAAA,WAAAA,MAAqB,+CAC1E9uC,EAAM08C,YAAc18C,EAAM08C,aAAe5N,GAAAA,WAAAA,MAAqB,2CAC9D9uC,EAAM68C,YAAc78C,EAAM68C,aAAelH,GAAY7G,GAAAA,WAAAA,MAAqB,kDAC5E,EAAC,kBAoFA,OApFA,EAEDoO,YAAA,WACE,IAAMjK,EAAQ,EAAH,UAASiK,YAAW,WACzB1J,EAAal+D,KAAK0qB,MAAMwzC,WAY9B,OAVAP,EAAM7kD,IACJ,QACA,YACGonD,GAAK,gBAAiB,IACvB,EAAC7d,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,WAAqB0E,GAAa5b,QAASylB,IACpD7J,EAAW/0D,WAKXw0D,CACT,EAEA,EAGAkK,cAAA,SAActkE,GACZwkE,GAA6BxkE,GAE7ByR,EAAEwrC,MAAM1kC,IAAI09C,GAAAA,MAAAA,WAAqBx5D,KAAK0qB,MAAMwzC,WAAY,SAC1D,EAEA,EAKAv8D,KAAA,WACE,MAAO,CACLy0B,QAASp2B,KAAK+mE,SAASW,OAAOtxC,UAC9B6xC,cAAe,CAAE/J,WAAYl+D,KAAK0qB,MAAMwzC,YAE5C,EAAC,EAEDgH,SAAA,WAAW,WACHhH,EAAal+D,KAAK0qB,MAAMwzC,WAE9Bl+D,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEF,IAAM79C,EAAO3B,KAAK2B,OAElB63D,GAAAA,MAAAA,aACgB,SACb0O,KAAKvmE,GACLs1B,MAAK,SAACkxC,GAGL,GAAI3O,GAAAA,kBAAsB0E,GAAa,CACrC,IAAMzQ,EAAS+L,GAAAA,QAAAA,IAAgB,UAC/B/L,EAAOt5C,SAAS8iB,MAAK,kBAAMw2B,EAAO2a,WAAWD,EAAK3H,SAAS,GAC7D,KAAO,CAIL,IAAI6H,EACEC,EACJ,EAAC7E,GAAM,CACL33C,UAAU,sBACVw2B,QAAS,WACPttC,EAAEwrC,MAAM1kC,IAAI09C,GAAAA,MAAAA,KAAe2O,IAC3B3O,GAAAA,OAAAA,QAAmB6O,EACrB,GAEC7O,GAAAA,WAAAA,MAAqB,0CAG1B6O,EAAQ7O,GAAAA,OAAAA,KACN,CACEx0D,KAAM,UACNujE,SAAU,CAACD,IAEb9O,GAAAA,WAAAA,MAAqB,4CAEzB,CAEA,EAAKuN,SAASp6D,MAChB,GAAG3M,KAAK8nE,OAAOp4B,KAAK1vC,MACxB,EAAC,EA3F+B,CAASsnE,ICKtBkB,GAAK,8DA0CvB,OA1CuB,mBACxB7jC,KAAA,SAAKyd,GACH,IAAM13B,EAAQjJ,OAAOs+B,OAAO,CAAC,EAAG//C,KAAK0qB,OAE/B1lB,EAAO4nD,EAAQliC,EAAO,QAC5BA,EAAMoB,UAAYkyC,EAAU,QAAS,UAAUh5D,EAAQ0lB,EAAMoB,WAE7D,IAAM3iB,EAAQyjD,EAAQliC,EAAO,SACvBw1C,EAAOtT,EAAQliC,EAAO,QACtB0L,EAAUw2B,EAAQliC,EAAO,YAAc03B,EAAM9sB,SAC7CizC,EAAY3b,EAAQliC,EAAO,aAAe,GAK1C+9C,EAAc7b,EAAQliC,EAAO,eAC7Bg+C,EAAY9b,EAAQliC,EAAO,aAC3Bi+C,EAAkC,GAaxC,OAXIF,QAA+B31D,IAAhB21D,IACjBE,EAAezzD,KACb,EAACuuD,GAAM,CACL,aAAYjK,EAAIiH,WAAWC,MAAM,qCACjCR,KAAK,eACLp0C,UAAU,iDACVw2B,QAASomB,KAMb,QAASh+C,IACJvhB,GACD,SAAK2iB,UAAU,iBACVo0C,GAAQ,UAAMp0C,UAAU,oBAAoB88C,GAAW1I,IAC1D,UAAMp0C,UAAU,oBAAoB3iB,IAGxC,UAAM2iB,UAAU,cAAcsK,GAC9B,QAAItK,UAAU,kBAAkB0xC,EAAU+K,EAASpoE,OAAOwoE,KAGhE,EAAC,EA1CuB,CAA4CtN,GCIxCwN,GAAK,mGAmDG,OAnDH,0CA8CvBnK,SAAmB,EAAK,EAKlCoK,WAAgC,KAAI,EAnDH,OAmDG,kBAPnC,OAOmC,EAEpCvmB,OAAA,SAAOH,GAAwC,WAC7C,YAAMG,OAAM,UAACH,GAMb,IAAM2mB,EAA2B,GAEjC,CAAC,YAAa,QAAS,UAAW,YAAYpyD,SAAQ,SAACmgB,GAC/C,EAAaA,KAChB,EAAaA,GAAU,WAAmB,EAC3CiyC,EAAe7zD,KAAK4hB,GAExB,IAEIiyC,EAAetkE,OAAS,GAC1By+D,GAAiB,UACJljE,KAAK4L,YAAYiH,KAAI,wFAAyFk2D,EAAe3wD,KACtI,MACD,IAGP,EAAC,EAED+pC,SAAA,SAASC,GAA2C,WAClD,YAAMD,SAAQ,UAACC,GAEfpiD,KAAK0qB,MAAMs+C,aAAY,kBAAM,EAAKC,SAAS,GAC7C,EAAC,EAEDxmB,eAAA,SAAeL,GAMb,GALA,YAAMK,eAAc,UAACL,IAKhBpiD,KAAK0qB,MAAM2N,MAAM6jC,MAIpB,OAAO,IAAIvc,SAAQ,SAAChpB,GAAO,OAAK7zB,WAAW6zB,EAAS,IAAI,GAE5D,EAEA,EAGAgO,KAAA,WAAO,WAKL,OAJI3kC,KAAK8oE,aACP9oE,KAAK8oE,WAAWL,aAAc,GAI9B,SAAK38C,UAAWkyC,EAAU,0BAA2Bh+D,KAAK8rB,cACxD,SAAKA,UAAU,iBACZ9rB,KAAKkpE,mBAAmBC,gBACvB,SAAKr9C,UAAU,+BACb,EAAC23C,GAAM,CACLvD,KAAK,eACL5d,QAAS,kBAAM,EAAK31C,MAAM,EAC1Bmf,UAAU,mCACV,aAAY0tC,EAAIiH,WAAWC,MAAM,2BAKvC,UAAMwE,SAAUllE,KAAKklE,SAASx1B,KAAK1vC,OACjC,SAAK8rB,UAAU,gBACb,QAAIA,UAAU,2CAA2C9rB,KAAKmJ,YAG7DnJ,KAAK8oE,YACN,SAAKh9C,UAAU,eACb,EAAC08C,GAAUxoE,KAAK8oE,aAInB9oE,KAAKo2B,YAKhB,EAiBA,EAGA8uC,SAAA,SAAS3hE,GACP,EAGF,EAKA0lE,QAAA,WACEjpE,KAAKK,IAAIQ,KAAK,2BAA2B4iB,QAAQhgB,QAAQ,SAASA,QAAQ,SAC5E,EAEA,EAGAkJ,KAAA,WACE3M,KAAK0qB,MAAM0+C,aACb,EAEA,EAGAtB,OAAA,WACE9nE,KAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,EAEA,EAIA7D,QAAA,SAAQt3B,GAA2B,MACjCrkB,KAAK8oE,WAAazkD,EAAMgkD,MAExBrzD,EAAEwqC,SAEmB,MAAjBn7B,EAAM20B,QAAgC,OAAlB,EAAI30B,EAAMy1B,WAAN,EAAgBqV,OAC1CnvD,KAAKK,EAAE,cAAiBgkB,EAAMy1B,SAASqV,OAAiB,GAAG5xB,OAAO8rC,QAAQ1lE,QAAQ,oBAAqB,IAAM,KAAKF,QAAQ,UAE1HzD,KAAKipE,SAET,EAAC,mCAED,WACE,OAAQjpE,KAAK4L,YAA6Bs9D,kBAC5C,IAAC,+BA/KD,WAEE,OAAKlpE,KAAKspE,cASH,CACLA,eAAe,EACfH,eAAgBnpE,KAAKupE,4BACrBC,UAAWxpE,KAAKypE,uBAChBC,iBAAkB1pE,KAAK2pE,+BAZhB,CACLL,eAAe,EACfH,gBAAgB,EAChBK,WAAW,EACXE,kBAAkB,EAUxB,KAAC,EA5CgC,CAAgGrO,GAArGwN,GAUZS,eAAyB,EAVbT,GAiBFU,6BAAuC,EAjBrCV,GAqBFY,wBAAkC,EArBhCZ,GAyBFc,+BAAyC,eCvDrE,mBCWA,IAIqBC,GAAmB,mGAMd,OANc,0CAItCC,WAAK,IAELpwB,SAAmB,EAAK,EANc,OAMd,kBA8GvB,OA9GuB,EAExB8I,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAK6pE,MAAQzc,GAAOptD,KAAK0qB,MAAMm/C,OAAS,GAC1C,EAAC,EAED/9C,UAAA,WACE,MAAO,kCACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,GAAAA,WAAAA,MAAqB,mCAC9B,EAAC,EAEDpjC,QAAA,WACE,OAAIp2B,KAAKy5C,QAEL,SAAK3tB,UAAU,cACb,SAAKA,UAAU,uBACb,OAAGA,UAAU,YAAY0tC,GAAAA,WAAAA,MAAqB,kDAC9C,SAAK1tC,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuCw2B,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,OAC9Ew5D,GAAAA,WAAAA,MAAqB,iDAShC,SAAK1tC,UAAU,cACb,SAAKA,UAAU,uBACb,OAAGA,UAAU,YAAY0tC,GAAAA,WAAAA,MAAqB,oCAC7Cx5D,KAAK0nE,SAASzkD,WAIvB,EAAC,EAEDykD,OAAA,WACE,IAAM/J,EAAQ,IAAIlB,EAEZqN,EAAazJ,GAAY7G,GAAAA,WAAAA,MAAqB,iDA4BpD,OA1BAmE,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,cACb,WACEA,UAAU,cACVjZ,KAAK,QACL7N,KAAK,QACL4/D,YAAakF,EACb,aAAYA,EACZjR,KAAM74D,KAAK6pE,MACX7gD,SAAUhpB,KAAK0+D,WAGnB,IAGFf,EAAM7kD,IACJ,SACA,SAAKgT,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,GAAAA,WAAAA,MAAqB,+CAGzB,IAGImE,CACT,EAAC,EAEDuH,SAAA,SAAS3hE,GAAgB,WACvBA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEflF,GAAAA,QACW,CACP1iC,OAAQ,OACR+f,IAAK2iB,GAAAA,MAAAA,UAAoB,UAAY,UACrCr2D,KAAMnD,KAAK+pE,gBACXC,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAEjCi3B,MAAK,WACJ,EAAKwiB,SAAU,EACf,EAAKqvB,WAAa,IACpB,IAAE,OACK,WAAO,IACb7xC,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,MAC3B,EAAC,EAED+pE,cAAA,WAKE,MAJa,CACXF,MAAO7pE,KAAK6pE,QAIhB,EAAC,EAEDluB,QAAA,SAAQt3B,GACe,MAAjBA,EAAM20B,QAAkB30B,EAAMgkD,QAChChkD,EAAMgkD,MAAMjyC,QAAUojC,GAAAA,WAAAA,MAAqB,iDAG7C,YAAM7d,QAAO,UAACt3B,EAChB,EAAC,EApHqC,CAAoFwkD,ICXvGoB,GAAY,uFAY9B,OAZ8B,EAC/BtlC,KAAA,WACE,OAAO,SAAK7Y,UAAU,gBAAgB9rB,KAAK29D,QAAQ16C,UACrD,EAEA,EAKA06C,MAAA,WACE,OAAO,IAAIlB,CACb,EAAC,EAZ8B,CAASpB,GCiBrB6O,GAAW,mGActB,OAdsB,0CAI9B1uB,cAAQ,IAKRquB,WAAK,IAKLh5C,cAAQ,IAdsB,OActB,kBA6JP,OA7JO,EAER0xB,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKw7C,SAAW4R,GAAOptD,KAAK0qB,MAAM8wB,UAAY,IAC9Cx7C,KAAK6pE,MAAQzc,GAAOptD,KAAK0qB,MAAMm/C,OAAS,IACxC7pE,KAAK6wB,SAAWu8B,GAAOptD,KAAK0qB,MAAMmG,UAAY,GAChD,EAAC,EAED/E,UAAA,WACE,MAAO,0BACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,GAAAA,WAAAA,MAAqB,2BAC9B,EAAC,EAEDpjC,QAAA,WACE,MAAO,CAAC,SAAKtK,UAAU,cAAc9rB,KAAKmD,QAAe,SAAK2oB,UAAU,gBAAgB9rB,KAAKmqE,UAC/F,EAAC,EAEDC,WAAA,SAAWC,GAAwB,QACjC,OAA2C,OAA3C,EAA0B,OAA1B,EAAOrqE,KAAK0qB,MAAM4/C,eAAQ,EAAnB,EAAqBpQ,SAASmQ,KAAM,CAC7C,EAAC,EAEDlnE,KAAA,WACE,MAAO,EAAEnD,KAAK0qB,MAAMsJ,OAAS,EAACi2C,GAAY,MAAK,SAAKn+C,UAAU,uBAAuB9rB,KAAK0nE,SAASzkD,WACrG,EAAC,EAEDykD,OAAA,WACE,IAAM/J,EAAQ,IAAIlB,EAEZ8N,EAAgBlK,GAAY7G,GAAAA,WAAAA,MAAqB,4CACjDsQ,EAAazJ,GAAY7G,GAAAA,WAAAA,MAAqB,yCAC9CgR,EAAgBnK,GAAY7G,GAAAA,WAAAA,MAAqB,4CA+DvD,OA7DAmE,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,WACEA,UAAU,cACVjZ,KAAK,WACL7N,KAAK,OACL4/D,YAAa2F,EACb,aAAYA,EACZ1R,KAAM74D,KAAKw7C,SACXxyB,SAAUhpB,KAAK0+D,SAAW1+D,KAAKoqE,WAAW,eAG9C,IAGFzM,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,cACb,WACEA,UAAU,cACVjZ,KAAK,QACL7N,KAAK,QACL4/D,YAAakF,EACb,aAAYA,EACZjR,KAAM74D,KAAK6pE,MACX7gD,SAAUhpB,KAAK0+D,SAAW1+D,KAAKoqE,WAAW,YAG9C,IAGGpqE,KAAK0qB,MAAMsJ,OACd2pC,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,WACEA,UAAU,cACVjZ,KAAK,WACL7N,KAAK,WACLylE,aAAa,eACb7F,YAAa4F,EACb,aAAYA,EACZ3R,KAAM74D,KAAK6wB,SACX7H,SAAUhpB,KAAK0+D,WAGnB,IAIJf,EAAM7kD,IACJ,SACA,SAAKgT,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,GAAAA,WAAAA,MAAqB,uCAGzB,IAGImE,CACT,EAAC,EAEDwM,OAAA,WACE,MAAO,CACL,OAAGr+C,UAAU,qBAAqB0tC,GAAAA,WAAAA,MAAqB,iCAAkC,CAAE9vD,EAAG,OAAG44C,QAAStiD,KAAK0qE,MAAMh7B,KAAK1vC,WAE9H,EAEA,EAIA0qE,MAAA,WACE,IAAMhgD,EAAQ,CACZigD,eAAgB3qE,KAAK6pE,SAAW7pE,KAAKw7C,YAGvCge,GAAAA,MAAAA,KAAeoR,GAAYlgD,EAC7B,EAAC,EAEDu+C,QAAA,WACMjpE,KAAK0qB,MAAM8wB,WAAax7C,KAAK0qB,MAAMm/C,MACrC7pE,KAAKK,EAAE,gBAAgBwlB,SAEvB7lB,KAAKK,EAAE,mBAAmBwlB,QAE9B,EAAC,EAEDq/C,SAAA,SAAS3hE,GACPA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf,IAAMv7D,EAAOnD,KAAK6qE,aAElBrR,GAAAA,QACW,CACP3iB,IAAK2iB,GAAAA,MAAAA,UAAoB,WAAa,YACtC1iC,OAAQ,OACR3zB,KAAAA,EACA6mE,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAEjCi3B,MAAK,kBAAMl1B,OAAOkuB,SAAS66C,QAAQ,GAAE9qE,KAAK8nE,OAAOp4B,KAAK1vC,MAC3D,EAEA,EAGA6qE,WAAA,WACE,IAAME,EAAW/qE,KAAK0qB,MAAMsJ,MAAQ,CAAEA,MAAOh0B,KAAK0qB,MAAMsJ,OAAU,CAAEnD,SAAU7wB,KAAK6wB,YAQnF,OANa,GACX2qB,SAAUx7C,KAAKw7C,WACfquB,MAAO7pE,KAAK6pE,SACTkB,EAIP,EAAC,EA3K6B,CAAoElC,ICJ/E+B,GAAU,mGAYrB,OAZqB,0CAI7BD,oBAAc,IAId95C,cAAQ,IAIRm6C,cAAQ,IAZqB,OAYrB,kBA8JP,OA9JO,EAERzoB,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAK2qE,eAAiBvd,GAAOptD,KAAK0qB,MAAMigD,gBAAkB,IAC1D3qE,KAAK6wB,SAAWu8B,GAAOptD,KAAK0qB,MAAMmG,UAAY,IAC9C7wB,KAAKgrE,SAAW5d,KAASptD,KAAK0qB,MAAMsgD,SACtC,EAAC,EAEDl/C,UAAA,WACE,MAAO,yBACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,GAAAA,WAAAA,MAAqB,0BAC9B,EAAC,EAEDpjC,QAAA,WACE,MAAO,CAAC,SAAKtK,UAAU,cAAc9rB,KAAKmD,QAAe,SAAK2oB,UAAU,gBAAgB9rB,KAAKmqE,UAC/F,EAAC,EAEDhnE,KAAA,WACE,MAAO,CAAC,EAAC8mE,GAAY,MAAK,SAAKn+C,UAAU,uBAAuB9rB,KAAK0nE,SAASzkD,WAChF,EAAC,EAEDykD,OAAA,WACE,IAAM/J,EAAQ,IAAIlB,EAEZwO,EAAsB5K,GAAY7G,GAAAA,WAAAA,MAAqB,oDACvDgR,EAAgBnK,GAAY7G,GAAAA,WAAAA,MAAqB,2CA0DvD,OAxDAmE,EAAM7kD,IACJ,iBACA,SAAKgT,UAAU,cACb,WACEA,UAAU,cACVjZ,KAAK,iBACL7N,KAAK,OACL4/D,YAAaqG,EACb,aAAYA,EACZpS,KAAM74D,KAAK2qE,eACX3hD,SAAUhpB,KAAK0+D,WAGnB,IAGFf,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,WACEA,UAAU,cACVjZ,KAAK,WACL7N,KAAK,WACLylE,aAAa,mBACb7F,YAAa4F,EACb,aAAYA,EACZ3R,KAAM74D,KAAK6wB,SACX7H,SAAUhpB,KAAK0+D,WAGnB,IAGFf,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,aACE,WAAOA,UAAU,YACf,WAAO9mB,KAAK,WAAW6zD,KAAM74D,KAAKgrE,SAAUhiD,SAAUhpB,KAAK0+D,UAC1DlF,GAAAA,WAAAA,MAAqB,0CAI5B,IAGFmE,EAAM7kD,IACJ,SACA,SAAKgT,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,GAAAA,WAAAA,MAAqB,sCAGzB,IAGImE,CACT,EAAC,EAEDwM,OAAA,WACE,OACE,WACE,OAAGr+C,UAAU,6BACX,OAAGw2B,QAAStiD,KAAKkrE,eAAex7B,KAAK1vC,OAAQw5D,GAAAA,WAAAA,MAAqB,4CAEnEA,GAAAA,MAAAA,UAA6B,gBAC5B,OAAG1tC,UAAU,qBAAqB0tC,GAAAA,WAAAA,MAAqB,iCAAkC,CAAE9vD,EAAG,OAAG44C,QAAStiD,KAAKmrE,OAAOz7B,KAAK1vC,WAInI,EAEA,EAIAkrE,eAAA,WACE,IAAMrB,EAAQ7pE,KAAK2qE,iBACbjgD,EAAQm/C,EAAM3P,SAAS,KAAO,CAAE2P,MAAAA,QAAU/2D,EAEhD0mD,GAAAA,MAAAA,KAAeoQ,GAAqBl/C,EACtC,EAEA,EAIAygD,OAAA,WAAS,MACDR,EAAiB3qE,KAAK2qE,iBAEtBjgD,IAAK,MACRigD,EAAezQ,SAAS,KAAO,QAAU,YAAayQ,EAAc,GAGvEnR,GAAAA,MAAAA,KAAe0Q,GAAax/C,EAC9B,EAAC,EAEDu+C,QAAA,WACEjpE,KAAKK,EAAE,UAAYL,KAAK2qE,iBAAmB,WAAa,kBAAoB,KAAKlnE,QAAQ,SAC3F,EAAC,EAEDyhE,SAAA,SAAS3hE,GACPA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEflF,GAAAA,QAAAA,MAAkBx5D,KAAKorE,cAAe,CAAEpB,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAASi3B,MAAK,kBAAMl1B,OAAOkuB,SAAS66C,QAAQ,GAAE9qE,KAAK8nE,OAAOp4B,KAAK1vC,MACzI,EAAC,EAEDorE,YAAA,WAOE,MANa,CACXT,eAAgB3qE,KAAK2qE,iBACrB95C,SAAU7wB,KAAK6wB,WACfm6C,SAAUhrE,KAAKgrE,WAInB,EAAC,EAEDrvB,QAAA,SAAQt3B,GACe,MAAjBA,EAAM20B,QAAkB30B,EAAMgkD,QAChChkD,EAAMgkD,MAAMjyC,QAAUojC,GAAAA,WAAAA,MAAqB,2CAC3Cx5D,KAAK6wB,SAAS,KAGhB,YAAM8qB,QAAO,UAACt3B,EAChB,EAAC,EA1K4B,CAAkEwkD,ICJ5EwC,GAAqB,mGAGhC,OAHgC,0CACxCnN,gBAAU,IACVoN,kBAAY,IACZC,cAAQ,IAHgC,OAGhC,kBA+DP,OA/DO,EAERhpB,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKk+D,WAAal+D,KAAK0qB,MAAMwzC,WAC7Bl+D,KAAKsrE,aAAetrE,KAAK0qB,MAAM4gD,aAC/BtrE,KAAKurE,SAAWne,GAAOptD,KAAKsrE,aAC9B,EAAC,EAEDx/C,UAAA,WACE,MAAO,oCACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,GAAAA,WAAAA,MAAqB,qCAC9B,EAAC,EAEDpjC,QAAA,WACE,OACE,SAAKtK,UAAU,cACb,SAAKA,UAAU,uBACb,SAAKA,UAAU,cACb,WAAOA,UAAU,cAAc+sC,KAAM74D,KAAKurE,SAAUvmE,KAAK,UAE3D,SAAK8mB,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,GAAAA,WAAAA,MAAqB,iDAMlC,EAAC,EAED0L,SAAA,SAAS3hE,GAAsC,WAC7CA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf,IAAMv1D,EAAQnJ,KAAKurE,WACbD,EAAetrE,KAAKsrE,aAK1B,GAAIniE,GAASA,IAAUmiE,EACrB,OAAOtrE,KAAKk+D,WACTgK,KAAK,CAAE/+D,MAAAA,IACP8tB,MAAK,WACAuiC,GAAAA,kBAAsB,EAAK0E,aAC7B1E,GAAAA,QAAAA,IAAgB,UAAUrlD,SAE5Ba,EAAEwqC,SACF,EAAK7yC,MACP,IAAE,OACK,WACL,EAAK+xD,SAAU,EACf1pD,EAAEwqC,QACJ,IAEFx/C,KAAK2M,MAET,EAAC,EAlEuC,CAAwFk8D,ICDlI,UASEN,SAAQ,SAACrK,EAAYrqD,GAAS,WACtB8pD,EAAQ,IAAIlB,EAUlB,MARA,CAAC,OAAQ,aAAc,eAAe9lD,SAAQ,SAAC60D,GAC7C,IAAMjD,EAAW,EAAKiD,EAAU,YAAYtN,EAAYrqD,GAASoP,UAC7DslD,EAAS9jE,SACX8jE,EAAS5xD,SAAQ,SAACsL,GAAI,OAAK07C,EAAM7kD,IAAImJ,EAAKg7C,SAAUh7C,EAAK,IACzD07C,EAAM7kD,IAAI0yD,EAAU,YAAa,EAAC,EAAS,OAE/C,IAEO7N,CACT,EAYA8N,aAAY,SAACvN,EAAYrqD,GAAS,WAC1B8pD,EAAQ,IAAIlB,EAmClB,OA9BI5oD,aAAmB63D,IACrB/N,EAAM7kD,IACJ,SACC0gD,GAAAA,QAAAA,MAAoB0E,EAAWyN,WAC9B,EAAClI,GAAM,CACLvD,KAAK,eACL5d,QAAS,WAGP,OAAO,EAAKspB,YACTl8B,KAAKwuB,EADD,EACa,GAAM,GAAM,OACvB,WAAO,GAClB,GAEC1E,GAAAA,WAAAA,MACCA,GAAAA,QAAAA,KAAmB,8CAAgD,0DAIvE,EAACiK,GAAM,CACLvD,KAAK,eACLp0C,UAAU,WACV3iB,MAAOk3D,GAAY7G,GAAAA,WAAAA,MAAqB,sDAEvCA,GAAAA,WAAAA,MAAqB,wDAMvBmE,CACT,EAWAkO,mBAAkB,SAAC3N,GACjB,IAAMP,EAAQ,IAAIlB,EAWlB,OATIyB,EAAW4N,aACbnO,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,oBAAoB5d,QAAStiD,KAAK+rE,aAAar8B,KAAKwuB,IAC9D1E,GAAAA,WAAAA,MAAqB,kDAKrBmE,CACT,EAWAqO,oBAAmB,SAAC9N,GAClB,IAAMP,EAAQ,IAAIlB,EA+BlB,OA7BKyB,EAAW+N,YAUV/N,EAAWgO,WACbvO,EAAM7kD,IACJ,UACA,EAAC2qD,GAAM,CAACvD,KAAK,eAAe5d,QAAStiD,KAAKmsE,cAAcz8B,KAAKwuB,IAC1D1E,GAAAA,WAAAA,MAAqB,mDAKxB0E,EAAWkO,aACbzO,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,eAAe5d,QAAStiD,KAAKqsE,aAAa38B,KAAKwuB,IACzD1E,GAAAA,WAAAA,MAAqB,2DAtBxB0E,EAAWgO,WACbvO,EAAM7kD,IACJ,OACA,EAAC2qD,GAAM,CAACvD,KAAK,mBAAmB5d,QAAStiD,KAAKssE,WAAW58B,KAAKwuB,IAC3D1E,GAAAA,WAAAA,MAAqB,kDAwBvBmE,CACT,EAaAiO,YAAW,SAACW,EAAUC,GAAc,WAClC,OAAO,IAAI7sB,SAAQ,SAAChpB,EAASC,GAC3B,OAAI4iC,GAAAA,QAAAA,KACE,EAAKmS,YACFnS,GAAAA,SAAAA,iBAA8B,KAASgT,GAC1ChT,GAAAA,SAAAA,KAAkBwO,GAAe,CAC/Blb,KAAM0M,GAAAA,QAAAA,KACN0E,WAAY,IAGhB1E,GAAAA,SAAAA,OAEI+S,GAAY/S,GAAAA,kBAAsB,KAAUA,GAAAA,SAAAA,gBAC9CA,GAAAA,QAAAA,IAAgB,UAAU4O,WAAW,SAGhCzxC,EAAQ6iC,GAAAA,WAER5iC,KAIX4iC,GAAAA,MAAAA,KAAeoR,IAERh0C,IACT,GACF,EAOA01C,WAAU,WAGR,OAFAtsE,KAAKysE,SAAS,CAAEvkE,WAAY,CAAEwkE,SAAU,IAAIzyD,MAAUguD,cAAe,CAAE0E,WAAYnT,GAAAA,QAAAA,QAE5Ex5D,KAAKkoE,KAAK,CAAE+D,UAAU,GAC/B,EAOAE,cAAa,WAGX,OAFAnsE,KAAKysE,SAAS,CAAEvkE,WAAY,CAAEwkE,SAAU,MAAQzE,cAAe,CAAE0E,WAAY,QAEtE3sE,KAAKkoE,KAAK,CAAE+D,UAAU,GAC/B,EAOAI,aAAY,WAAG,WACb,GAAIO,QAAQvM,GAAY7G,GAAAA,WAAAA,MAAqB,wDAO3C,OAJIA,GAAAA,kBAAsBx5D,OACxBw5D,GAAAA,QAAAA,OAGKx5D,KAAI,SAAUi3B,MAAK,kBAAMuiC,GAAAA,YAAAA,iBAAiC,EAAK,GAE1E,EAKAuS,aAAY,WACV,OAAOvS,GAAAA,MAAAA,KAAe6R,GAAuB,CAC3CC,aAActrE,KAAKmJ,QACnB+0D,WAAYl+D,MAEhB,GClOa,SAAS6sE,GAAStsE,GAC/B,IAGIusE,EACAC,EAEAC,EACAC,EAPE9rE,EAAWd,EAAEE,GAQf2sE,GAAiB,EACjBC,GAAY,EACZh/D,EAAM,EAQJi/D,EAAa,SAACC,EAAQ7sE,GAAiB,WAAV,IAAPA,IAAAA,EAAU,CAAC,IAKrC,EAAAA,GAAQ6R,WAAR,EAAQA,SAAa,QACrB7R,EAAQgtC,KAAO,SAAU5zB,GACvBvZ,EAAEL,MAAMqD,IAAI,YAAa,aAAeuW,EAAI,SAC9C,EAEAzY,EAASN,KAAK,qBAAqB+vC,QAAQ,CAAE,wBAAyBy8B,GAAU7sE,EAClF,EAKMwwB,EAAQ,WACZo8C,EAAW,EAAG,CACZp+D,SAAU,WACR7N,EAASyB,YAAY,WACrBkqE,EAAgBngE,OAChBogE,EAAiBpgE,OACjBwgE,GAAY,CACd,GAEJ,EA4FA,OA1FAhsE,EACGN,KAAK,qBACLE,GAAG,cAAc,SAAUwC,GAG1BupE,EAAkB3rE,EAASN,KAAK,6CAChCksE,EAAmB5rE,EAASN,KAAK,8CAEjCmsE,EAASzpE,EAAEigC,cAAc+B,cAAc,GAAGR,QAC1CkoC,EAAS1pE,EAAEigC,cAAc+B,cAAc,GAAGP,QAE1CkoC,GAAiB,EACjB/+D,EAAM,CACR,IAECpN,GAAG,aAAa,SAAUwC,GACzB,IAAM+pE,EAAO/pE,EAAEigC,cAAc+B,cAAc,GAAGR,QACxCwoC,EAAOhqE,EAAEigC,cAAc+B,cAAc,GAAGP,QAW9C,GALIkoC,GAAkBjqE,KAAKuV,IAAI80D,EAAON,GAAU/pE,KAAKuV,IAAI+0D,EAAON,KAC9DE,GAAY,GAEdD,GAAiB,EAEbC,EAAW,CACbh/D,EAAMm/D,EAAON,EAKb,IAAM9oE,EAAS,SAACspE,EAAaC,GAC3B,GAAID,EAAY/oE,OAAQ,CACtB,IAAMiyC,EAAkB,SAAT+2B,EAAkBt/D,EAAM,EAAIA,EAAM,EAE7CuoC,GAAU82B,EAAYzoE,SAAS,kCACjCoJ,GAAa,GAANA,GAETq/D,EAAYtpE,OAAOwyC,GAEnB,IAAMxY,EAAQj7B,KAAKC,IAAI,EAAGD,KAAK4T,IAAI,GAAI5T,KAAKuV,IAAIrK,GAAO,IAvF/C,KAwFRq/D,EAAY3sE,KAAK,SAASwC,IAAI,YAAa,SAAW66B,EAAQ,IAChE,MACE/vB,EAAMlL,KAAc,SAATwqE,EAAkB,MAAQ,OAAO,EAAGt/D,EAEnD,EAEAjK,EAAO4oE,EAAiB,QACxB5oE,EAAO6oE,EAAkB,SAEzB1sE,EAAEL,MAAMqD,IAAI,YAAa,aAAe8K,EAAM,UAC9C9N,EAAEL,MAAMqD,IAAI,wBAAyB8K,EAAM,MAE3ChN,EAASqE,YAAY,YAAa2I,GAElC5K,EAAEmC,gBACJ,CACF,IAEC3E,GAAG,YAAY,WAMd,IAAM2sE,EAAW,SAACF,GAChBA,EAAY/hE,QAER+hE,EAAYzoE,SAAS,gCACvBisB,IAEAo8C,GAAYj/D,EAAM,EAAI,GAAK,GAAKhN,EAASyN,QAE7C,EAEIm+D,EAAiBtoE,QAAU0J,GA1HjB,GA2HZu/D,EAASX,GACAD,EAAgBroE,QAAU0J,EA5HvB,GA6HZu/D,EAASZ,GAET97C,IAGFk8C,GAAiB,EACjBC,GAAY,CACd,IAEK,CAAEn8C,MAAAA,EACX,CCvJA,IAAM28C,GAAe,sBAON,SAASC,GAAathD,GACnC,OAAOA,EAAM3oB,QAAQgqE,GAAc,OACrC,CCmBA,IAIqBE,GAAkB,mGAOtB,OAPsB,0CAKrCC,aAAO,IAEPC,qBAAe,IAPsB,OAOtB,kBAgPd,OAhPc,EAEfxrB,OAAA,SAAOH,GAAyC,WAC9C,YAAMG,OAAM,UAACH,GAEbpiD,KAAK8tE,QAAU,IAAIxL,IACjB,kBAAM,EAAK53C,MAAMwzC,WAAW8P,SAAS,IACrC,WACE,IAAMr8B,EAAO6nB,GAAAA,QAAAA,MAAoBA,GAAAA,QAAAA,KAAAA,oBACjC,OAAO7nB,GAAQA,EAAK11B,SACtB,IACA,kBAAM,EAAKy6B,QAAQ,GAEvB,EAAC,EAEDu3B,aAAA,WACE,MAAO,CACLniD,UAAWkyC,EAAU,qBAAsB,CACzCtnB,OAAQ12C,KAAK02C,SACb,6BAA8B12C,KAAK0qB,MAAMwzC,WAAW+N,WACpDiC,SAAU,iBAAkBnsE,SAGlC,EAAC,EAED4iC,KAAA,WACE,IAAMu5B,EAAal+D,KAAK0qB,MAAMwzC,WAExBqK,EAAW4F,GAAmB5F,SAASrK,EAAYl+D,MAAMijB,UACzDyH,EAAQ1qB,KAAKiuE,eAEnB,OACE,QAASvjD,EACN1qB,KAAKouE,aAAa7F,GAClBvoE,KAAKquE,yBACLruE,KAAKsuE,cAGZ,EAAC,EAEDF,aAAA,SAAa7F,GACX,QACIA,EAAS9jE,QACT,EAACN,GAAQ,CACP+7D,KAAK,oBACLp0C,UAAU,8BACV80C,gBAAgB,kFAChBI,sBAAuBxH,GAAAA,WAAAA,MAAqB,oEAE3C+O,EAIT,EAAC,EAED8F,uBAAA,WACE,IACME,EADavuE,KAAK0qB,MAAMwzC,WACFqQ,WAE5B,OACE,UACEziD,UAAWkyC,EAAU,6EAA8E,CAAEh1C,UAAWulD,IAChHjsB,QAAStiD,KAAKwuE,WAAW9+B,KAAK1vC,OAE7BkgE,GAAK,gBAGZ,EAAC,EAEDoO,YAAA,WACE,IAAMpQ,EAAal+D,KAAK0qB,MAAMwzC,WACxBqQ,EAAWrQ,EAAWqQ,WACtBE,EAASvQ,EAAWuQ,SAE1B,OACE,SAAK3iD,UAAWkyC,EAAU,6BAA8B,mBAAoB,CAAE0Q,OAAQH,EAAUI,KAAMF,KACnGzuE,KAAK4uE,mBACL5uE,KAAK6uE,aACL7uE,KAAK8uE,WACL9uE,KAAK+uE,iBAGZ,EAAC,EAEDH,iBAAA,WACE,IAAM1Q,EAAal+D,KAAK0qB,MAAMwzC,WACxBpR,EAAOoR,EAAWpR,OAExB,OACE,EAACrkD,GAAO,CACN8H,KAAMipD,GAAAA,WAAAA,MAAqB,0CAA2C,CAAE1M,KAAAA,EAAMkV,IAAK5B,GAAUlC,EAAW8Q,eACxG1sE,SAAS,SAET,EAAC+/C,EAAI,CAACv2B,UAAU,4BAA4BsE,KAAM08B,EAAO0M,GAAAA,MAAAA,KAAe1M,GAAQ,KAC7E2R,EAAO3R,GAAQ,KAAM,CAAE3jD,MAAO,MAIvC,EAAC,EAED0lE,WAAA,WACE,IAAM3Q,EAAal+D,KAAK0qB,MAAMwzC,WAE9B,OAAO,QAAIpyC,UAAU,oCAAoC0xC,EAAUU,EAAWC,SAASl7C,WACzF,EAAC,EAED6rD,SAAA,WACE,IAAM5Q,EAAal+D,KAAK0qB,MAAMwzC,WACxB+Q,EAASjvE,KAAKkvE,YAEpB,OACE,EAAC7sB,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,WAAqB0E,EAAY+Q,GAASnjD,UAAU,2BAC9D,QAAIA,UAAU,4BAA4Bi0C,GAAU7B,EAAW/0D,QAASnJ,KAAK+tE,kBAC7E,QAAIjiD,UAAU,2BAA2B0xC,EAAUx9D,KAAKmvE,YAAYlsD,YAG1E,EAAC,EAEDisD,UAAA,WACE,IAAMhR,EAAal+D,KAAK0qB,MAAMwzC,WAC1B+Q,EAAS,EAEb,GAAIjvE,KAAK0qB,MAAMuyB,OAAO+T,EAAG,CACvB,IAAMmX,EAAOjK,EAAWkR,mBACpBjH,IACF8G,EAAS9G,EAAK3H,UAGhB,IAAMR,EAAS4N,GAAa5tE,KAAK0qB,MAAMuyB,OAAO+T,GAC9ChxD,KAAK+tE,gBAAkB,IAAI/mE,OAAOg5D,EAAS,IAAMA,EAAOlhB,OAAOn7C,QAAQ,OAAQ,KAAM,KACvF,KAAO,OACLsrE,EAAShsE,KAAK4T,IAA+B,OAA5B,EAACqnD,EAAWmR,kBAAgB,EAAI,GAAInR,EAAWoR,sBAAwB,GAAK,EAC/F,CAEA,OAAOL,CACT,EAAC,EAED9sB,SAAA,SAASC,GAMP,GALA,YAAMD,SAAQ,UAACC,GAKX,iBAAkBrgD,OAAQ,CAC5B,IAAMwtE,EAAmB1C,GAAS7sE,KAAKO,SAEvCP,KAAKK,EAAE,gCAAgCU,GAAG,sBAAsB,kBAAMwuE,EAAiBv+C,OAAO,GAChG,CACF,EAAC,EAEDkxB,eAAA,SAAeE,GAGb,OAFA,YAAMF,eAAc,UAACE,GAEdpiD,KAAK8tE,QAAQtL,cACtB,EAEA,EAGA9rB,OAAA,WACE,OAAO8iB,GAAAA,QAAAA,QAAoBkS,GAAgB,CAAExN,WAAYl+D,KAAK0qB,MAAMwzC,YACtE,EAEA,EAKAsR,cAAA,WAAgB,MACd,MAAO,CAAC,SAAU,UAAUtV,SAA+B,OAAvB,EAACl6D,KAAK0qB,MAAMuyB,OAAOvnC,MAAI,EAAI,GACjE,EAEA,EAMA+5D,iBAAA,WACE,MAAkC,YAA3BzvE,KAAK0qB,MAAMuyB,OAAOvnC,IAC3B,EAEA,EAGA84D,WAAA,WACE,IAAMtQ,EAAal+D,KAAK0qB,MAAMwzC,WAE1BA,EAAWqQ,aACbrQ,EAAWgK,KAAK,CAAEoH,mBAAoBpR,EAAWmR,mBACjDr6D,EAAEwqC,SAEN,EAEA,EAIA2vB,UAAA,WACE,IAAMxR,EAAQ,IAAIlB,EAElB,GAAIz8D,KAAK0qB,MAAMuyB,OAAO+T,EAAG,CACvB,IAAMmX,EAAOnoE,KAAK0qB,MAAMwzC,WAAWkR,oBAAsBpvE,KAAK0qB,MAAMwzC,WAAWwR,YAE/E,GAAIvH,GAA+B,YAAvBA,EAAKjxB,cAA6B,OACtCy4B,EAAU5P,GAA6B,OAApB,EAACoI,EAAKyH,gBAAc,EAAI,GAAI5vE,KAAK+tE,gBAAiB,KAC3EpQ,EAAM7kD,IAAI,UAAW62D,GAAU,IACjC,CACF,MACEhS,EAAM7kD,IAAI,eAAgB,EAACqpD,GAAY,CAACjE,WAAYl+D,KAAK0qB,MAAMwzC,WAAYkE,UAAWpiE,KAAKwvE,mBAG7F,OAAO7R,CACT,EAAC,EAEDoR,eAAA,WACE,IAAM7Q,EAAal+D,KAAK0qB,MAAMwzC,WAG9B,OAFoBl+D,KAAKyvE,oBAAsBvR,EAAWqQ,WAItD,YAAQziD,UAAU,4CAA4Cw2B,QAAStiD,KAAKwuE,WAAW9+B,KAAK1vC,OAC1F,UAAM,cAAY,QAAQugE,GAAiBrC,EAAW2R,gBAEtD,UAAM/jD,UAAU,mBACb0tC,GAAAA,WAAAA,MAAqB,uDAAwD,CAAE/iD,MAAOynD,EAAWmE,iBAOxG,UAAMv2C,UAAU,4BACd,UAAM,cAAY,QAAQy0C,GAAiBrC,EAAWmE,eAEtD,UAAMv2C,UAAU,mBACb0tC,GAAAA,WAAAA,MAAqB,sDAAuD,CAAE/iD,MAAOynD,EAAWmE,gBAIzG,EAAC,EAvPoC,CAAkFhH,GCtBpGyU,GAAW,8DAO7B,OAP6B,mBAC9BnrC,KAAA,WACE,OACE,SAAK7Y,UAAU,eACb,WAAI9rB,KAAK0qB,MAAMna,MAGrB,EAAC,EAP6B,CAAS8qD,GCKpB0U,GAAc,8DA+ChC,OA/CgC,mBACjCprC,KAAA,WAIE,IAKI+5B,EALErmC,EAAQr4B,KAAK0qB,MAAM2N,MAEnB4kB,EAAS5kB,EAAM23C,YACfC,EAAY53C,EAAM63C,oBAAsB73C,EAAM83C,gBAcpD,GAVIF,EACFvR,EAAU,EAACgE,GAAgB,MAClBrqC,EAAM+3C,YACf1R,EACE,EAAC+E,GAAM,CAAC33C,UAAU,SAASw2B,QAASjqB,EAAMg4C,SAAS3gC,KAAKrX,IACrDmhC,GAAAA,WAAAA,MAAqB,iDAKxBnhC,EAAMguB,UAAW,CACnB,IAAM91C,EAAOipD,GAAAA,WAAAA,MAAqB,yCAClC,OACE,SAAK1tC,UAAU,kBACb,EAACgkD,GAAW,CAACv/D,KAAMA,IAGzB,CAEA,IAAM+/D,EAAWj4C,EAAMi4C,SAEvB,OACE,SAAKxkD,UAAWkyC,EAAU,iBAAkB,CAAE,gCAAiC3lC,EAAMk4C,qBACnF,QAAIzN,KAAK,OAAO,YAAWmN,EAAWnkD,UAAU,8BAC7CuM,EAAMm4C,WAAW5oE,KAAI,SAAC6oE,EAAIC,GACzB,OAAOD,EAAG9S,MAAM/1D,KAAI,SAACs2D,EAAYyS,GAAO,OACtC,QAAI7jE,IAAKoxD,EAAWv0C,KAAM,UAASu0C,EAAWv0C,KAAMm5C,KAAK,UAAU,eAAa,KAAK,gBAAe4N,EAAUJ,EAAWK,GACvH,EAAC9C,GAAkB,CAAC3P,WAAYA,EAAYjhB,OAAQA,IACjD,GAET,KAEF,SAAKnxB,UAAU,2BAA2B4yC,GAGhD,EAAC,EA/CgC,CAASrD,GCVtCuV,GAAU,SAACrtE,GACXA,EAAEihC,MAAQ,IAAIg1B,GAAAA,KAAAA,MACpB,EAWqBqX,GAAkB,uFAyDpC,OAzDoC,EACrClsC,KAAA,WACE,GAAK3kC,KAAK0qB,MAAM2N,MAAMy4C,WAItB,OAAO,WAAOhlD,UAAU,uBAAuB9rB,KAAK+wE,eAAiB,EAAChB,GAAc,CAAC13C,MAAOr4B,KAAK0qB,MAAM2N,QACzG,EAAC,EAED8pB,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEf,IAAM4uB,EAAQ3wE,EAAE+hD,EAAMqF,KAKhBwpB,EAAOzX,GAAAA,KAOb,GANAwX,EAAMtlE,MAAMulE,EAAKvkE,KAAKgjC,KAAKuhC,GAAOA,EAAK/V,aAAaxrB,KAAKuhC,IAEzD5wE,EAAEO,UAAUG,GAAG,YAAa6vE,IAIxBpX,GAAAA,SAAAA,QAAqBkS,IAAiB,CACxC,IAAMlpE,EAAMg3D,GAAAA,MAAAA,6BAAyC,EACrDwX,EAAM3uE,UAAUG,EAClB,KAAO,CAIL,IAAM0uE,EAAcF,EAAMnwE,KAAK,8BAC/B,GAAIqwE,EAAYzsE,OAAQ,CACtB,IAAM0sE,EAAUH,EAAMlvE,SAASU,IACzB4uE,EAAaD,EAAUH,EAAMK,cAC7BC,EAAgBJ,EAAYpvE,SAASU,IACrC+uE,EAAmBD,EAAgBJ,EAAYG,eAEjDC,EAAgBH,GAAWI,EAAmBH,IAChDJ,EAAM3uE,UAAU2uE,EAAM3uE,YAAc8uE,EAAUG,EAElD,CACF,CACF,EAAC,EAEDtwB,SAAA,SAASoB,GACPoX,GAAAA,MAAAA,4BAAwCn5D,EAAE+hD,EAAMqF,KAAKplD,YACrDhC,EAAEO,UAAUsR,IAAI,YAAa0+D,GAC/B,EAEA,EAKAG,YAAA,WACE,OAAQ1wE,EAAE,mBAAmB0C,GAAG,WAClC,EAAC,EAzDoC,CAASs4D,GCd3BmW,GAAc,WAKjC,WAAYhhE,GACVxQ,KAAKwQ,SAAWA,EAChBxQ,KAAKyxE,SAAU,CACjB,CAEA,kBA4CC,OA5CD,EAMA7vB,KAAA,WAAO,WAGD5hD,KAAKyxE,UAITpjC,uBAAsB,WACpB,EAAKl6B,SACL,EAAKs9D,SAAU,CACjB,IAEAzxE,KAAKyxE,SAAU,EACjB,EAEA,EAGAt9D,OAAA,WACEnU,KAAKwQ,SAASzO,OAAO67C,YACvB,EAEA,EAGAxuB,MAAA,WACOpvB,KAAK02C,QACR30C,OAAO6pB,iBAAiB,SAAW5rB,KAAK02C,OAAS12C,KAAK4hD,KAAKlS,KAAK1vC,MAAQ,CAAE0xE,SAAS,GAEvF,EAEA,EAGAx0C,KAAA,WACEn7B,OAAO64B,oBAAoB,SAAU56B,KAAK02C,QAE1C12C,KAAK02C,OAAS,IAChB,EAAC,EAtDgC,GCGdi7B,GAAW,8DAgB7B,OAhB6B,mBAC9BhtC,KAAA,WACE,OACE,SAAK7Y,UAAU,gCACb,YAAQA,UAAU,eACf2yC,EAAO,KAAM,CAAE3yC,UAAW,oBAC3B,SAAKA,UAAU,cAGjB,SAAKA,UAAU,aACb,SAAKA,UAAU,aACf,SAAKA,UAAU,aACf,SAAKA,UAAU,cAIvB,EAAC,EAhB6B,CAASuvC,GCC1B,SAAS7f,GAASsR,GAC/B,IAAMj6C,EAAQi6C,GAAQA,EAAK6J,eAAkB6C,EAAIiH,WAAWC,MAAM,kCAElE,OAAO,UAAM50C,UAAU,YAAYjZ,EACrC,CCRA,IAYqB++D,GAAmB,uEAC/BrW,UAAP,SAAiB7wC,GACfA,EAAMoB,UAAYpB,EAAMoB,WAAa,GACrCpB,EAAMmnD,SAAWnnD,EAAMmnD,UAAa,SAACxK,GAAO,OAAKA,GAAS,CAC5D,EAAC,kBAkCA,OAlCA,EAED1iC,KAAA,WACE,OAAO,SAAK7Y,UAAW9rB,KAAK0qB,MAAMoB,WACpC,EAAC,EAEDq2B,SAAA,SAASC,GAAO,IAKVilB,EALU,OACd,YAAMllB,SAAQ,UAACC,GAKf,IAAM0vB,EAAgB,WAGpB,GAAK,EAAKpnD,MAAMq8C,SAASgL,YAAzB,CAEA,IAAM37C,EAAU,EAAK1L,MAAMq8C,SAASW,OAAOtxC,UAEvCixC,IAAYjxC,IAEhBixC,EAAUjxC,EAEV,EAAK1L,MAAMmnD,UAAS,kBAAMG,IAAIC,cAAc5K,QAAQA,GAAW,GAAIjlB,EAAMqF,IAAI,IARjC,CAS9C,EACAqqB,IAEA9xE,KAAKkyE,eAAiBC,YAAYL,EAAe,GACnD,EAAC,EAED9wB,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEfgwB,cAAcpyE,KAAKkyE,eACrB,EAAC,EAtCqC,CAAS7W,GCA5BgX,GAAgB,uFAwClC,OAxCkC,EACnC1tC,KAAA,WAAO,WACL,OAAI60B,GAAAA,SAAAA,iBAA8Bx5D,KAAK0qB,MAAMwzC,YAEzC,aAASpyC,UAAU,2BAA2B,YAAU,QACtD,YAAQA,UAAU,eAChB,SAAKA,UAAU,YACb,QAAIA,UAAU,iBACX2yC,EAAOjF,GAAAA,QAAAA,KAAkB,CAAE1tC,UAAW,oBACtC0vB,GAASge,GAAAA,QAAAA,OAEZ,QAAI1tC,UAAU,0BAA0B0xC,EAAUhE,GAAAA,QAAAA,KAAAA,SAA0Bv2C,cAGhF,EAAC2uD,GAAmB,CAAC9lD,UAAU,YAAYi7C,SAAUvN,GAAAA,SAAcqY,SAAU7xE,KAAKsyE,cAAc5iC,KAAK1vC,SAUzG,YAAQ8rB,UAAU,wBAAwBw2B,QAL9B,WACZ6rB,GAAmBvC,YAAY7rE,KAAK,EAAK2qB,MAAMwzC,YAAY,GAAK,OAAO,WAAO,GAChF,GAII,UAAMpyC,UAAU,eACb2yC,EAAOjF,GAAAA,QAAAA,KAAkB,CAAE1tC,UAAW,oBAAoB,IAAG0tC,GAAAA,WAAAA,MAAqB,6CAI3F,EAAC,EAED8Y,cAAA,SAAcjL,GACZ,IAAMkL,EAAiBlyE,EAAE0B,QAAQM,YAAchC,EAAE0B,QAAQG,UAAY7B,EAAEO,UAAUsB,SAEjFmlE,IAEIkL,GACFlyE,EAAE0B,QAAQM,UAAUhC,EAAEO,UAAUsB,SAEpC,EAAC,EAxCkC,CAASm5D,GCGzBmX,GAAU,uFA6a5B,OA7a4B,EAC7BjwB,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKk+D,WAAal+D,KAAK0qB,MAAMwzC,WAC7Bl+D,KAAKytD,OAASztD,KAAK0qB,MAAM+iC,OAEzBztD,KAAKyyE,eAAiB,IAAIjB,GAAexxE,KAAK0yE,SAAShjC,KAAK1vC,MAC9D,EAAC,EAED2kC,KAAA,WAAO,IACDguC,EADC,OAGCC,EAAa5yE,KAAKytD,OAAOmlB,aACzBC,EAAQ7yE,KAAKytD,OAAOolB,QACpBC,EAAU9yE,KAAKk+D,WAAW4U,UAE1BC,EAAa,SAAC3wB,GAClB/hD,EAAE+hD,EAAMqF,KAAK5kD,SAAS,UAGtBC,YAAW,kBAAMzC,EAAE+hD,EAAMqF,KAAK7kD,YAAY,SAAS,GAAE,IACvD,EAEM+6D,EAAQkV,EAAMjrE,KAAI,SAACugE,EAAMlhE,GAC7B,IAAImvB,EACE1L,EAAQ,CAAE,aAAc,EAAK+iC,OAAOulB,aAAe/rE,GAEzD,GAAIkhE,EAAM,CACR,IAAMx2B,EAAOw2B,EAAK6G,YACZiE,EAAgBzZ,GAAAA,eAAmB2O,EAAKjxB,eAC9C9gB,IAAY68C,GAAiB,EAACA,EAAa,CAAC9K,KAAMA,IAElDz9C,EAAM5d,IAAM,OAASq7D,EAAKx+C,KAC1Be,EAAMy3B,SAAW4wB,EACjBroD,EAAM,aAAeinB,EAAKvzB,cAC1BsM,EAAM,eAAiBy9C,EAAK3H,SAC5B91C,EAAM,WAAay9C,EAAKx+C,KACxBe,EAAM,aAAey9C,EAAKjxB,cAK1B,IAAMg8B,EAAKvhC,EAAOghC,EAEdO,EAAK,SACP98C,EAAU,CACR,SAAKtK,UAAU,sBACb,cAAO0tC,GAAAA,WAAAA,MAAqB,0CAA2C,CAAE2Z,OAAQ1Z,QAAQ3gD,IAAIo6D,EAAI,MAAMrzD,SAAQ,OAEjHuW,IAIJu8C,EAAWhhC,CACb,MACEjnB,EAAM5d,IAAM,OAASgmE,EAAQ,EAAKrlB,OAAOulB,aAAe/rE,GAExDmvB,EAAU,EAAC,GAAW,MAGxB,OACE,uBAAKtK,UAAU,mBAAsBpB,GAClC0L,EAGP,IA2BA,OAzBKw8C,GAAcC,EAAM7yE,KAAKytD,OAAO2lB,WAAapzE,KAAKytD,OAAOulB,aAAe,IAC3ErV,EAAMzoD,KACJ,SAAK4W,UAAU,sBAAsBhf,IAAI,YACvC,EAAC22D,GAAM,CAAC33C,UAAU,SAASw2B,QAAStiD,KAAKytD,OAAO4iB,SAAS3gC,KAAK1vC,KAAKytD,SAChE+L,GAAAA,WAAAA,MAAqB,8CAO1BoZ,GACFjV,EAAMzoD,KAAI,MAAVyoD,EAAc39D,KAAKqzE,WAAWpwD,YAK5B2vD,GAAgBpZ,GAAAA,QAAAA,OAAoBx5D,KAAKk+D,WAAWyN,YACtDhO,EAAMzoD,KACJ,SAAK4W,UAAU,kBAAkBhf,IAAI,QAAQ,aAAY9M,KAAKytD,OAAOh3C,QAAS0rC,SAAU4wB,GACtF,EAACV,GAAgB,CAACnU,WAAYl+D,KAAKk+D,eAMvC,SAAKpyC,UAAU,aAAag3C,KAAK,OAAO,YAAU,MAAM,YAAW9iE,KAAKytD,OAAO6lB,aAAe,OAAS,SACpG3V,EAGP,EAEA,EAGA0V,SAAA,WAGE,OAFc,IAAI5W,CAGpB,EAAC,EAEDja,SAAA,SAASJ,GACP,YAAMI,SAAQ,UAACJ,GAEfpiD,KAAKuzE,eACP,EAAC,EAEDpxB,SAAA,SAASC,GAAO,WACd,YAAMD,SAAQ,UAACC,GAEfpiD,KAAKuzE,gBAILzwE,YAAW,kBAAM,EAAK2vE,eAAerjD,OAAO,GAC9C,EAAC,EAED4xB,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEfpiD,KAAKyyE,eAAev1C,OACpB/vB,aAAanN,KAAKwzE,yBACpB,EAEA,EAGAD,cAAA,WACE,GAAKvzE,KAAKytD,OAAOgmB,YAAjB,CAEA,IAAM9yE,EAASX,KAAKytD,OAAOimB,WAC3B1zE,KAAKytD,OAAOgmB,aAAc,EAEtB,WAAY9yE,EACdX,KAAK2zE,eAAehzE,EAAO6/D,OAAQxgE,KAAKytD,OAAOmmB,eACtC,UAAWjzE,GACpBX,KAAK6zE,cAAclzE,EAAOkF,MAAO7F,KAAKytD,OAAOmmB,cAAejzE,EAAOmzE,MARjC,CAUtC,EAEA,EAIApB,SAAA,SAASlwE,QAAG,IAAHA,IAAAA,EAAMT,OAAO67C,aAChB59C,KAAKytD,OAAOsmB,QAAU/zE,KAAKytD,OAAO6lB,eAEtCtzE,KAAKg0E,eAAexxE,GAEpBxC,KAAKi0E,kBAAkBzxE,GAIvB2K,aAAanN,KAAKwzE,0BAClBxzE,KAAKwzE,yBAA2B1wE,WAAW9C,KAAKk0E,kBAAkBxkC,KAAK1vC,KAAMwC,GAAM,KACrF,EAEA,EAMAyxE,kBAAA,SAAkBzxE,QAAG,IAAHA,IAAAA,EAAMT,OAAO67C,aAC7B,IAAMtuC,EAAYtP,KAAKm0E,eACjBC,EAAiB/zE,EAAE0B,QAAQG,SAAWoN,EACtC+kE,EAAc7xE,EAAM8M,EAG1B,GAAItP,KAAKytD,OAAOulB,aAAe,EAAG,CAChC,IAAMsB,EAAQt0E,KAAKK,EAAE,+BAAiCL,KAAKytD,OAAOulB,aAAe,KAE7EsB,EAAM7vE,QAAU6vE,EAAMxyE,SAASU,IAAM6xE,EALjB,KAMtBr0E,KAAKytD,OAAO8mB,cAEhB,CAEA,GAAIv0E,KAAKytD,OAAO2lB,WAAapzE,KAAKytD,OAAOh3C,QAAS,CAChD,IAAM69D,EAAQt0E,KAAKK,EAAE,gCAAkCL,KAAKytD,OAAO2lB,WAAa,GAAK,KAEjFkB,EAAM7vE,QAAU6vE,EAAMxyE,SAASU,IAAM8xE,EAAMjD,aAAY,GAAQgD,EAAcD,EAbzD,KActBp0E,KAAKytD,OAAO4iB,UAEhB,CACF,EAAC,EAED2D,eAAA,SAAexxE,QAAG,IAAHA,IAAAA,EAAMT,OAAO67C,aAC1B,IAAMtuC,EAAYtP,KAAKm0E,eACjBC,EAAiB/zE,EAAE0B,QAAQG,SAAWoN,EACtC+kE,EAAc7xE,EAAM8M,EAMpB1J,EAAS5F,KAAKK,EAAE,gCAClB26C,EAAU,EACVm4B,EAAS,GACTqB,EAAoB,KAKxB5uE,EAAOnE,MAAK,WACV,IAAMC,EAAQrB,EAAEL,MACVwC,EAAMd,EAAMI,SAASU,IACrBN,EAASR,EAAM2vE,aAAY,GAKjC,GAAI7uE,EAAMN,EAASmyE,EACjB,OAAO,EAET,GAAI7xE,EAAM6xE,EAAcD,EACtB,OAAO,EAKT,IAAMK,EAAaxxE,KAAKC,IAAI,EAAGmxE,EAAc7xE,GAEvCkyE,EADgBzxE,KAAK4T,IAAI3U,EAAQmyE,EAAcD,EAAiB5xE,GAClCiyE,EAIV,OAAtBD,IACFA,EAAoBxqC,WAAWtoC,EAAMC,KAAK,UAAY8yE,EAAavyE,GAGjEwyE,EAAc,IAChB15B,GAAW05B,EAAcxyE,GAK3B,IAAMyvC,EAAOjwC,EAAMC,KAAK,QACpBgwC,IAAMwhC,EAASxhC,EACrB,IAKA3xC,KAAKytD,OAAO5nD,MAA8B,OAAtB2uE,EAA6BA,EAAoB,EAAIx0E,KAAKytD,OAAOh3C,QACrFzW,KAAKytD,OAAOzS,QAAUA,EAClBm4B,IAAQnzE,KAAKytD,OAAOknB,YAAclb,MAAM0Z,GAAQz2D,OAAO,aAC7D,EAEA,EAIAw3D,kBAAA,SAAkB1xE,QAAG,IAAHA,IAAAA,EAAMT,OAAO67C,aAC7B,IAMIg3B,EACAC,EAPEvlE,EAAYtP,KAAKm0E,eACjBl0B,EAAU5/C,EAAE0B,QACZqyE,EAAiBn0B,EAAQ/9C,SAAWoN,EACpCjN,EAAY49C,EAAQ59C,YAAciN,EAClC+kE,EAAc7xE,EAAM8M,EAK1BtP,KAAKK,EAAE,oBAAoBoB,MAAK,WAC9B,IAAM6yE,EAAQj0E,EAAEL,MACVwC,EAAM8xE,EAAMxyE,SAASU,IACrBN,EAASoyE,EAAMjD,aAAY,GAC3BoD,EAAaxxE,KAAKC,IAAI,EAAGmxE,EAAc7xE,GAQ7C,QAJoBsQ,IAAhB8hE,IAFyBH,EAAavyE,EAAS,MAClBA,EAASuyE,GAAcL,EAAiB,OAEvEQ,EAAcN,EAAM3yE,KAAK,WAGvBa,EAAMN,EAASG,EAAW,CAC5B,KAAIG,EAAMN,EAASG,EAAY+xE,GAIxB,OAAO,EAHRE,EAAM3yE,KAAK,YACbkzE,EAAYP,EAAM3yE,KAAK,UAG7B,CACF,IAEIizE,GACF50E,KAAK0qB,MAAMoqD,iBAAiBF,GAAe,EAAGC,EAAWD,EAE7D,EAEA,EAMAT,aAAA,WACE,IAAMY,EAA4B,UAAjBvb,GAAAA,SAA2B,kBAAoB,UAEhE,OAAOx5D,KAAKK,KAAOA,EAAE00E,GAAU1D,cAAgB9hE,SAASvP,KAAKK,IAAIgD,IAAI,cAAe,GACtF,EAEA,EAOAswE,eAAA,SAAenT,EAAQ5vB,GACrB,IAAM0jC,EAAQt0E,KAAKK,EAAE,gCAAgCmgE,EAAM,KAE3D,OAAOxgE,KAAKg1E,aAAaV,EAAO1jC,GAAS3Z,KAAKj3B,KAAKi1E,UAAUvlC,KAAK1vC,KAAMs0E,GAC1E,EAEA,EAQAT,cAAA,SAAchuE,EAAO+qC,EAASkjC,GAC5B,IAAMQ,EAAQR,EAAQzzE,EAAE,+BAAiCL,KAAKK,EAAE,+BAA+BwF,EAAK,KAEpG7F,KAAKg1E,aAAaV,EAAO1jC,GAAS,EAAMkjC,GAEpCA,GACF9zE,KAAKi1E,UAAUX,EAEnB,EAEA,EAUAU,aAAA,SAAaV,EAAO1jC,EAASsZ,EAAO4pB,GAAO,WACnCoB,EAAa70E,EAAE,cAAc68B,MAAK,GAClCr3B,EAAQyuE,EAAM3yE,KAAK,SAEzB,GAAI2yE,EAAM7vE,OAAQ,CAChB,IAAM0wE,EAAUb,EAAMxyE,SAASU,IAAMxC,KAAKm0E,eACpCiB,EAAad,EAAMxyE,SAASU,IAAM8xE,EAAMpyE,SACxCG,EAAYhC,EAAEO,UAAUyB,YACxBgzE,EAAehzE,EAAYhC,EAAE0B,QAAQG,SAK3C,GAAIgoD,GAASirB,EAAU9yE,GAAa+yE,EAAaC,EAAc,CAC7D,IAAM7yE,EAAMsxE,EAAQsB,EAAa/0E,EAAE0B,QAAQG,SAAWs3D,GAAAA,SAAAA,iBAAgC8a,EAAMvxE,GAAG,gBAAkB,EAAIoyE,EAEhHvkC,EAEMpuC,IAAQH,GACjB6yE,EAAWtkC,QAAQ,CAAEvuC,UAAWG,GAAO,QAFvC0yE,EAAW7yE,UAAUG,EAIzB,CACF,CAEA,IAAM8yE,EAAuB,WAG3B,EAAKtB,sBACSlhE,IAAVjN,IAAqB,EAAK4nD,OAAO5nD,MAAQA,EAAQ,EACvD,EAOA,OAHAyvE,IACAt1E,KAAKytD,OAAO8nB,qBAAsB,EAE3B51B,QAAQsF,IAAI,CAACiwB,EAAWn+C,UAAW/2B,KAAKytD,OAAO+nB,cAAcv+C,MAAK,WAWvE,IAAIw+C,EACJ,GAXAzgE,EAAEwqC,OAAOD,OAWLu0B,EAAO,CACT,IAAM4B,EAAer1E,EAAE,+BACvBA,EAAE0B,QAAQM,UAAUqzE,EAAa5zE,SAASU,IAAMkzE,EAAaxzE,SAAW7B,EAAE0B,QAAQG,SAAWs3D,GAAAA,SAAAA,iBAC/F,MAAqB,IAAV3zD,EACTxF,EAAE0B,QAAQM,UAAU,IACVozE,EAAap1E,EAAE,+BAA+BwF,EAAK,KAAK/D,WAClEzB,EAAE0B,QAAQM,UAAUozE,EAAWjzE,IAAM,EAAK2xE,gBAK5CmB,IAEA,EAAKpB,oBACL,EAAKzmB,OAAOsmB,QAAS,EAErB,EAAKE,mBACP,GACF,EAEA,EAKAgB,UAAA,SAAUX,GAGRA,EAAM1xE,YAAY,UAClB0xE,EAAMzxE,SAAS,SAAS9B,GAAG,mCAAmC,SAACwC,GAC7D+wE,EAAM1xE,YAAY,QACpB,GACF,EAAC,EA7a4B,CAASy4D,GCTzB,SAASsa,GAAanV,EAAgBhnD,GACnD,YADiE,IAAdA,IAAAA,EAAiBggD,EAAI73D,KAAK6X,QACtE,IAAIo8D,KAAKC,aAAar8D,GAAQkD,OAAO8jD,EAC9C,CCNA,IASqBsV,GAAkB,uFAyTpC,OAzToC,EACrCvzB,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKytD,OAASztD,KAAK0qB,MAAM+iC,OACzBztD,KAAK4hC,SAAW,CAAC,EAEjB5hC,KAAKyyE,eAAiB,IAAIjB,GAAexxE,KAAK+1E,qBAAqBrmC,KAAK1vC,KAAM,CAAEg2E,YAAY,EAAMC,mBAAmB,IACvH,EAAC,EAEDtxC,KAAA,WACE,IAAMluB,EAAQzW,KAAKytD,OAAOh3C,QAGpBy/D,EAAU1c,GAAAA,WAAAA,MAAqB,wCAAyC,CAC5E/iD,MAAAA,EACA5Q,MAAO,UAAMimB,UAAU,mBACvBqqD,eAAgB,UAAMrqD,UAAU,kBAAkB6pD,GAAal/D,MAG3Do5D,EAAc7vE,KAAKytD,OAAOyQ,WAAW2R,cACrCuG,EAAgB3/D,EAAQxT,KAAK4T,IAAIJ,EAAQzW,KAAKytD,OAAO5nD,MAAOgqE,GAAep5D,EAAQ,EAEzF,SAAS4/D,EAAYj0B,GACnB,IAAMjhD,EAAWd,EAAE+hD,EAAMqF,KACnB6uB,EAAW,CACf9zE,IAAK,IAAsB,IAAhB4zE,EAAsB,IACjCl0E,OAAwB,IAAhBk0E,EAAsB,IAC9B3pC,QAAS2pC,EAAgB,EAAI,GAG3Bh0B,EAAM/pB,MAAMk+C,SACdp1E,EAAS+7B,MAAK,GAAM75B,IAAI++C,EAAM/pB,MAAMk+C,UAAU3lC,QAAQ0lC,GAEtDn1E,EAASkC,IAAIizE,GAGfl0B,EAAM/pB,MAAMk+C,SAAWD,CACzB,CACA,IAAMxjC,EAAa,CAAC,qBAAsB,YAG1C,OAFI9yC,KAAK0qB,MAAMoB,WAAWgnB,EAAW59B,KAAKlV,KAAK0qB,MAAMoB,WAGnD,SAAKA,UAAWgnB,EAAW16B,KAAK,MAC9B,YAAQ0T,UAAU,yBAAyB,cAAY,YACpDoqD,EAAO,IAAGhW,GAAK,gBAGlB,SAAKp0C,UAAU,+BACb,SAAKA,UAAU,YACb,OAAGA,UAAU,iBAAiBw2B,QAAStiD,KAAKw2E,UAAU9mC,KAAK1vC,OACxDkgE,GAAK,0BAAyB,IAAG1G,GAAAA,WAAAA,MAAqB,gDAGzD,SAAK1tC,UAAU,sBACb,SAAKA,UAAU,oBACf,SAAKA,UAAU,mBACb,SAAKA,UAAU,iBACf,SAAKA,UAAU,iBACb,gBAASoqD,GACT,UAAMpqD,UAAU,2BAGpB,SAAKA,UAAU,mBAEf,SAAKA,UAAU,kBAAkBq2B,SAAUk0B,EAAa7zB,SAAU6zB,GAC/D7c,GAAAA,WAAAA,MAAqB,uCAAwC,CAAE/iD,MAAOo5D,MAI3E,OAAG/jD,UAAU,gBAAgBw2B,QAAStiD,KAAKusE,SAAS78B,KAAK1vC,OACtDkgE,GAAK,4BAA2B,IAAG1G,GAAAA,WAAAA,MAAqB,wCAMrE,EAAC,EAEDhX,SAAA,SAASJ,GAAO,WACd,YAAMI,SAAQ,UAACJ,GAEXpiD,KAAKytD,OAAO8nB,sBACdv1E,KAAKytD,OAAO8nB,qBAAsB,EAClCv1E,KAAKytD,OAAO+nB,YAAYv+C,MAAK,kBAAM,EAAK8+C,qBAAqB,CAAEnlC,SAAS,EAAMqlC,mBAAmB,GAAO,IAE5G,EAAC,EAED9zB,SAAA,SAASC,GAAO,WACd,YAAMD,SAAQ,UAACC,GAIf/hD,EAAE0B,QACChB,GAAG,SAAWf,KAAK4hC,SAAS60C,SAAWz2E,KAAKy2E,SAAS/mC,KAAK1vC,OAC1D02E,SAIH12E,KAAKK,EAAE,uBACJqvC,KAAK,QAAS1vC,KAAKsiD,QAAQ5S,KAAK1vC,OAIhC0vC,KAAK,kCAAkC,SAACnsC,GAAC,OAAKA,EAAEmC,gBAAgB,IAMnE1F,KAAK22E,UAAW,EAChB32E,KAAK42E,WAAa,EAClB52E,KAAK62E,WAAa,EAElB72E,KAAKK,EAAE,oBACJqvC,KAAK,uBAAwB1vC,KAAK82E,YAAYpnC,KAAK1vC,OAGnDyL,OAAM,SAAClI,GAAC,OAAKA,EAAEoC,iBAAiB,IAMnCtF,EAAEO,UACCG,GAAG,sBAAwBf,KAAK4hC,SAASm1C,YAAc/2E,KAAK+2E,YAAYrnC,KAAK1vC,OAC7Ee,GAAG,mBAAqBf,KAAK4hC,SAASo1C,UAAYh3E,KAAKg3E,UAAUtnC,KAAK1vC,OAEzE8C,YAAW,kBAAM,EAAK2vE,eAAerjD,OAAO,IAE5CpvB,KAAKytD,OAAO+nB,YAAYv+C,MAAK,kBAAM,EAAK8+C,qBAAqB,CAAEnlC,SAAS,EAAOqlC,mBAAmB,GAAO,GAC3G,EAAC,EAEDj1B,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEfpiD,KAAKyyE,eAAev1C,OACpB78B,EAAE0B,QAAQmQ,IAAI,SAAUlS,KAAK4hC,SAAS60C,UAEtCp2E,EAAEO,UAAUsR,IAAI,sBAAuBlS,KAAK4hC,SAASm1C,aAAa7kE,IAAI,mBAAoBlS,KAAK4hC,SAASo1C,UAC1G,EAEA,EAMAjB,qBAAA,SAAqBv1E,GAAc,gBAAP,IAAPA,IAAAA,EAAU,CAAC,GAC9B,IAAMqF,EAAQ7F,KAAKytD,OAAO5nD,MACpB4Q,EAAQzW,KAAKytD,OAAOh3C,QACpBukC,EAAUh7C,KAAKytD,OAAOzS,SAAW,EACjCi8B,EAAiBj3E,KAAKi3E,iBAEtBC,EAAYl3E,KAAKK,IACvB62E,EAAUr2E,KAAK,mBAAmB0P,KAAKolE,GAAa31E,KAAKytD,OAAO0pB,cAAcl0E,KAAKC,IAAI,EAAG2C,MAC1FqxE,EAAUr2E,KAAK,yBAAyB0P,KAAKvQ,KAAKytD,OAAOknB,aACzDuC,EAAU1xE,YAAY,WAAYxF,KAAKytD,OAAOzkC,YAE9C,IAAMouD,EAAU,CAAC,EAOjB,GANAA,EAAQxvC,OAAS3kC,KAAKC,IAAI,EAAG+zE,EAAepxE,MAAQ5C,KAAK4T,IAAIhR,EAAQ,EAAG4Q,EAAQukC,IAChFo8B,EAAQ9jE,OAASrQ,KAAK4T,IAAI,IAAMugE,EAAQxvC,OAAQqvC,EAAej8B,QAAUA,GACzEo8B,EAAQvvC,MAAQ,IAAMuvC,EAAQxvC,OAASwvC,EAAQ9jE,SAI1C9S,EAAQw1E,YAAch2E,KAAKytD,OAAOsmB,QAAY/zE,KAAKq3E,kBAAoB72E,EAAQy1E,mBAApF,CAEA,IAAM99C,EAAO33B,EAAQowC,QAAU,UAAY,MAC3C5wC,KAAKq3E,iBAAkB,EACvB,IAAMC,EAAoB,GAC1B,IAAK,IAAMC,KAAQH,EAAS,CAC1B,IAAMI,EAAQN,EAAUr2E,KAAK,aAAa02E,GAC1CD,EAAkBpiE,KAChBsiE,EACGt6C,MAAK,GAAM,GACX/E,GAAM,CAAEj2B,OAAQk1E,EAAQG,GAAQ,KAAO,QACvCxgD,WAKQ,YAAToB,GAAoBq/C,EAAMn0E,IAAI,WAAY,UAChD,CACAs8C,QAAQsF,IAAIqyB,GAAmBrgD,MAAK,kBAAO,EAAKogD,iBAAkB,CAAK,GAlBuC,CAmBhH,EAEA,EAGAb,UAAA,WACEx2E,KAAKytD,OAAO+oB,YACZx2E,KAAK+1E,qBAAqB,CAAEnlC,SAAS,EAAMqlC,mBAAmB,GAChE,EAEA,EAGA1J,SAAA,WACEvsE,KAAKytD,OAAO8e,WACZvsE,KAAK+1E,qBAAqB,CAAEnlC,SAAS,EAAMqlC,mBAAmB,GAChE,EAAC,EAEDQ,SAAA,WAGE,IAAMgB,EAAWz3E,KAAKK,IAChBq3E,EAAY13E,KAAKK,EAAE,uBAEzBq3E,EAAUr0E,IACR,aACAhD,EAAE0B,QAAQG,SACRu1E,EAAS31E,SAASU,IAClBnC,EAAE0B,QAAQM,YACVkN,SAASlP,EAAE,QAAQgD,IAAI,kBAAmB,KACzCo0E,EAASpG,cAAgBqG,EAAUrG,eAE1C,EAAC,EAEDyF,YAAA,SAAYvzE,GACVA,EAAEi8C,QAAS,EACXx/C,KAAK42E,WAAarzE,EAAEyhC,SAAWzhC,EAAEigC,cAAciC,QAAQ,GAAGT,QAC1DhlC,KAAK62E,WAAa72E,KAAKytD,OAAO5nD,MAC9B7F,KAAK22E,UAAW,EAChBt2E,EAAE,QAAQgD,IAAI,SAAU,QACxBrD,KAAKK,IAAImF,YAAY,WAAYxF,KAAK22E,SACxC,EAAC,EAEDI,YAAA,SAAYxzE,GACV,GAAKvD,KAAK22E,SAAV,CAMA,IAEMgB,IAFep0E,EAAEyhC,SAAWzhC,EAAEigC,cAAciC,QAAQ,GAAGT,SAAWhlC,KAAK42E,YACzC52E,KAAKK,EAAE,uBAAuBgxE,cAAiB,IACjDrxE,KAAKi3E,iBAAiBpxE,OAAS,EAC3D+xE,EAAW30E,KAAK4T,IAAI7W,KAAK62E,WAAac,EAAY33E,KAAKytD,OAAOh3C,QAAU,GAE9EzW,KAAKytD,OAAO5nD,MAAQ5C,KAAKC,IAAI,EAAG00E,GAChC53E,KAAK+1E,sBAZqB,CAa5B,EAAC,EAEDiB,UAAA,WAEE,GADAh3E,KAAKK,IAAImF,YAAY,WAAYxF,KAAK22E,UACjC32E,KAAK22E,SAAV,CAEA32E,KAAK42E,WAAa,EAClB52E,KAAK62E,WAAa,EAClB72E,KAAK22E,UAAW,EAChBt2E,EAAE,QAAQgD,IAAI,SAAU,IAExBrD,KAAKK,IAAIuC,YAAY,QAIrB,IAAMi1E,EAAW50E,KAAKwV,MAAMzY,KAAKytD,OAAO5nD,OACxC7F,KAAKytD,OAAOqqB,UAAUD,EAZI,CAa5B,EAAC,EAEDv1B,QAAA,SAAQ/+C,GAKN,IAAMw0E,EAAa/3E,KAAKK,EAAE,uBAEtB23E,IADkBz0E,EAAEkhC,OAASlhC,EAAEigC,cAAciC,QAAQ,GAAGhB,OAASszC,EAAWj2E,SAASU,IAAMnC,EAAE,QAAQgC,aACrE01E,EAAW1G,cAAiB,IAS5D4G,GAJJD,GAAgChuC,WAAW+tC,EAAWl3E,KAAK,oBAAoB,GAAGkS,MAAM7Q,QAAU,GAIhElC,KAAKi3E,iBAAiBpxE,MACxDoyE,EAAch1E,KAAKC,IAAI,EAAGD,KAAK4T,IAAI7W,KAAKytD,OAAOh3C,QAAU,EAAGwhE,IAC5Dj4E,KAAKytD,OAAOqqB,UAAU70E,KAAKwV,MAAMw/D,IACjCj4E,KAAK+1E,qBAAqB,CAAEnlC,SAAS,EAAMqlC,mBAAmB,IAE9Dj2E,KAAKK,IAAIuC,YAAY,OACvB,EAEA,EAUAq0E,eAAA,WACE,IAAMxgE,EAAQzW,KAAKytD,OAAOh3C,SAAW,EAC/BukC,EAAUh7C,KAAKytD,OAAOzS,SAAW,EAQjCk9B,EAAqB,GAAKl4E,KAAKK,EAAE,uBAAuBgxE,cAAiB,IACzE8G,EAAwBl1E,KAAKC,IAAI,IAAMuT,EAAOyhE,EAAoBl9B,GAGxE,MAAO,CACLn1C,MAHqB4Q,IAAUukC,EAAU,GAAK,IAAMm9B,EAAwBn9B,IAAYvkC,EAAQukC,GAIhGA,QAASm9B,EAEb,EAAC,EAzToC,CAAS9c,GCH3B+c,GAAa,uEACzB7c,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMoB,UAAYkyC,EAAUtzC,EAAMoB,UAAW,mBAC7CpB,EAAMm2C,cAAgB7C,EAAUtzC,EAAMm2C,cAAe,uBACvD,EAAC,kBAoCA,OApCA,EAEDM,UAAA,SAAU7rC,GAIR,IAAMxH,EAAa9tB,KAAKq4E,cAAc/iD,GAChCuuC,EAAcpiD,OAAOs+B,OAAO,CAAC,EAAa,MAAVjyB,OAAU,EAAVA,EAAYpD,OAGlD,OAFAm5C,EAAY/3C,UAAYkyC,EAAU6F,EAAY/3C,UAAW,8BAA+B9rB,KAAK0qB,MAAMk2C,iBAGjG,WACE,EAAC6C,GAAWI,EAAc/1C,EAAWwH,UACrC,YACExJ,UAAW,uCAAyC9rB,KAAK0qB,MAAMk2C,gBAC/D,gBAAc,OACd,aAAY5gE,KAAK0qB,MAAMs2C,sBACvB,cAAY,YAEXhhE,KAAK0qB,MAAMw1C,KAAOA,GAAKlgE,KAAK0qB,MAAMw1C,KAAM,CAAEp0C,UAAW,gBAAmB,KACxEo0C,GAAK,oBAAqB,CAAEp0C,UAAW,kBAIhD,EAEA,EAIUusD,cAAV,SAAwB/iD,GAGtB,IAFA,IAAIxH,EAAawH,EAEVxH,aAAsBpuB,OAAOouB,EAAaA,EAAW,GAE5D,OAAOA,CACT,EAAC,EA1C+B,CAAS3pB,ICM5B,SAAS,GAACiF,EAAOkvE,EAAY9nE,EAAU+nE,GAMrD,IAAIC,EACAC,GAAY,EAGZC,EAAW,EAGf,SAASC,IACJH,GACHrrE,aAAaqrE,EAEd,CAoBD,SAASI,IAAuB,2BAAZC,EAAY,yBAAZA,EAAY,gBAC/B,IAAI7rE,EAAOhN,KACP84E,EAAU7+D,KAAK+pB,MAAQ00C,EAO3B,SAAShvD,IACRgvD,EAAWz+D,KAAK+pB,MAChBxzB,EAASiD,MAAMzG,EAAM6rE,EACrB,CAMD,SAAS5kE,IACRukE,OAAY1lE,CACZ,CAhBG2lE,IAkBAF,IAAiBC,GAKpB9uD,IAGDivD,SAEqB7lE,IAAjBylE,GAA8BO,EAAU1vE,EAK3CsgB,KACyB,IAAf4uD,IAYVE,EAAY11E,WACXy1E,EAAetkE,EAAQyV,OACN5W,IAAjBylE,EAA6BnvE,EAAQ0vE,EAAU1vE,IAGjD,CAKD,MAvE0B,kBAAfkvE,IACVC,EAAe/nE,EACfA,EAAW8nE,EACXA,OAAaxlE,GAiEd8lE,EAAQG,OA1ER,WACCJ,IACAF,GAAY,CACZ,EA0EMG,CACP,CClGc,SAAS,GAACxvE,EAAO4vE,EAASxoE,GACxC,YAAoBsC,IAAbtC,EACJyoE,GAAS7vE,EAAO4vE,GAAS,GACzBC,GAAS7vE,EAAOoH,GAAsB,IAAZwoE,EAC7B,CCTc,SAASE,GAAa34E,EAASiQ,GAC5C,IAAMyvC,EAAU5/C,EAAE0B,QACZo3E,EAAiB94E,EAAEE,GAASuB,SAASU,IAAMy9C,EAAQ59C,YAEzDmO,IAEAyvC,EAAQ59C,UAAUhC,EAAEE,GAASuB,SAASU,IAAM22E,EAC9C,CClB2D,IAItCC,GAAe,WAuDlC,WAAYlb,EAAwBmb,QAAqB,IAArBA,IAAAA,EAAwB,IAAE,KA9C9Dnb,gBAAU,OAMV6V,QAAS,EAAK,KAEduF,iBAAmD,CAAC,EAAC,KACrDhG,aAAe,EAAC,KAEhBztE,MAAQ,EAAC,KACT26D,OAAS,EAAC,KAKVxlB,QAAU,EAAC,KACXg4B,aAAe,EAAC,KAChBI,WAAa,EAAC,KAEdQ,eAAgB,EAAK,KACrBH,aAAc,EAAK,KACnBC,WAA6E,KAAI,KAKjFiB,YAAc,GAAE,KAWhBY,qBAAsB,EAAK,KAE3BC,YAAoC,KAAI,KAExCnF,cAAQ,OACRkE,kBAAY,EAGVv0E,KAAKk+D,WAAaA,EAElBl+D,KAAKqwE,SAAW4I,GAAS,IAAKj5E,KAAKu5E,WACnCv5E,KAAKu0E,aAAe0E,GAAS,IAAKj5E,KAAKw5E,eAEvCx5E,KAAK0M,KAAK2sE,EACZ,CAEA,kBAuRC,OAvRD,EAIAllE,OAAA,WACE,OAAKnU,KAAK4yE,cAEV5yE,KAAKozE,WAAapzE,KAAKyW,QAEhBzW,KAAKy5E,UAAUz5E,KAAKgzE,aAAchzE,KAAKozE,aAJfzzB,QAAQhpB,SAKzC,EAEA,EAGA6/C,UAAA,WACE,OAAOx2E,KAAK83E,UAAU,EACxB,EAEA,EAGAvL,SAAA,WACE,OAAOvsE,KAAK83E,UAAU93E,KAAKyW,QAAU,GAAG,EAC1C,EAEA,EAKA2xD,WAAA,SAAW5H,EAA0BkZ,GAGnC,QAH8C,IAAXA,IAAAA,GAAc,GAGlC,UAAXlZ,EAAoB,CACtB,IAAMmZ,EAAgB35E,KAAKusE,WAE3B,OADAvsE,KAAK0zE,WAAa,KAAM1zE,KAAK0zE,WAAU,CAAwBI,OAAO,IAC/D6F,CACT,CAgBA,OAdA35E,KAAK+zE,QAAS,EAEd/zE,KAAKw1E,YAAcx1E,KAAK45E,eAAepZ,GAEvCxgE,KAAKyzE,aAAc,EACnBzzE,KAAK0zE,WAAa,CAAElT,OAAAA,GACpBxgE,KAAK4zE,eAAiB8F,EACtB15E,KAAKwgE,OAASA,EAOPxgE,KAAKw1E,YAAYv+C,MAAK,kBAAMjiB,EAAEwqC,QAAQ,GAC/C,EAEA,EAGAs4B,UAAA,SAAUjyE,EAAe6zE,GAYvB,YAZkC,IAAXA,IAAAA,GAAc,GACrC15E,KAAK+zE,QAAS,EAEd/zE,KAAKw1E,YAAcx1E,KAAK65E,cAAch0E,GAEtC7F,KAAKyzE,aAAc,EACnBzzE,KAAK0zE,WAAa,CAAE7tE,MAAAA,GACpB7F,KAAK4zE,eAAiB8F,EACtB15E,KAAK6F,MAAQA,EAEbmP,EAAEwqC,SAEKx/C,KAAKw1E,WACd,EAEA,EAKAoE,eAAA,SAAepZ,GACb,OAAIxgE,KAAK6yE,QAAQvxB,MAAK,SAAC6mB,GAAI,OAAKA,GAAQ3rD,OAAO2rD,EAAK3H,YAAchkD,OAAOgkD,EAAO,IACvE7gB,QAAQhpB,WAGjB32B,KAAKgxB,QAEEwoC,GAAAA,MAAAA,KACS,QAAS,CACrB1yD,OAAQ,CAAEo3D,WAAYl+D,KAAKk+D,WAAWv0C,MACtCmwD,KAAM,CAAEC,KAAMvZ,KAEfvpC,KAAKj3B,KAAK0M,KAAKgjC,KAAK1vC,OACzB,EAEA,EAKA65E,cAAA,SAAch0E,GACZ,GAAIA,GAAS7F,KAAKgzE,cAAgBntE,EAAQ7F,KAAKozE,WAC7C,OAAOzzB,QAAQhpB,UAGjB,IAAMvH,EAAQpvB,KAAKm3E,cAActxE,EAAQuzE,EAAgBY,UAAY,GAC/DxnE,EAAM4c,EAAQgqD,EAAgBY,UAIpC,OAFAh6E,KAAKgxB,MAAM5B,EAAO5c,GAEXxS,KAAKy5E,UAAUrqD,EAAO5c,GAAKykB,KAAKj3B,KAAK0M,KAAKgjC,KAAK1vC,MACxD,EAEA,EAGAu5E,UAAA,WACE,IAAMnqD,EAAQpvB,KAAKozE,WACb5gE,EAAOxS,KAAKozE,WAAapzE,KAAKm3E,cAAcn3E,KAAKozE,WAAagG,EAAgBY,WAI9EC,EAAe7qD,EAAoC,EAA5BgqD,EAAgBY,UACzCC,EAAej6E,KAAKgzE,cAAgBiH,GAAgB,IACtDj6E,KAAKgzE,aAAeiH,EAAeb,EAAgBY,UAAY,EAE3Dh6E,KAAKs5E,iBAAiBW,KACxB9sE,aAAanN,KAAKs5E,iBAAiBW,WAC5Bj6E,KAAKs5E,iBAAiBW,GAC7Bj6E,KAAKszE,iBAITtzE,KAAKk6E,SAAS9qD,EAAO5c,EACvB,EAEA,EAGAgnE,cAAA,WACE,IAAMhnE,EAAMxS,KAAKgzE,aACX5jD,EAASpvB,KAAKgzE,aAAehzE,KAAKm3E,cAAcn3E,KAAKgzE,aAAeoG,EAAgBY,WAIpFC,EAAe7qD,EAAoC,EAA5BgqD,EAAgBY,UACzCC,EAAej6E,KAAKozE,YAAc6G,GAAgBj6E,KAAKyW,UACzDzW,KAAKozE,WAAa6G,EAEdj6E,KAAKs5E,iBAAiBW,KACxB9sE,aAAanN,KAAKs5E,iBAAiBW,WAC5Bj6E,KAAKs5E,iBAAiBW,GAC7Bj6E,KAAKszE,iBAITtzE,KAAKk6E,SAAS9qD,EAAO5c,GAAK,EAC5B,EAEA,EAGA0nE,SAAA,SAAS9qD,EAAe5c,EAAa2nE,GAAmB,gBAAV,IAATA,IAAAA,GAAY,GAC/Cn6E,KAAKszE,eAEL,IAAM9zB,EAAS,WACTpwB,EAAQ,EAAK4jD,cAAgBxgE,EAAM,EAAK4gE,YAG5C8F,GAAa,iCADOiB,EAAY,EAAK/G,WAAa,EAAI,EAAKJ,cACH,KAAMh+D,EAAEwqC,OAAOD,KACzE,EACAC,IAEAx/C,KAAKs5E,iBAAiBlqD,GAAStsB,YAC7B,WACE,EAAK22E,UAAUrqD,EAAO5c,GAAKykB,MAAK,WAC9BuoB,IACA,EAAK8zB,cACP,WACO,EAAKgG,iBAAiBlqD,EAC/B,GACApvB,KAAKszE,aAAe,EAAI,IAAO,EAEnC,EAEA,EAIAmG,UAAA,SAAUrqD,EAAe5c,GACvB,IAAM4nE,EAAoB,GACpBtS,EAAiB,GAevB,OAbA9nE,KAAKk+D,WACF4U,UACAv9D,MAAM6Z,EAAO5c,GACbmE,SAAQ,SAACgT,GACR,IAAMw+C,EAAO3O,GAAAA,MAAAA,QAAwB,QAAS7vC,GAE1Cw+C,GAAQA,EAAKjK,mBAA0C,IAAnBiK,EAAKkS,UAC3CvS,EAAO5yD,KAAKizD,GAEZiS,EAAQllE,KAAKyU,EAEjB,IAEEywD,EAAQ31E,OACH+0D,GAAAA,MAAAA,KAAuB,QAAS4gB,GAASnjD,MAAK,SAACqjD,GACpD,OAAOxS,EAAO3nE,OAAOm6E,GAAU5kE,MAAK,SAAChM,EAAGE,GAAC,OAAKF,EAAE82D,SAAW52D,EAAE42D,QAAQ,GACvE,IAGK7gB,QAAQhpB,QAAQmxC,EACzB,EAEA,EAGAp7D,KAAA,SAAKmmE,GAAe,MAClB7yE,KAAKgzE,aAAeH,EAAMpuE,OAASzE,KAAKk+D,WAAW4U,UAAU5xD,QAAqB,OAAd,EAAC2xD,EAAM,GAAGlpD,MAAI,EAAI,KAAO,EAC7F3pB,KAAKozE,WAAapzE,KAAKm3E,cAAcn3E,KAAKgzE,aAAeH,EAAMpuE,OACjE,EAEA,EAIAusB,MAAA,SAAM5B,EAAgB5c,GACpBxS,KAAKgzE,aAAe5jD,GAAS,EAC7BpvB,KAAKozE,WAAapzE,KAAKm3E,cAAc3kE,GAAO4mE,EAAgBY,UAC9D,EAEA,EAGAnH,MAAA,WACE,OAAO7yE,KAAKk+D,WACT4U,UACAv9D,MAAMvV,KAAKgzE,aAAchzE,KAAKozE,YAC9BxrE,KAAI,SAAC+hB,GACJ,IAAMw+C,EAAO3O,GAAAA,MAAAA,QAAwB,QAAS7vC,GAE9C,OAAOw+C,GAAQA,EAAKjK,mBAA0C,IAAnBiK,EAAKkS,UAA4BlS,EAAO,IACrF,GACJ,EAEA,EAGA1xD,MAAA,WACE,OAAOzW,KAAKk+D,WAAW4U,UAAUruE,MACnC,EAEA,EAIAukB,SAAA,WACE,OAAOhpB,KAAKg7C,SAAWh7C,KAAKyW,OAC9B,EAEA,EAGAm8D,WAAA,WAME,OAAO3vE,KAAKuV,IAAIxY,KAAKyW,QAAUzW,KAAKozE,aAAe,CACrD,EAEA,EAIA+D,cAAA,SAActxE,GACZ,OAAO5C,KAAKC,IAAI,EAAGD,KAAK4T,IAAI7W,KAAKyW,QAASxT,KAAKwV,MAAM5S,IACvD,EAAC,EAvViC,GAAfuzE,GAIZY,UAAY,GCarB,IAIqBtO,GAAc,mGAgBW,OAhBX,0CAIvBxN,WAAgC,KAAI,EAKpCzQ,OAAiC,KAAI,EAKrCssB,KAAe,EAAC,EAEhBje,6BAA8B,EAAI,EAhBX,OAgBW,kBA2O3C,OA3O2C,EAE5CvZ,OAAA,SAAOH,GAY0D,QAX/D,YAAMG,OAAM,UAACH,GAEbpiD,KAAK0jC,QASD81B,GAAAA,YAAAA,YAA8BA,GAAAA,YAAAA,eACxB,OAAR,EAAAA,GAAAA,OAAA,EAAU1nD,SACF,OAAR,EAAA0nD,GAAAA,OAAA,EAAU7sD,QAGZ3M,KAAK47D,UAAY,iBACnB,EAAC,EAED5a,SAAA,SAASoB,GAA4C,UACnD,YAAMpB,SAAQ,UAACoB,GAMP,OAAR,EAAAoX,GAAAA,OAAA,EAAUznD,WAEN/R,KAAKk+D,aAAc1E,GAAAA,SAAAA,iBAA8Bx5D,KAAKk+D,aAA4B,OAAb,EAAC1E,GAAAA,WAAoB,OAAR,EAAZ,EAAckO,SAAd,EAAsBtxC,UAG9FojC,GAAAA,SAAAA,WAFAA,GAAAA,SAAAA,MAIJ,EAAC,EAED70B,KAAA,WACE,OACE,SAAK7Y,UAAU,kBACb,EAAC+kD,GAAkB,CAACx4C,MAAOmhC,GAAAA,cAC3B,SAAK1tC,UAAU,6BAA6B9rB,KAAKk+D,WAAal+D,KAAKu6E,cAAct3D,UAAYjjB,KAAKw6E,eAAev3D,WAGvH,EAEA,EAGAu3D,aAAA,WACE,IAAM7c,EAAQ,IAAIlB,EAIlB,OAFAkB,EAAM7kD,IAAI,UAAW,EAAC4pD,GAAgB,MAAK,KAEpC/E,CACT,EAEA,EAGA8c,QAAA,WACE,OACE,SAAK3uD,UAAU,sBACb,YAAK0xC,EAAUx9D,KAAK06E,eAAez3D,YAGzC,EAEA,EAGA03D,KAAA,WACE,OAAO,EAAC1c,EAAc,CAACC,WAAYl+D,KAAKk+D,YAC1C,EAEA,EAGAqc,YAAA,WACE,IAAM5c,EAAQ,IAAIlB,EAKlB,OAHAkB,EAAM7kD,IAAI,OAAQ9Y,KAAK26E,OAAQ,KAC/Bhd,EAAM7kD,IAAI,OAAQ,SAAKgT,UAAU,aAAa9rB,KAAK46E,cAAc33D,WAAkB,IAE5E06C,CACT,EAEA,EAGAid,YAAA,WACE,IAAMjd,EAAQ,IAAIlB,EAYlB,OAVAkB,EAAM7kD,IAAI,UAAW9Y,KAAKy6E,UAAW,KAErC9c,EAAM7kD,IACJ,aACA,SAAKgT,UAAU,yBACb,EAAC0mD,GAAU,CAACtU,WAAYl+D,KAAKk+D,WAAYzQ,OAAQztD,KAAKytD,OAAQqnB,iBAAkB90E,KAAK66E,gBAAgBnrC,KAAK1vC,SAE5G,IAGK29D,CACT,EAEA,EAGAj6B,KAAA,WACE,IAAMo3C,EAAsBthB,GAAAA,uBAC5B,GAAIshB,EAKFh4E,WAAW9C,KAAK0M,KAAKgjC,KAAK1vC,KAAM86E,GAAsB,OACjD,CACL,IAAM79B,EAASj9C,KAAK+pE,gBAEpBvQ,GAAAA,MAAAA,KAA2B,cAAexkD,EAAEwrC,MAAM3L,MAAM,MAAOoI,GAAQhmB,KAAKj3B,KAAK0M,KAAKgjC,KAAK1vC,MAC7F,CAEAgV,EAAEwqC,QACJ,EAEA,EAIAuqB,cAAA,WACE,MAAO,CACLgR,QAAQ,EACRjB,KAAM,CAAEC,KAAM/5E,KAAK+5E,MAEvB,EAEA,EAGArtE,KAAA,SAAKwxD,GAAiD,eACpD1E,GAAAA,QAAAA,KAAiB,aAAc0E,EAAW/0D,SAC1CqwD,GAAAA,SAAa0E,EAAW/0D,SACxBqwD,GAAAA,cAAkB,GASlB,IAAI6f,EAAwB,GAC5B,GAAInb,EAAWrc,SAAWqc,EAAWrc,QAAQm5B,SAAU,CACrD,IAAMC,EAAe/c,EAAWv0C,KAEhC0vD,EAAgBnb,EAAWrc,QAAQm5B,SAChCl0E,QACC,SAACmuD,GAAM,MACW,UAAhBA,EAAOjwD,MACPiwD,EAAOgT,eACPhT,EAAOgT,cAAc/J,aACpBx+D,MAAMU,QAAQ60D,EAAOgT,cAAc/J,WAAWv8D,OAC/CszD,EAAOgT,cAAc/J,WAAWv8D,KAAKgoB,KAAOsxD,CAAY,IAI3DrzE,KAAI,SAACqtD,GAAM,OAAKuE,GAAAA,MAAAA,QAAwB,QAASvE,EAAOtrC,GAAG,IAC3DjU,MAAK,SAAChM,EAASE,GAAO,OAAKF,EAAE82D,SAAW52D,EAAE42D,QAAQ,IAClDjrD,MAAM,EAAG,GACd,CAKAvV,KAAKytD,OAAS,IAAI2rB,GAAgBlb,EAAYmb,GAC9C,IAAM6B,EAAelmE,EAAEwrC,MAAM3L,MAAM,QAC7BsmC,EAA6B,UAAjBD,EAA2B,QAAU3rE,SAAS2rE,GAChEl7E,KAAKytD,OAAO2a,WAAW+S,IAAwC,OAA/B,EAAqB,OAArB,EAAK9B,EAAc,SAAE,EAAhB,EAAkB7Y,UAAQ,EAAI,IAAI,GAAMvpC,MAAK,WAChF,EAAKinC,WAAaA,EAElB1E,GAAAA,QAAAA,IAAgB,aAAc0E,GAC9B1E,GAAAA,QAAAA,IAAgB,SAAU,EAAK/L,OACjC,GACF,EAEA,EAGAitB,aAAA,WACE,IAAM/c,EAAQ,IAAIlB,EAmBlB,OAjBIz8D,KAAKk+D,YACPP,EAAM7kD,IACJ,WACA,EAACs/D,GAAa,CACZlY,KAAK,oBACLp0C,UAAU,qBACV80C,gBAAgB,kBAChBI,sBAAuBxH,GAAAA,WAAAA,MAAqB,oEAE3C2U,GAAmB5F,SAASvoE,KAAKk+D,WAAYl+D,MAAMijB,WAEtD,KAIJ06C,EAAM7kD,IAAI,WAAY,EAACg9D,GAAkB,CAACroB,OAAQztD,KAAKytD,OAAQ3hC,UAAU,sBAAwB,KAE1F6xC,CACT,EAEA,EAIAkd,gBAAA,SAAgBjG,EAAqBC,GACnC,IAAM3W,EAAal+D,KAAKk+D,WAExB,GAAKA,EAAL,CAIA,IAAMrnB,EAAM2iB,GAAAA,MAAAA,WAAqB0E,EAAal+D,KAAK+5E,KAAOnF,GAE1D7yE,OAAOu+C,QAAQC,aAAa,KAAM3/C,SAASuI,MAAO0tC,GAClD2iB,GAAAA,QAAAA,KAAiB,aAAc0E,EAAW/0D,SAItCqwD,GAAAA,QAAAA,MAAoBqb,GAAa3W,EAAWoR,sBAAwB,KACtEpR,EAAWgK,KAAK,CAAEoH,mBAAoBuF,IACtC7/D,EAAEwqC,SAbmB,CAezB,EAAC,EA3PgC,CAA0Emc,GCnBxFyf,GAAa,uFAY/B,OAZ+B,EAChCz2C,KAAA,WACE,OAAO,QAAI7Y,UAAU,mBAAmB0xC,EAAUx9D,KAAK29D,QAAQ16C,WACjE,EAEA,EAKA06C,MAAA,WACE,OAAO,IAAIlB,CACb,EAAC,EAZ+B,CAASpB,GCQtBggB,GAAU,8DA0B5B,OA1B4B,SACtB9f,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMgsB,OAAS12C,KAAKmF,SAASulB,QACT5X,IAAhB4X,EAAMw/B,QAAqBx/B,EAAMw/B,OAAQ,EAC/C,EAAC,YAEDvlB,KAAA,SAAKyd,GACH,IAAMke,EAAO,EAAH,UAAS37B,KAAI,UAACyd,GAMxB,OAJAke,EAAKl0C,IAAMi2B,EACXie,EAAK51C,MAAMgsB,OAASv+B,OAAOmoD,EAAK51C,MAAMgsB,eAC/B4pB,EAAK51C,MAAM1lB,KAEXs7D,CACT,EAEA,EAMOn7D,SAAP,SAAgBulB,GAAO,QACrB,YAA+B,IAAjBA,EAAMgsB,OAAyBhsB,EAAMgsB,QAAsB,OAAb,EAAA1hC,EAAEwrC,MAAMjkC,YAAK,EAAb,EAAexQ,MAAM,KAAK,OAAiB,OAAf,EAAK2e,EAAM0F,WAAI,EAAV,EAAYrkB,MAAM,KAAK,GACtH,EAAC,EA1B4B,CAAS03D,ICCnB6X,GAAe,uEAC3B/f,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMoB,UAAY,kBAClBpB,EAAMk2C,gBAAkB,mCACxBl2C,EAAMm2C,cAAgB,uBAEtBn2C,EAAMs2C,sBAAwBX,GAAY7G,GAAAA,WAAAA,MAAqB,uDACjE,EAAC,kBAwDA,OAxDA,EAED70B,KAAA,SAAKyd,GACH,OAAO,EAAP,UAAazd,KAAI,eAAMyd,EAAO,CAAA9sB,SAAUt1B,KAAK29D,QAAQ16C,YACvD,EAAC,EAED4+C,iBAAA,WACE,IAAM/U,EAAO0M,GAAAA,QAAAA,KAEb,MAAO,CAACiF,EAAO3R,GAAO,IAAK,UAAMhhC,UAAU,gBAAgB0vB,GAASsR,IACtE,EAEA,EAGA6Q,MAAA,WACE,IAAMA,EAAQ,IAAIlB,EACZ3P,EAAO0M,GAAAA,QAAAA,KAsCb,OApCAmE,EAAM7kD,IACJ,UACA,EAACuiE,GAAU,CAACnb,KAAK,cAAc9vC,KAAMopC,GAAAA,MAAAA,KAAe1M,IACjD0M,GAAAA,WAAAA,MAAqB,qCAExB,KAGFmE,EAAM7kD,IACJ,WACA,EAACuiE,GAAU,CAACnb,KAAK,aAAa9vC,KAAMopC,GAAAA,MAAU,aAC3CA,GAAAA,WAAAA,MAAqB,sCAExB,IAGEA,GAAAA,MAAAA,UAAoB,aACtBmE,EAAM7kD,IACJ,iBACA,EAACuiE,GAAU,CAACnb,KAAK,gBAAgB9vC,KAAMopC,GAAAA,MAAAA,UAAoB,YAAa74D,OAAO,UAC5E64D,GAAAA,WAAAA,MAAqB,mCAExB,GAIJmE,EAAM7kD,IAAI,YAAa,EAAC,EAAS,OAAM,IAEvC6kD,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,sBAAsB5d,QAASkX,GAAAA,QAAAA,OAAAA,KAAwBA,GAAAA,UACjEA,GAAAA,WAAAA,MAAqB,sCAEvB,KAGImE,CACT,EAAC,EAjEiC,CAA4Ex5D,ICHhH,SAASgB,GAASi9C,GAChB,IAAKA,GAA0B,iBAAVA,GAAsBA,aAAiB1iD,MAAO,OAAO,EAE1E,IAAM0sB,EAAMg2B,EAAMh2B,IAGlB,OAAmB,iBAARA,GAA4B,MAARA,GAAuB,WAARA,KAE1B,iBAARA,GAAmC,mBAARA,KAAuB,cAAeA,IAC1EA,EAAoCmvC,UAAUnZ,EAAM13B,OAGhC,iBAAR0B,GAAmC,mBAARA,KAAuB,aAAcA,GAA2Cg2B,EAAM13B,MAAMgsB,OAAhDtqB,EAAYjnB,SAASi9C,EAAM13B,OACnH,CAMA,IAKqB6wD,GAAc,8DAiBhC,OAjBgC,SAC1BhgB,UAAP,SAAiB7wC,GACA,MAAfA,EAAMq2C,YAANr2C,EAAMq2C,UAAc,eAEpB,EAAMxF,UAAS,UAAC7wC,GAEhBA,EAAMoB,UAAYkyC,EAAUtzC,EAAMoB,UAAW,mBAC/C,EAAC,YAED+1C,iBAAA,SAAiBvsC,GACf,IAAMkmD,EAAclmD,EAASz0B,KAAKsE,IAC9B27D,EAAS0a,GAAsC,iBAAhBA,GAA4B,aAAcA,GAAeA,EAAYlmD,UAAat1B,KAAK0qB,MAAM+wD,aAKhI,OAFI/7E,MAAMU,QAAQ0gE,KAAQA,EAAQA,EAAM,IAEjC,CAAC,UAAMh1C,UAAU,gBAAgBg1C,GAAe9gE,KAAK0qB,MAAMq2C,UAAYb,GAAKlgE,KAAK0qB,MAAMq2C,UAAW,CAAEj1C,UAAW,iBAAoB,KAC5I,EAAC,EAjBgC,CAA0E3nB,ICU/Eu3E,GAAK,WA2BjC,WAAY/5E,EAAsBg6E,QAAP,IAAfh6E,IAAAA,EAAkB,CAAC,QAAQ,IAALg6E,IAAAA,EAAQniB,EAAImiB,OAAK,KAvBnDh6E,KAAkB,CAAC,EAAC,KAOpBqsE,UAAkB,IAAI/zD,KAAM,KAK5B2hE,QAAkB,EAAK,KAKbD,WAAK,EAOb37E,KAAK2B,KAAOA,EACZ3B,KAAK27E,MAAQA,CACf,CAEA,kBA4SC,OA5SD,EAKAhyD,GAAA,WACE,MAAO,OAAQ3pB,KAAK2B,KAAO3B,KAAK2B,KAAKgoB,QAAK7W,CAC5C,EAEA,EAKAswD,UAAS,+GAAT,SAAuBA,GAAsB,QAC3C,OAAgB,OAAhB,EAAOpjE,KAAK2B,OAAgB,OAAZ,EAAT,EAAWuG,iBAAF,EAAT,EAAwBk7D,EACjC,IAEA,EAKAqJ,SAAA,SAAS9qE,GASP,GARI,OAAQA,IACT3B,KAAK2B,KAAwBgoB,GAAKhoB,EAAKgoB,IAGtC,SAAUhoB,IACZ3B,KAAK2B,KAAKqD,KAAOrD,EAAKqD,MAGpB,eAAgBrD,EAAM,OAKxB,IAAK,IAAMmL,KAJX,EAAA9M,KAAK2B,MAAKuG,aAAV,EAAUA,WAAe,CAAC,GAIRvG,EAAKuG,WAAY,CACjC,IAAMhI,EAAMyB,EAAKuG,WAAW4E,GACxB5M,GAAOA,aAAew7E,IACxBrY,GAAuB,kGAAmG,eACnH1hE,EAAKuG,WAAW4E,GACvBnL,EAAKsmE,gBAALtmE,EAAKsmE,cAAkB,CAAC,GACxBtmE,EAAKsmE,cAAcn7D,GAAO,CAAEnL,KAAM+5E,EAAMG,cAAc37E,IAE1D,CAEAuhB,OAAOs+B,OAAO//C,KAAK2B,KAAKuG,WAAYvG,EAAKuG,WAC3C,CAEA,GAAI,kBAAmBvG,EAAM,OACrBsmE,EAAuC,OAA1B,EAAGjoE,KAAK2B,KAAKsmE,eAAa,EAAI,CAAC,EAKlD,IAAK,IAAMrwD,KAAKjW,EAAKsmE,cAAe,CAClC,IAAM6T,EAAen6E,EAAKsmE,cAAcrwD,GAExC,GAAqB,OAAjBkkE,EAAJ,CAMA,IAAI30D,EAEFA,EADE20D,aAAwBJ,EACb,CAAE/5E,KAAM+5E,EAAMG,cAAcC,IAChCA,aAAwBp8E,MACpB,CAAEiC,KAAMm6E,EAAal0E,IAAI8zE,EAAMG,gBAE/BC,EAGfn6E,EAAKsmE,cAAcrwD,GAAKuP,EACxB8gD,EAAcrwD,GAAKuP,CAZnB,aAHS8gD,EAAcrwD,UACdjW,EAAKsmE,cAAcrwD,EAe9B,CAEA5X,KAAK2B,KAAKsmE,cAAgBA,CAC5B,CAMA,OAFAjoE,KAAKguE,UAAY,IAAI/zD,KAEdja,IACT,EAEA,EAKA+7E,eAAA,SAAe7zE,GACblI,KAAKysE,SAAS,CAAEvkE,WAAAA,GAClB,EAEA,EAMAggE,KAAA,SACEhgE,EACA1H,GACkC,gBADuD,IAAzFA,IAAAA,EAA4F,CAAC,GAE7F,IAAMmB,EAAoC,CACxCqD,KAAMhF,KAAK2B,KAAKqD,KAChBkD,WAAAA,GAUF,GAPI,OAAQlI,KAAK2B,OACfA,EAAKgoB,GAAK3pB,KAAK2B,KAAKgoB,IAMlBzhB,EAAW+/D,cAAe,CAG5B,IAAK,IAAMn7D,KAFXnL,EAAKsmE,cAAgB,CAAC,EAEJ//D,EAAW+/D,cAAe,CAC1C,IAAM+T,EAAQ9zE,EAAW+/D,cAAcn7D,GAEzB,OAAVkvE,IAEJr6E,EAAKsmE,cAAcn7D,GAAO,CACxBnL,KAAMq6E,aAAiBt8E,MAAQs8E,EAAMp0E,IAAI8zE,EAAMG,eAAiBH,EAAMG,cAAcG,IAExF,QAEO9zE,EAAW+/D,aACpB,CAKA,IAAMgU,EAAUj8E,KAAKk8E,WAErBl8E,KAAKysE,SAAS9qE,GAEd,IAAMmhD,EAAU,CACdnhD,KAAAA,EACAw6E,KAAM37E,EAAQ27E,WAAQrpE,GAGxB,OAAO0mD,EAAAA,QACG,GACN1iC,OAAQ92B,KAAK47E,OAAS,QAAU,OAChC/kC,IAAK2iB,EAAI2J,MAAMC,UAAU,UAAYpjE,KAAKo8E,cAC1Cj5E,KAAM2/C,GACHtiD,IAEJy2B,MAIC,SAAC4qB,GACC,OAAO,EAAK85B,MAAMU,YAAkBx6B,EACtC,IAIA,SAAC7gB,GAGC,MAFA,EAAKyrC,SAASwP,GACdjnE,EAAEwqC,SACIxe,CACR,GAEN,EAEA,SAKA,SAAO79B,EAA+C3C,GAAsE,WAC1H,YAD6C,IAAxC2C,IAAAA,EAA2C,CAAC,QAAmD,IAAhD3C,IAAAA,EAAmD,CAAC,GACnGR,KAAK47E,OAEHpiB,EAAAA,QACI,GACP1iC,OAAQ,SACR+f,IAAK2iB,EAAI2J,MAAMC,UAAU,UAAYpjE,KAAKo8E,cAC1Cj5E,KAAAA,GACG3C,IAEJy2B,MAAK,WACJ,EAAK2kD,QAAS,EAEd,EAAKD,MAAM92E,OAAO,EACpB,IAbuB86C,QAAQhpB,SAcnC,EAEA,EAGUylD,YAAV,WACE,MAAO,IAAMp8E,KAAK2B,KAAKqD,MAAQ,OAAQhF,KAAK2B,KAAO,IAAM3B,KAAK2B,KAAKgoB,GAAK,GAC1E,EAAC,EAESuyD,SAAV,WACE,OAAOx/C,KAAK3iB,MAAM2iB,KAAKwwB,UAAUltD,KAAK2B,MACxC,EAAC,EAIS26E,gBAAV,SAAsDR,GAAuE,QAC3H,OAA8B,OAA9B,EAAO97E,KAAK2B,KAAKsmE,gBAA6B,OAAhB,EAAvB,EAA0B6T,SAAH,EAAvB,EAAyCn6E,IAClD,EAEA,EAOOyhE,UAAP,SAAiCvwD,EAAc0pE,GAC7C,OAAO,WACL,OAAIA,EACKA,EAAUv8E,KAAKojE,UAAUvwD,IAG3B7S,KAAKojE,UAAUvwD,EACxB,CACF,EAEA,EAUO2pE,OAAP,SAA+B3pE,GAC7B,OAAO,WAAuB,QACtB4pE,EAA0C,OAA1B,EAAGz8E,KAAK2B,KAAKsmE,gBAAqB,OAAR,EAAvB,EAA0Bp1D,SAAH,EAAvB,EAAiClR,KAE1D,GAAI86E,GAAoBA,aAA4B/8E,MAClD,MAAM,IAAImM,MAAM,gBAAgBgH,EAAI,aAAa7S,KAAK2B,KAAKqD,KAAI,iEAGjE,QAAIy3E,GACKz8E,KAAK27E,MAAM3vD,QAAWywD,EAAiBz3E,KAAMy3E,EAAiB9yD,GAIzE,CACF,EAEA,EAQO+yD,QAAP,SAAgC7pE,GAC9B,OAAO,WAAuB,eACtB4pE,EAA0C,OAA1B,EAAGz8E,KAAK2B,KAAKsmE,gBAAqB,OAAR,EAAvB,EAA0Bp1D,SAAH,EAAvB,EAAiClR,KAE1D,GAAI86E,KAAsBA,aAA4B/8E,OACpD,MAAM,IAAImM,MAAM,gBAAgBgH,EAAI,aAAa7S,KAAK2B,KAAKqD,KAAI,oEAGjE,QAAIy3E,GACKA,EAAiB70E,KAAI,SAACjG,GAAI,OAAK,EAAKg6E,MAAM3vD,QAAWrqB,EAAKqD,KAAMrD,EAAKgoB,GAAG,GAInF,CACF,EAEA,EAOOgzD,cAAP,SAAqB51E,GACnB,OAAgB,MAATA,EAAgB,IAAIkT,KAAKlT,GAASA,CAC3C,EAEA,EAIiB80E,cAAjB,SAA+BG,GAC7B,OAAKA,GAAW,OAAQA,EAAMr6E,KAEvB,CACLqD,KAAMg3E,EAAMr6E,KAAKqD,KACjB2kB,GAAIqyD,EAAMr6E,KAAKgoB,IAJ2B,IAM9C,EAAC,EA5UgC,GCtCpB,SAASkf,KAA4F,2BAAlEvvB,EAAI,yBAAJA,EAAI,gBACpD,IAIIsjE,EAJE18D,EAAO5G,EAAK/D,MAAM,GAAI,GACtBsnE,EAAUvjE,EAAK/D,OAAO,GAAG,GAEzBunE,EAA2C,CAAC,EAGlD,OAAO,WAAmB,WACpBC,GAAY,EAqBhB,OAjBA78D,EAAKvJ,SAAQ,SAAC7J,GACZ,IAAMxI,EAAQ,EAAmDwI,GAC3D/F,EAAwB,mBAATzC,EAAsBA,EAAKvE,KAAK,GAAQuE,EAEzDw4E,EAAgBhwE,KAAS/F,IAC3Bg2E,GAAY,EACZD,EAAgBhwE,GAAO/F,EAE3B,IAEIg2E,IACFH,EAAgBC,EAAQppE,MACtBzT,KACAkgB,EAAKtY,KAAI,SAACkF,GAAG,OAAKgwE,EAAgBhwE,EAAI,MAInC8vE,CACT,CACF,CChCe,SAASI,GAAOC,GAG7B,IAAKA,GAAYA,EAASx4E,OAAS,EACjC,OAAO,EAGT,IAAIy4E,EAAaD,EAASt5E,QAAQ,IAAK,IAavC,OAX0B,IAAtBu5E,EAAWz4E,SACby4E,GAAcA,IAMC,IAHP3tE,SAAS2tE,EAAW3nE,MAAM,EAAG,GAAI,IAGhB,IAFjBhG,SAAS2tE,EAAW3nE,MAAM,EAAG,GAAI,IAEN,IAD3BhG,SAAS2tE,EAAW3nE,MAAM,EAAG,GAAI,KACC,KAE1BhG,SAASi5B,iBAAiB5nC,SAASuC,MAAM8lC,iBAAiB,mBAAmB6V,SAAW,IAG5G,CC5Be,SAASq+B,GAAkBF,GACxC,OAAKA,EAEED,GAAOC,GAAY,uBAAyB,sBAF7B,0BAGxB,KCHKG,8CCuBgBC,GAAK,8DAsBvB,OAtBuB,mBACxB14C,KAAA,WACE,MAAqE3kC,KAAK0qB,MAAlE1lB,EAAI,EAAJA,KAAY2+D,EAAQ,EAAdzD,KAAgBY,EAAK,EAALA,MAAOzpD,EAAK,EAALA,MAAK,IAAEtE,MAAAA,OAAK,IAAG,GAAC,EAAC,EAAK2X,EAAK,QAE1DoB,EAAYkyC,EAAU,QAAS,CAACh5D,GAAQ,UAAUA,GAAS0lB,EAAMoB,UAAWqxD,GAAkB9lE,IAE9FimE,EAAY3Z,EAAWzD,GAAKyD,EAAU,CAAE73C,UAAW,eAAkB9W,EAAE6tC,MAAM,UAE7EyzB,EAAW,KAAKvjE,EAAO,cAAcsE,IAErCkmE,EAAa,KACd7yD,EAAK,CACRoB,UAAAA,EACA/Y,MAAOujE,IAGHkH,EAAY,QAASD,EAAaD,GAGxC,OAAKxc,EAEE,EAACr4D,GAAO,CAAC8H,KAAMuwD,GAAQ0c,GAFXA,CAGrB,EAAC,EAtBuB,CAAwDniB,GCjB7DoiB,GAAU,uFAuI5B,OAvI4B,EAC7Bt0E,MAAA,WACE,OAAOuyE,GAAAA,UAAwB,SAAS37E,KAAKC,KAC/C,EAAC,EACD8+D,KAAA,WACE,OAAO4c,GAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAAC,EAEDgvE,UAAA,WACE,OAAO0M,GAAAA,UAAsD,YAAaA,GAAAA,eAAqB37E,KAAKC,KACtG,EAAC,EACD8sD,KAAA,WACE,OAAO4uB,GAAAA,OAA0B,QAAQ37E,KAAKC,KAChD,EAAC,EACD0vE,UAAA,WACE,OAAOgM,GAAAA,OAA0B,aAAa37E,KAAKC,KACrD,EAAC,EAED09E,aAAA,WACE,OAAOhC,GAAAA,UAAgB,eAAgBA,GAAAA,eAAqB37E,KAAKC,KACnE,EAAC,EACD29E,eAAA,WACE,OAAOjC,GAAAA,OAA0B,kBAAkB37E,KAAKC,KAC1D,EAAC,EACDoiE,SAAA,WACE,OAAOsZ,GAAAA,OAA0B,YAAY37E,KAAKC,KACpD,EAAC,EACDqvE,eAAA,WACE,OAAOqM,GAAAA,UAA2C,kBAAkB37E,KAAKC,KAC3E,EAAC,EAED49E,aAAA,WACE,OAAOlC,GAAAA,UAAoC,gBAAgB37E,KAAKC,KAClE,EAAC,EACDqiE,WAAA,WACE,OAAOx5B,GAAuB,gBAAgB,SAAC+0C,GAAY,aAAK36E,KAAKC,IAAI,GAAiB,OAAZ,EAAA06E,GAAY,EAAe,GAAK,EAAE,IAAE79E,KAAKC,KACzH,EAAC,EACD6yE,MAAA,WACE,OAAO6I,GAAAA,QAAoB,SAAS37E,KAAKC,KAC3C,EAAC,EACDovE,iBAAA,WACE,OAAOsM,GAAAA,OAA0B,oBAAoB37E,KAAKC,KAC5D,EAAC,EAED69E,WAAA,WACE,OAAOnC,GAAAA,UAAgB,aAAcA,GAAAA,eAAqB37E,KAAKC,KACjE,EAAC,EACDsvE,mBAAA,WACE,OAAOoM,GAAAA,UAA2C,sBAAsB37E,KAAKC,KAC/E,EAAC,EACDuuE,SAAA,WACE,OAAO1lC,GAAwB,eAAe,SAACgnC,GAAW,QAAOA,CAAW,IAAE9vE,KAAKC,KACrF,EAAC,EACDyuE,OAAA,WACE,OAAO5lC,GAAwB,eAAe,SAACgnC,GAAW,SAAQrW,EAAIskB,QAAQhxB,MAAS+iB,EAAY,IAAE9vE,KAAKC,KAC5G,EAAC,EAED0sE,SAAA,WACE,OAAOgP,GAAAA,UAAgB,WAAYA,GAAAA,eAAqB37E,KAAKC,KAC/D,EAAC,EACD2sE,WAAA,WACE,OAAO+O,GAAAA,OAA0B,cAAc37E,KAAKC,KACtD,EAAC,EACDisE,SAAA,WACE,OAAOpjC,GAAwB,YAAY,SAAC6jC,GAAQ,QAAOA,CAAQ,IAAE3sE,KAAKC,KAC5E,EAAC,EAED2rE,SAAA,WACE,OAAO+P,GAAAA,UAAqC,YAAY37E,KAAKC,KAC/D,EAAC,EACD8rE,UAAA,WACE,OAAO4P,GAAAA,UAAqC,aAAa37E,KAAKC,KAChE,EAAC,EACDksE,QAAA,WACE,OAAOwP,GAAAA,UAAqC,WAAW37E,KAAKC,KAC9D,EAAC,EACDosE,UAAA,WACE,OAAOsP,GAAAA,UAAqC,aAAa37E,KAAKC,KAChE,EAEA,EAGA+9E,WAAA,SAAWp0D,GACT,IAAMkpD,EAAQ7yE,KAAKs8E,gBAAwB,SAEtCzJ,GAILA,EAAMvxB,MAAK,SAAC3/C,EAAMsF,GAChB,OAAI0iB,IAAOhoB,EAAKgoB,KACdkpD,EAAM9uD,OAAO9c,EAAG,IACT,EAIX,GACF,EAEA,EAIA4oE,YAAA,WAAsB,UACd/iB,EAAO0M,EAAIskB,QAAQhxB,KAEzB,GAAIA,IAA4C,OAApC,EAAyB,OAAzB,EAACA,EAAKkxB,0BAAmB,EAAxB,EAA0B/hE,WAAS,EAAI,IAAwB,OAAvB,EAAIjc,KAAK09E,qBAAc,EAAnB,EAAqBzhE,WAAY,SAClF4zD,EAAc5sE,KAAKC,IAAI,GAAyB,OAAtB,EAAClD,KAAKqvE,kBAAgB,EAAI,IAAMrvE,KAAKsvE,sBAAwB,IAG7F,OAAOrsE,KAAK4T,IAAIg5D,EAAgC,OAArB,EAAE7vE,KAAK49E,gBAAc,EAAI,EACtD,CAEA,OAAO,CACT,EAEA,EAGAzf,OAAA,WACE,IAAMR,EAAQ,IAAIlB,EAMlB,OAJIz8D,KAAKisE,YACPtO,EAAM7kD,IAAI,SAAU,EAACukE,GAAK,CAACr4E,KAAK,SAASk7D,KAAK,eAAeY,MAAOtH,EAAIiH,WAAWC,MAAM,oCAGpF/C,CACT,EAEA,EAGAmV,QAAA,WAAoB,QAClB,OAAoE,OAApE,EAA4C,OAA5C,EAAO9yE,KAAKs8E,gBAAwB,eAAQ,EAArC,EAAuC10E,KAAI,SAACq2E,GAAI,OAAKA,EAAKt0D,EAAE,KAAC,EAAI,EAC1E,EAAC,EAvI4B,CAAS+xD,ICKnBwC,GAAgB,uFAoKlC,OApKkC,EACnCv5C,KAAA,WACE,IAAMtM,EAAQr4B,KAAK0qB,MAAM2N,MAEzB,OACE,SAAKvM,UAAU,oBACb,SAAKA,UAAU,2BACb,QAAIA,UAAU,2CAA2C0tC,GAAAA,WAAAA,MAAqB,mCAE9E,SAAK1tC,UAAU,sBAAsB9rB,KAAK6mE,eAAe5jD,YAG3D,SAAK6I,UAAU,4BAA4B9rB,KAAKo2B,QAAQiC,IAG9D,EAAC,EAEDwuC,aAAA,WACE,IAAMlJ,EAAQ,IAAIlB,EACZpkC,EAAQr4B,KAAK0qB,MAAM2N,MAkCzB,OAhCAslC,EAAM7kD,IACJ,mBACA,EAACrQ,GAAO,CAAC8H,KAAMipD,GAAAA,WAAAA,MAAqB,sDAClC,EAACiK,GAAM,CACL33C,UAAU,sBACV,iBAAe,oBACfo0C,KAAK,eACL/2D,MAAOqwD,GAAAA,WAAAA,MAAqB,qDAC5BlX,QAASjqB,EAAM8lD,cAAczuC,KAAKrX,MAGtC,IAGFslC,EAAM7kD,IACJ,aACA,EAACrQ,GAAO,CAAC8H,KAAMipD,GAAAA,WAAAA,MAAqB,gDAClC,EAACiK,GAAM,CACL33C,UAAU,sBACV,iBAAe,oBACfo0C,KAAK,mBACL/2D,MAAOqwD,GAAAA,WAAAA,MAAqB,+CAC5BlX,QAAS,WACHsqB,QAAQpT,GAAAA,WAAAA,MAAqB,iDAC/BnhC,EAAM+lD,UAAUr+E,KAAKs4B,EAEzB,KAGJ,IAGKslC,CACT,EAAC,EAEDvnC,QAAA,SAAQiC,GACN,OAAIA,EAAM43C,YACD,EAACvN,GAAgB,CAAC52C,UAAU,4BAGjCuM,EAAMy4C,WACDz4C,EAAMm4C,WAAW5oE,KAAI,SAACkyE,GAC3B,IAAMvwD,EAAS,GACT80D,EAAc,CAAC,EAyBrB,OAvBAvE,EAAKnc,MAAMhnD,SAAQ,SAAC2nE,GAClB,IAAMC,EAAUD,EAAaC,UAE7B,QAAuB,IAAZA,EAAX,CAKA,IAAIrgB,EAAa,KACbqgB,aAAmBd,GAAYvf,EAAaqgB,EACvCA,GAAWA,EAAQrgB,aAAYA,EAAaqgB,EAAQrgB,cAI7D,IAAMpxD,EAAMoxD,EAAaA,EAAWv0C,KAAO,EAC3C00D,EAAYvxE,GAAOuxE,EAAYvxE,IAAQ,CAAEoxD,WAAYA,EAAYsgB,cAAe,IAChFH,EAAYvxE,GAAK0xE,cAActpE,KAAKopE,IAEM,IAAtC/0D,EAAOrI,QAAQm9D,EAAYvxE,KAC7Byc,EAAOrU,KAAKmpE,EAAYvxE,GAhBgB,CAkB5C,IAEOyc,EAAO3hB,KAAI,SAAC62E,GACjB,IAAMtgB,EAASsgB,EAAMvgB,YAAcugB,EAAMvgB,WAAWC,SAASl7C,UAE7D,OACE,SAAK6I,UAAU,qBACZ2yD,EAAMvgB,WACL,EAAC7b,EAAI,CAACv2B,UAAU,2BAA2BsE,KAAMopC,GAAAA,MAAAA,WAAqBilB,EAAMvgB,aACzEC,KAAYA,EAAO15D,QAAU,QAAIqnB,UAAU,mCAAmC0xC,EAAUW,IACzF,cAAOsgB,EAAMvgB,WAAW/0D,UAG1B,SAAK2iB,UAAU,4BAA4B0tC,GAAAA,MAAAA,UAAoB,UAGjE,QAAI1tC,UAAU,6BACX2yD,EAAMD,cAAc52E,KAAI,SAAC02E,GACxB,IAAMI,EAAwBllB,GAAAA,uBAA2B8kB,EAAapnC,eACtE,QACIwnC,GACA,YACE,EAACA,EAAqB,CAACJ,aAAcA,IAI7C,KAIR,GACF,IAGK,SAAKxyD,UAAU,0BAA0B0tC,GAAAA,WAAAA,MAAqB,uCACvE,EAAC,EAEDrX,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAK2+E,eAAiB3+E,KAAKK,EAAE,6BAG7BL,KAAK4+E,cAAgB5+E,KAAK6+E,UAAY7+E,KAAK2+E,eAAiBt+E,EAAE0B,QAE9D/B,KAAK8+E,mBAAqB9+E,KAAK++E,cAAcrvC,KAAK1vC,MAClDA,KAAK4+E,cAAc79E,GAAG,SAAUf,KAAK8+E,mBACvC,EAAC,EAED99B,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEfpiD,KAAK4+E,cAAc1sE,IAAI,SAAUlS,KAAK8+E,mBACxC,EAAC,EAEDC,cAAA,WACE,IAAM1mD,EAAQr4B,KAAK0qB,MAAM2N,MAInB2mD,EAAeh/E,KAAK6+E,UAAY7+E,KAAK4+E,cAAc,GAAKh+E,SAASwE,gBAIjE65E,EAAWh8E,KAAKuV,IAAIwmE,EAAa/8E,aAAe+8E,EAAa38E,UAAY28E,EAAaE,eAAiB,EAEzG7mD,EAAM+3C,YAAc/3C,EAAM83C,iBAAmB8O,GAC/C5mD,EAAMg4C,UAEV,EAEA,EAIAwO,QAAA,WACE,MAA+C,SAAxC7+E,KAAK2+E,eAAet7E,IAAI,WACjC,EAAC,EApKkC,CAASg4D,GCJzB8jB,GAAqB,uEACjC5jB,UAAP,SAAiB7wC,GACfA,EAAMoB,YAANpB,EAAMoB,UAAc,yBACpBpB,EAAMk2C,kBAANl2C,EAAMk2C,gBAAoB,uBAC1Bl2C,EAAMm2C,gBAANn2C,EAAMm2C,cAAkB,wBACxBn2C,EAAMo2C,QAANp2C,EAAMo2C,MAAUT,GAAY7G,GAAAA,WAAAA,MAAqB,sCACjD9uC,EAAMw1C,OAANx1C,EAAMw1C,KAAS,eAGfx1C,EAAMs2C,wBAANt2C,EAAMs2C,sBAA0BX,GAAY7G,GAAAA,WAAAA,MAAqB,+DAEjE,EAAM+B,UAAS,UAAC7wC,EAClB,EAAC,kBAyDA,OAzDA,EAEDy2C,UAAA,SAAU7rC,GACR,IAAM8pD,EAAmBp/E,KAAKq/E,cAExB/e,EAAO,EAAH,UAASa,UAAS,UAAC7rC,GAO7B,OALAgrC,EAAK51C,MAAMvhB,MAAQnJ,KAAK0qB,MAAMo2C,MAE9BR,EAAK51C,MAAMoB,UAAYkyC,EAAUsC,EAAK51C,MAAMoB,UAAW,CAACszD,GAAoB,QAC5E9e,EAAK51C,MAAM43B,QAAUtiD,KAAKsiD,QAAQ5S,KAAK1vC,MAEhCsgE,CACT,EAAC,EAEDuB,iBAAA,WACE,IAAM6M,EAAS1uE,KAAKs/E,iBAEpB,MAAO,CACLt/E,KAAK0qB,MAAMw1C,KAAOA,GAAKlgE,KAAK0qB,MAAMw1C,KAAM,CAAEp0C,UAAW,gBAAmB,KAC7D,IAAX4iD,GAAgB,UAAM5iD,UAAU,gCAAgC4iD,GAChE,UAAM5iD,UAAU,gBAAgB9rB,KAAK0qB,MAAMo2C,OAE/C,EAAC,EAEDM,QAAA,WACE,OACE,SAAKt1C,UAAWkyC,EAAU,gBAAiBh+D,KAAK0qB,MAAMm2C,eAAgBve,QAAStiD,KAAKu/E,UAAU7vC,KAAK1vC,OAChGA,KAAKg7D,SAAW,EAACkjB,GAAgB,CAAC7lD,MAAOr4B,KAAK0qB,MAAM2N,QAG3D,EAAC,EAEDiqB,QAAA,WACMkX,GAAAA,OAAAA,SACFx5D,KAAKw/E,YAELx/E,KAAK0qB,MAAM2N,MAAMqL,MAErB,EAAC,EAED87C,UAAA,WACExqE,EAAEwrC,MAAM1kC,IAAI09C,GAAAA,MAAU,iBACxB,EAAC,EAED8lB,eAAA,WACE,OAAO9lB,GAAAA,QAAAA,KAAAA,yBACT,EAAC,EAED6lB,YAAA,WACE,OAAO7lB,GAAAA,QAAAA,KAAAA,sBACT,EAAC,EAED+lB,UAAA,SAAUh8E,IAGJA,EAAEmhC,UAAYnhC,EAAEyd,SAAWzd,EAAE0d,SAAwB,IAAb1d,EAAE6/B,SAAc7/B,EAAEoC,iBAChE,EAAC,EArEuC,CAA8DxB,KJKxG,SAZKi5E,GAAAA,EAAAA,EAAI,kBAAJA,EAAAA,EAAI,oBAAJA,EAAAA,EAAI,kBAAJA,EAAAA,EAAI,sBAAJA,EAAAA,EAAI,0BAAJA,EAAAA,EAAI,0BAAJA,EAAAA,EAAI,4BAAJA,EAAAA,EAAI,aAAJA,EAAAA,EAAI,yBAYT,CAZKA,KAAAA,GAAI,SAmBYqC,GAAmB,6BAI5Bld,UAAY,IAAImd,IAAmC,KAMnDC,aAA6B,SAAC1sE,GAAoB,OAAK,CAAI,oBA0HpE,OAxHD,EAKA2sE,KAAA,SAAKpvE,GAMH,OALAxQ,KAAKuiE,UAAUzmD,IAAIshE,GAAKyC,SAAS,SAACt8E,GAChCA,EAAEmC,iBACF8K,EAASjN,EACX,IAEOvD,IACT,EAEA,EAKA8/E,OAAA,SAAOtvE,GAML,OALAxQ,KAAKuiE,UAAUzmD,IAAIshE,GAAK2C,WAAW,SAACx8E,GAClCA,EAAEmC,iBACF8K,EAASjN,EACX,IAEOvD,IACT,EAEA,EAKAggF,SAAA,SAASxvE,EAAgCyvE,QAAuB,IAAvBA,IAAAA,GAA0B,GACjE,IAAMzsE,EAAgC,SAACjQ,GACrCA,EAAEmC,iBACF8K,EAASjN,EACX,EAKA,OAHK08E,GAAgBjgF,KAAKuiE,UAAUzmD,IAAIshE,GAAK8C,IAAK1sE,GAClDxT,KAAKuiE,UAAUzmD,IAAIshE,GAAK+C,MAAO3sE,GAExBxT,IACT,EAEA,EAKAogF,MAAA,SAAM5vE,GAQJ,OAFAxQ,KAAKuiE,UAAUzmD,IAAI,GALmB,SAACvY,GACrCA,EAAEmC,iBACF8K,EAASjN,EACX,IAIOvD,IACT,EAEA,EAKAqgF,SAAA,SAAS7vE,GAOP,OANAxQ,KAAKuiE,UAAUzmD,IAAIshE,GAAKkD,QAAQ,SAAC/8E,GAC/BA,EAAEoC,kBACFpC,EAAEmC,iBACF8K,EAASjN,EACX,IAEOvD,IACT,EAEA,EAKAugF,SAAA,SAAS/vE,GAQP,OAPAxQ,KAAKuiE,UAAUzmD,IAAIshE,GAAKoD,WAAW,SAACj9E,GAC9BA,aAAak9E,eAAiBl9E,EAAE5C,kBAAkB+/E,kBAAgD,IAA5Bn9E,EAAE5C,OAAOujE,gBAAkD,IAA1B3gE,EAAE5C,OAAOwjE,eAClH3zD,EAASjN,GACTA,EAAEmC,iBAEN,IAEO1F,IACT,EAEA,EAGA65B,KAAA,SAAKrpB,GAGH,OAFAxQ,KAAK2/E,aAAenvE,EAEbxQ,IACT,EAEA,EAGA2gF,OAAA,SAAOx/E,GAELA,EAAS,GAAGyqB,iBAAiB,UAAW5rB,KAAK4gF,SAASlxC,KAAK1vC,MAC7D,EAEA,EAGA4gF,SAAA,SAAS3tE,GAEP,GAAKjT,KAAK2/E,aAAa1sE,GAAvB,CAEA,IAAM4tE,EAAc7gF,KAAKuiE,UAAUhmD,IAAItJ,EAAMrO,OACzCi8E,GACFA,EAAY5tE,EAJuB,CAMvC,EAAC,EApIqC,GKtBxC,SAAS6tE,GAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KAInB,CAHE,MAAOsd,GAEP,YADAuS,EAAOvS,EAET,CACIuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEvC,CACe,SAASC,GAAkBr9E,GACxC,OAAO,WACL,IAAImJ,EAAOhN,KACTsZ,EAAO5F,UACT,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GACzB,SAAS0nE,EAAMj6E,GACb+5E,GAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EAClE,CACA,SAASk6E,EAAOjgD,GACd8/C,GAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EACnE,CACAggD,OAAMluE,EACR,GACF,CACF,2BCjBqBquE,GAAuB,6BAChCt8D,QAAU,IAAI66D,GAA2B,mBA8ClD,OA9CkD,EAE7Cj+B,OAAM,+BAAZ,WAAa6B,GAAa,+EASvB,OARDA,EAAQA,EAAM98C,cAEdxG,KAAK6kB,QAAQ/I,IAAIwnC,EAAO,IAElBrG,EAAS,CACbn2C,OAAQ,CAAEkqD,EAAG1N,GACbw2B,KAAM,CAAEsH,MAAO,GACfC,QAAS,oBACV,kBAEM7nB,GAAAA,MAAAA,KAA6B,cAAevc,GAAQhmB,MAAK,SAACpS,GAC/D,EAAKA,QAAQ/I,IAAIwnC,EAAOz+B,GACxB7P,EAAEwqC,QACJ,KAAE,gDACH,mDAfW,GAeX,EAED7a,KAAA,SAAK2e,GACHA,EAAQA,EAAM98C,cAEd,IAAMqe,GAAW7kB,KAAK6kB,QAAQtI,IAAI+mC,IAAU,IAAI17C,KAAI,SAACs2D,GAAe,MAC5DkR,EAAmBlR,EAAWkR,mBAEpC,OACE,QAAItjD,UAAU,yBAAyB,aAAY,cAAgBoyC,EAAWv0C,MAC5E,EAAC04B,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,WAAqB0E,EAAakR,GAAoBA,EAAiB5O,UAAa,IAC9F,SAAK10C,UAAU,gCAAgCi0C,GAAU7B,EAAW/0D,QAASm6C,MAC1E8rB,GACD,SAAKtjD,UAAU,kCAAkCi0C,GAAyC,OAAhC,EAACqP,EAAiBQ,gBAAc,EAAI,GAAItsB,EAAO,OAKnH,IAEA,MAAO,CACL,QAAIx3B,UAAU,mBAAmB0tC,GAAAA,WAAAA,MAAqB,0CACtD,YACE,EAAC6hB,GAAU,CAACnb,KAAK,gBAAgB9vC,KAAMopC,GAAAA,MAAU,QAAS,CAAExI,EAAG1N,KAC5DkW,GAAAA,WAAAA,MAAqB,2CAA4C,CAAElW,MAAAA,OAEnE,OACFz+B,EAEP,EAAC,EA/CyC,GCEvBy8D,GAAkB,6BAC3Bz8D,QAAU,IAAI66D,GAAqB,mBA6C5C,OA7C4C,EAEvCj+B,OAAM,+BAAZ,WAAa6B,GAAa,sGACjBkW,GAAAA,MAAAA,KACS,QAAS,CACrB1yD,OAAQ,CAAEkqD,EAAG1N,GACbw2B,KAAM,CAAEsH,MAAO,KAEhBnqD,MAAK,SAACpS,GACL,EAAKA,QAAQ/I,IAAIwnC,EAAOz+B,GACxB7P,EAAEwqC,QACJ,KAAE,2CACL,mDAVW,GAUX,EAED7a,KAAA,SAAK2e,GACHA,EAAQA,EAAM98C,cAEd,IAAMqe,GAAW7kB,KAAK6kB,QAAQtI,IAAI+mC,IAAU,IACzCnjD,OACCq5D,GAAAA,MAAAA,IACa,SACV1yD,QAAO,SAACgmD,GAAI,MAAK,CAACA,EAAKtR,WAAYsR,EAAK6J,eAAerV,MAAK,SAACv6C,GAAK,OAAKA,EAAMP,cAAc84D,OAAO,EAAGhc,EAAM7+C,UAAY6+C,CAAK,GAAC,KAEjIx8C,QAAO,SAACvD,EAAG0D,EAAGsa,GAAG,OAAKA,EAAIivC,YAAYjtD,KAAO0D,CAAC,IAC9CyO,MAAK,SAAChM,EAAGE,GAAC,OAAKF,EAAEitD,cAAc4qB,cAAc33E,EAAE+sD,cAAc,IAEhE,OAAK9xC,EAAQpgB,OAEN,CACL,QAAIqnB,UAAU,mBAAmB0tC,GAAAA,WAAAA,MAAqB,qCAAwC,OAC3F30C,EAAQjd,KAAI,SAACklD,GACd,IAAMj6C,EAAO2oC,GAASsR,GAEhBx3B,EAAW,CAACyqC,GAAUltD,EAAKtC,KAAgB+yC,IAEjD,OACE,QAAIx3B,UAAU,mBAAmB,aAAY,QAAUghC,EAAKnjC,MAC1D,EAAC04B,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,KAAe1M,IACxB2R,EAAO3R,GAAK,KACPj6C,EAAM,CAAAtC,UAAMuC,EAAWwiB,SAAAA,KAIrC,KAjB0B,EAmB9B,EAAC,EA9CoC,GCyClBksD,GAAM,mGAwDK,OAxDL,0CASfC,iBAAW,IAuBXtxD,UAAW,EAAK,EAKhBuxD,aAAO,IAKPC,eAAiB,EAAC,EAQlB97E,MAAgB,EAAC,EAEjB+7E,eAAS,IAETC,mBAAa,IAEfC,4BAAsB,IAxDL,OAwDK,kBA3B9B,OA2B8B,EAE9Bv/B,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKyhF,YAAczhF,KAAK0qB,MAAM2N,KAChC,EAAC,EAEDsM,KAAA,WAAO,WACCo9C,EAAgB/hF,KAAKyhF,YAAYO,mBAOvC,GAHKhiF,KAAK0hF,UAAS1hF,KAAK0hF,QAAU1hF,KAAKiiF,cAAch/D,YAGhDjjB,KAAK0hF,QAAQj9E,OAAQ,OAAO,cAEjC,IAAMy9E,EAAc7hB,GAAY7G,GAAAA,WAAAA,MAAqB,yCAE/Cr0D,IAAa48E,EACbI,KAAuBniF,KAAKyhF,YAAYW,aAAcpiF,KAAKmwB,UAC3DkyD,IAA4BriF,KAAK2hF,iBAAkB3hF,KAAKyhF,YAAYW,YAE1E,OACE,SACEtf,KAAK,SACL,aAAYtJ,GAAAA,WAAAA,MAAqB,uCACjC1tC,UAAWkyC,EAAU,SAAU,CAC7BziB,KAAMv7C,KAAKyhF,YAAYW,YAAcpiF,KAAKmwB,SAC1CmyD,QAAStiF,KAAKmwB,SACdumB,OAAQvxC,EACRu5D,UAAW1+D,KAAK2hF,kBAGlB,SAAK71D,UAAU,gBACb,WACE,aAAYo2D,EACZp2D,UAAU,cACV9mB,KAAK,SACL4/D,YAAasd,EACbn7E,MAAO/G,KAAKyhF,YAAYW,WACxBnpB,QAAS,SAAC11D,GAAa,aAAK,EAAKk+E,YAAYc,SAAW,MAADh/E,GAAS,OAAR,EAADA,EAAG5C,aAAF,EAAF,EAAiCoG,MAAM,EAC7Fy7E,QAAS,kBAAO,EAAKryD,UAAW,CAAI,EACpCsyD,OAAQ,kBAAO,EAAKtyD,UAAW,CAAK,MAEnCnwB,KAAK2hF,gBAAkB,EAACjf,GAAgB,CAAC7sD,KAAK,QAAQ5H,QAAQ,SAAS00D,mBAAmB,qCAC5F0f,GACC,YACEv2D,UAAU,gDACVw2B,QAAStiD,KAAKiU,MAAMy7B,KAAK1vC,MACzB,aAAYw5D,GAAAA,WAAAA,MAAqB,0DACjCx0D,KAAK,UAEJk7D,GAAK,yBAIZ,QACEp0C,UAAU,+BACV,eAAcq2D,QAAqBrvE,EACnC,YAAWqvE,EAAoB,cAAWrvE,GAEzCqvE,GAAqBniF,KAAK0hF,QAAQ95E,KAAI,SAAC21B,GAAM,OAAKA,EAAOoH,KAAK,EAAK88C,YAAYW,WAAW,KAInG,EAAC,EAEDM,gBAAA,WAAkB,QAIVC,EACJ5gF,OAAO6gF,YAAc5iF,KAAKO,QAAQixD,cAAc,8BAA+B3gD,wBAAwB7N,OAF5E,GAI6B,OAA1D,EAAAhD,KAAKO,QAAQixD,cAA2B,qBAAyB,OAAP,EAA1D,EAA4Dz+C,QAA5D,EAAmE45B,YAAY,aAAiBg2C,EAAS,KAC3G,EAAC,EAEDngC,SAAA,SAASJ,GAAkC,MACzC,YAAMI,SAAQ,UAACJ,GAGfpiD,KAAK6iF,SAAS7iF,KAAK8iF,0BAGF,OAAb,EAAC9iF,KAAK0hF,UAAL,EAAcj9E,QAEnBzE,KAAK0iF,iBACP,EAAC,EAEDvgC,SAAA,SAASC,GAAkC,aAKzC,GAJA,YAAMD,SAAQ,UAACC,GAIE,OAAb,EAACpiD,KAAK0hF,UAAL,EAAcj9E,OAAnB,CAEA,IAAMg9C,EAASzhD,KACTq4B,EAAQr4B,KAAKyhF,YAGnBzhF,KAAK6iF,SAAS7iF,KAAK8iF,0BAEnB9iF,KAAKK,EAAE,mBACJU,GAAG,aAAa,SAACwC,GAAC,OAAKA,EAAEmC,gBAAgB,IACzC3E,GAAG,SAAS,kBAAM,EAAKV,EAAE,SAASoD,QAAQ,OAAO,IAGjD1C,GAAG,aAAc,8BAA8B,WAC9C0gD,EAAOohC,SAASphC,EAAOshC,kBAAkBl9E,MAAM7F,MACjD,IAEF,IAAMgjF,EAAShjF,KAAKK,EAAE,SAEtBL,KAAK4hF,UAAY,IAAInC,GACrBz/E,KAAK4hF,UACFhC,MAAK,kBAAM,EAAKiD,SAAS,EAAKC,yBAA2B,GAAG,EAAK,IACjEhD,QAAO,kBAAM,EAAK+C,SAAS,EAAKC,yBAA2B,GAAG,EAAK,IACnE9C,SAAShgF,KAAKijF,aAAavzC,KAAK1vC,OAAO,GACvCqgF,SAASrgF,KAAKiU,MAAMy7B,KAAK1vC,OACzB2gF,OAAOqC,GAGVA,EACGjiF,GAAG,eAAe,WACjB,IAAMuiD,EAAQtjD,KAAK+G,MAAMP,cAEpB88C,IAED7B,EAAOogC,eAAe10E,aAAas0C,EAAOogC,eAC9CpgC,EAAOogC,cAAgB9/E,OAAOe,YAAW,WAGmC,MAFtEu1B,EAAM6qD,SAAS5/B,KAEfA,EAAM7+C,QAAWg9C,EAAO71C,YAA8Bu3E,iBAC1C,OAAd,EAAA1hC,EAAOigC,UAAP,EAAgB95E,KAAI,SAAC21B,GACdA,EAAOkkB,SAEZA,EAAOkgC,iBAEPpkD,EAAOkkB,OAAO6B,GAAOrsB,MAAK,WACxBwqB,EAAOkgC,eAAiB1+E,KAAKC,IAAI,EAAGu+C,EAAOkgC,eAAiB,GAC5D3sE,EAAEwqC,QACJ,IACF,KAGFnnB,EAAMjO,MAAMk5B,GACZtuC,EAAEwqC,SACJ,GAAG,KACL,IAECz+C,GAAG,SAAS,WACXV,EAAEL,MACCoP,IAAI,WAAW,SAAC7L,GAAC,OAAKA,EAAEmC,gBAAgB,IACxCjC,QAAQ,SACb,IAEFzD,KAAK8hF,uBAAyB9hF,KAAK0iF,gBAAgBhzC,KAAK1vC,MACxD+B,OAAO6pB,iBAAiB,SAAU5rB,KAAK8hF,uBA/DN,CAgEnC,EAAC,EAED9gC,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEXpiD,KAAK8hF,wBACP//E,OAAO64B,oBAAoB,SAAU56B,KAAK8hF,uBAE9C,EAEA,EAGAmB,aAAA,WACMjjF,KAAK6hF,eAAe10E,aAAanN,KAAK6hF,eAE1C7hF,KAAK2hF,eAAiB,EAEtB,IAAMyB,EAAcpjF,KAAK+6D,QAAQ/6D,KAAK6F,OAAOhF,KAAK,KAAKyD,KAAK,QACxDtE,KAAKyhF,YAAYW,YAAcgB,EACjCpuE,EAAEwrC,MAAM1kC,IAAIsnE,GAEZpjF,KAAKiU,QAGPjU,KAAKK,EAAE,SAASqlC,MAClB,EAEA,EAGAzxB,MAAA,WACEjU,KAAKyhF,YAAYxtE,OACnB,EAEA,EAGAguE,YAAA,WACE,IAAMtkB,EAAQ,IAAIlB,EAKlB,OAHIjD,GAAAA,MAAAA,UAAoB,iBAAiBmE,EAAM7kD,IAAI,cAAe,IAAIqoE,IAClE3nB,GAAAA,MAAAA,UAAoB,mBAAmBmE,EAAM7kD,IAAI,QAAS,IAAIuqE,IAE3D1lB,CACT,EAEA,EAGAolB,gBAAA,WACE,OAAO/iF,KAAKK,EAAE,6CAChB,EAEA,EAIAyiF,uBAAA,WACE,OAAO7/E,KAAKC,IAAI,EAAGlD,KAAK+iF,kBAAkBl9E,MAAM7F,KAAK+6D,QAAQ/6D,KAAK6F,QACpE,EAEA,EAGAk1D,QAAA,SAAQl1D,GACN,IAAMD,EAAS5F,KAAK+iF,kBAChBzO,EAAQ1uE,EAAOkB,OAAO,gBAAgBjB,EAAK,MAM/C,OAJKyuE,EAAM7vE,SACT6vE,EAAQ1uE,EAAOE,GAAGD,IAGbyuE,CACT,EAEA,EAIAuO,SAAA,SAASh9E,EAAemvE,QAAqB,IAArBA,IAAAA,GAAwB,GAC9C,IAAMpvE,EAAS5F,KAAK+iF,kBACdO,EAAY19E,EAAOlB,SAErB6+E,EAAa19E,EACbA,EAAQ,EACV09E,EAAa39E,EAAOnB,OAAS,EACpBoB,GAASD,EAAOnB,SACzB8+E,EAAa,GAGf,IAAMjP,EAAQ1uE,EAAOhD,YAAY,UAAUkD,GAAGy9E,GAAY1gF,SAAS,UAInE,GAFA7C,KAAK6F,MAAQ0J,SAAS+kE,EAAMhwE,KAAK,gBAA4Bi/E,EAEzDvO,EAAc,CAChB,IAMI3yE,EANEmhF,EAAiBF,EAAUjhF,YAC3BohF,EAAcH,EAAUxhF,SAAUU,IAClCkhF,EAAiBD,EAAcH,EAAUjS,cACzC8D,EAAUb,EAAMxyE,SAAUU,IAC1B4yE,EAAaD,EAAUb,EAAMjD,cAG/B8D,EAAUsO,EACZphF,EAAYmhF,EAAiBC,EAActO,EAAU5lE,SAAS+zE,EAAUjgF,IAAI,eAAgB,IACnF+xE,EAAasO,IACtBrhF,EAAYmhF,EAAiBE,EAAiBtO,EAAa7lE,SAAS+zE,EAAUjgF,IAAI,kBAAmB,UAG9E,IAAdhB,GACTihF,EAAUpmD,MAAK,GAAM0T,QAAQ,CAAEvuC,UAAAA,GAAa,IAEhD,CACF,EAAC,sBAvTD,WAEE,OADAghE,GAAuB,yDAA0D,QAC1ErjE,KAAKyhF,WACd,EAAC,IACD,SAAUppD,QAGEvlB,IAAVulB,GAAuBgrC,GAAuB,yDAA0D,QACxGrjE,KAAKyhF,YAAcppD,CACrB,KAEA,EA7ByB,CAA8CgjC,GAApDmmB,GAIF2B,eAAiB,EC/CpC,IAKqBQ,GAAe,uFAyEjC,OAzEiC,EAClCh/C,KAAA,WACE,OAAO,QAAI7Y,UAAU,mBAAmB0xC,EAAUx9D,KAAK29D,QAAQ16C,WACjE,EAEA,EAKA06C,MAAA,WACE,IAAMA,EAAQ,IAAIlB,EAIlB,GAFAkB,EAAM7kD,IAAI,SAAU,EAAC0oE,GAAM,CAACnpD,MAAOmhC,GAAAA,SAAgB,IAE/CA,GAAAA,MAAAA,UAAoB,yBAA2B/3C,OAAOvB,KAAKs5C,GAAAA,KAAAA,SAAkB/0D,OAAS,EAAG,CAC3F,IAAMm/E,EAAU,GAAG,WAERpqE,GACToqE,EAAQ1uE,KACN,EAACuuD,GAAM,CACL/sB,OAAQ8iB,GAAAA,KAAAA,SAAoBhgD,EAC5B0mD,KAAM1G,GAAAA,KAAAA,SAAoBhgD,GAAS,eACnC8oC,QAAS,WACHkX,GAAAA,QAAAA,KACFA,GAAAA,QAAAA,KAAAA,gBAAiC,CAAEhgD,OAAAA,IAAUyd,MAAK,kBAAMl1B,OAAOkuB,SAAS66C,QAAQ,KAEhFlqE,SAASijF,OAAS,UAAUrqE,EAAM,kDAClCzX,OAAOkuB,SAAS66C,SAEpB,GAECtR,GAAAA,KAAAA,QAAiBhgD,IAEpB,EAhBJ,IAAK,IAAMA,KAAUggD,GAAAA,KAAAA,QAAkB,EAA5BhgD,GAmBXmkD,EAAM7kD,IACJ,SACA,EAACyiE,GAAc,CACb3a,gBAAgB,sBAChBI,sBAAuBxH,GAAAA,WAAAA,MAAqB,uDAE3CoqB,GAEH,GAEJ,CAyBA,OAvBIpqB,GAAAA,QAAAA,MACFmE,EAAM7kD,IAAI,gBAAiB,EAACqmE,GAAqB,CAAC9mD,MAAOmhC,GAAAA,gBAAuB,IAChFmE,EAAM7kD,IAAI,UAAW,EAACwiE,GAAe,MAAK,KAEtC9hB,GAAAA,MAAAA,UAAoB,gBACtBmE,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAAC33C,UAAU,sBAAsBw2B,QAAS,kBAAMkX,GAAAA,MAAAA,KAAe0Q,GAAY,GAC/E1Q,GAAAA,WAAAA,MAAqB,mCAExB,IAIJmE,EAAM7kD,IACJ,QACA,EAAC2qD,GAAM,CAAC33C,UAAU,sBAAsBw2B,QAAS,kBAAMkX,GAAAA,MAAAA,KAAeoR,GAAW,GAC9EpR,GAAAA,WAAAA,MAAqB,kCAExB,IAIGmE,CACT,EAAC,EAzEiC,CAAStC,GCXxByoB,GAAc,8DAKhC,OALgC,SAC1BvoB,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMoB,UAAYpB,EAAMoB,WAAa,kCACvC,EAAC,EALgC,CAAS23C,ICDtCsgB,GAAa,WACjB,aAME/jF,KAAKsC,SAAWyhF,EAAcC,SAASC,OAQvCjkF,KAAKkC,OAAS,KAOdlC,KAAKmD,KAAO,CAAEunB,MAAO,CAAC,GAOtB1qB,KAAKgnE,OAAS,KAEdhnE,KAAKiU,OACP,CAEA,kBAuNC,OAvND,EAKAyvB,KAAA,SAAKwgD,EAAgBx5D,GACnB,IAAMvnB,EAAO,CAAE+gF,eAAAA,EAAgBx5D,MAAAA,GAE3B1qB,KAAKmkF,gBAOLnkF,KAAK+xE,cACP/xE,KAAKiU,QACLe,EAAEwqC,OAAOD,QAGXv/C,KAAKmD,KAAOA,EACd,EAEA,EAGA8Q,MAAA,WACEjU,KAAKsC,SAAWyhF,EAAcC,SAASC,OACvCjkF,KAAKmD,KAAO,CAAEunB,MAAO,CAAC,GACtB1qB,KAAKokF,OAAS,KAEdpkF,KAAK0nE,OAAS,CACZtxC,QAASg3B,GAAO,KAGdptD,KAAKgnE,QACPhnE,KAAKgnE,OAAO/0D,UAEdjS,KAAKgnE,OAAS,IAChB,EAEA,EAGAt6D,KAAA,WACM1M,KAAKsC,WAAayhF,EAAcC,SAASK,QAAUrkF,KAAKsC,WAAayhF,EAAcC,SAASM,aAEhGtkF,KAAKsC,SAAWyhF,EAAcC,SAASK,OACvCrvE,EAAEwqC,OAAOD,OACX,EAEA,EAGA5yC,KAAA,WACE3M,KAAKiU,QACLe,EAAEwqC,QACJ,EAEA,EAIA2c,MAAA,WACMn8D,KAAKmkF,eAETnkF,KAAK2M,MACP,EAEA,EAGA43E,SAAA,WACOvkF,KAAK+xE,cAEV/xE,KAAKsC,SAAWyhF,EAAcC,SAASQ,UACvCxvE,EAAEwqC,SACJ,EAEA,EAIAilC,WAAA,WACOzkF,KAAK+xE,cAEV/xE,KAAKsC,SAAWyhF,EAAcC,SAASM,WACvCtvE,EAAEwqC,SACJ,EAEA,EAGAklC,eAAA,WACM1kF,KAAKsC,WAAayhF,EAAcC,SAASM,aAE7CtkF,KAAKsC,SAAWyhF,EAAcC,SAASK,OACvCrvE,EAAEwqC,SACJ,EAEA,EAOAmlC,YAAA,SAAY3/E,EAAMrD,GAAW,WAE3B,YAFoB,IAAJA,IAAAA,EAAO,CAAC,KAEnB65D,EAAWx7D,KAAKmD,KAAK+gF,eAAgBl/E,IAInCyc,OAAOvB,KAAKve,GAAM+sD,OAAM,SAAC5hD,GAAG,OAAK,EAAK3J,KAAKunB,MAAM5d,KAASnL,EAAKmL,EAAI,GAC5E,EAEA,EAQAilE,UAAA,WACE,OAAO/xE,KAAKsC,WAAayhF,EAAcC,SAASC,MAClD,EAEA,EAQAW,aAAA,WACE,OAAO5kF,KAAKsC,WAAayhF,EAAcC,SAASM,YAA+B,UAAjB9qB,GAAAA,QAChE,EAEA,EAOAqrB,iBAAA,SAAiB3mB,GACf,OAAOl+D,KAAK+xE,aAAe/xE,KAAK2kF,YAAY3c,GAAe,CAAE9J,WAAAA,GAC/D,EAEA,EAMAimB,YAAA,WACE,GAAKnkF,KAAK+xE,aACL/xE,KAAKokF,OAEV,OAAIpkF,KAAKokF,OAAO5zE,YACNo8D,QAAQ5sE,KAAKokF,OAAO5pD,cAD9B,CAGF,EAEA,EAUAgtC,mBAAA,SAAmBh3D,EAAUgqB,GAC3Bx6B,KAAKokF,OAAS,CAAE5zE,SAAAA,EAAUgqB,QAAAA,EAC5B,EAEA,EAIAsqD,cAAA,WACE,OAAO,GACT,EAEA,EAIAC,cAAA,WACE,OAAO1kF,EAAE0B,QAAQG,SAAW7B,EAAE,WAAWgxE,aAC3C,EAEA,EAMA2T,eAAA,WAIE,OAAIhlF,KAAKsC,WAAayhF,EAAcC,SAASQ,UACpC,GACExkF,KAAKsC,WAAayhF,EAAcC,SAASM,WAC3CjkF,EAAE0B,QAAQG,SAKZe,KAAKC,IAAIlD,KAAK8kF,gBAAiB7hF,KAAK4T,IAAI7W,KAAKkC,OAAQlC,KAAK+kF,iBACnE,EAAC,EAzPgB,GA4PnBhB,GAAcC,SAAW,CACvBC,OAAQ,SACRI,OAAQ,SACRG,UAAW,YACXF,WAAY,cAGd,YChQA,IAKqBW,GAAQ,uFAiY1B,OAjY0B,EAC3B1iC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAObpiD,KAAKq4B,MAAQr4B,KAAK0qB,MAAM2N,MAOxBr4B,KAAK02C,QAAS,EAGd12C,KAAKklF,aAAellF,KAAKq4B,MAAM/1B,QACjC,EAAC,EAEDqiC,KAAA,WACE,IAAMxhC,EAAOnD,KAAKq4B,MAAMl1B,KAClBojD,EAAU,CACd4+B,OAAQnlF,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,OAChCqB,UAAWplF,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,UACnCU,WAAYzkF,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,WACpCrtC,OAAQ12C,KAAK02C,OACbsE,QAASh7C,KAAKq4B,MAAM05C,aAIhBsT,EAAkBrlF,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,UAAmC/jF,KAAKq4B,MAAM3rB,KAAKgjC,KAAK1vC,KAAKq4B,YAASvlB,EAEhHw0D,EAAenkE,EAAK+gF,eAE1B,OACE,SAAKp4D,UAAW,YAAckyC,EAAUzX,IACtC,SAAKz6B,UAAU,kBAAkBq2B,SAAUniD,KAAKslF,aAAa51C,KAAK1vC,QAClE,QAAI8rB,UAAU,qBAAqB0xC,EAAUx9D,KAAK6mE,eAAe5jD,YACjE,SAAK6I,UAAU,mBAAmBw2B,QAAS+iC,GACxC/d,GAAgB,EAACA,EAAY,iBAAKnkE,EAAKunB,MAAK,CAAEq8C,SAAU/mE,KAAKq4B,MAAOrP,SAAUu9B,EAAQ6+B,cAI/F,EAAC,EAED5iC,SAAA,SAASJ,GACP,YAAMI,SAAQ,UAACJ,GAEXpiD,KAAKq4B,MAAM/1B,WAAatC,KAAKklF,aAG/BllF,KAAKulF,gBAELvlF,KAAKwlF,wBAELxlF,KAAKklF,aAAellF,KAAKq4B,MAAM/1B,SAEnC,EAAC,EAED6/C,SAAA,SAASC,GAAO,WACd,YAAMD,SAAQ,UAACC,GAEfpiD,KAAKylF,mBACLzlF,KAAKK,IAAIsM,OAAOtJ,IAAI,UAAWrD,KAAKq4B,MAAM2sD,kBAI1ChlF,KAAKK,IAAIU,GAAG,aAAc,sCAAsC,SAACwC,GAC/D,EAAKmzC,OAAoB,YAAXnzC,EAAEyB,KAChBgQ,EAAEwqC,QACJ,IAGAx/C,KAAKK,IAAIU,GAAG,UAAW,qCAAsC,OAAO,kBAAM,EAAKs3B,MAAM8jC,OAAO,IAE5Fn8D,KAAK4hC,SAAW,CAAC,EAEjBvhC,EAAE0B,QACChB,GAAG,SAAWf,KAAK4hC,SAAS60C,SAAWz2E,KAAKulF,aAAa71C,KAAK1vC,OAC9D02E,SAEHr2E,EAAEO,UACCG,GAAG,YAAcf,KAAK4hC,SAASm1C,YAAc/2E,KAAK+2E,YAAYrnC,KAAK1vC,OACnEe,GAAG,UAAYf,KAAK4hC,SAASo1C,UAAYh3E,KAAKg3E,UAAUtnC,KAAK1vC,MAClE,EAAC,EAEDghD,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEf/hD,EAAE0B,QAAQmQ,IAAI,SAAUlS,KAAK4hC,SAAS60C,UAEtCp2E,EAAEO,UAAUsR,IAAI,YAAalS,KAAK4hC,SAASm1C,aAAa7kE,IAAI,UAAWlS,KAAK4hC,SAASo1C,UACvF,EAEA,EAIAsO,aAAA,SAAaljC,GACX,IAAM2kB,EAAW/mE,KAEjBK,EAAE+hD,EAAMqF,KACLpkD,IAAI,SAAU,cACdqsC,KAAK,uBAAuB,SAACnsC,GAAC,OAAKA,EAAEmC,gBAAgB,IACrDggF,WAAU,SAAUniF,GACnBwjE,EAAS6P,WAAarzE,EAAEyhC,QACxB+hC,EAAS4e,YAAc5e,EAAS1mE,IAAI6B,SACpC6kE,EAASzzD,OAASjT,EAAEL,MACpBK,EAAE,QAAQgD,IAAI,SAAU,aAC1B,GACJ,EAEA,EAKA0zE,YAAA,SAAYxzE,GACV,GAAKvD,KAAKsT,OAAV,CAMA,IAAMsyE,EAAc5lF,KAAK42E,WAAarzE,EAAEyhC,QACxChlC,KAAK6lF,aAAa7lF,KAAK2lF,YAAcC,GAMrC,IAAMvjF,EAAYhC,EAAE0B,QAAQM,YACtBkwE,EAAiBlwE,EAAY,GAAKA,EAAYhC,EAAE0B,QAAQG,UAAY7B,EAAEO,UAAUsB,SACtFlC,KAAK8lF,kBAAkBvT,EAfC,CAgB1B,EAEA,EAGAyE,UAAA,WACOh3E,KAAKsT,SAEVtT,KAAKsT,OAAS,KACdjT,EAAE,QAAQgD,IAAI,SAAU,IAC1B,EAEA,EAGAsI,MAAA,WACE3L,KAAKK,EAAE,gEAAgEojB,QAAQ9X,OACjF,EAEA,EAKA45E,aAAA,WACE,IAAMrjF,EAASlC,KAAKq4B,MAAM2sD,iBACpBe,EAAY/lF,KAAKK,EAAE,sBAIzB,GAFAL,KAAKK,IAAI6B,OAAOA,GAEZ6jF,EAAUthF,OAAQ,CACpB,IAAMuhF,EAAeD,EAAUjkF,SAASU,IAAMxC,KAAKK,IAAIyB,SAASU,IAC1DyjF,EAAgB12E,SAASw2E,EAAU1iF,IAAI,kBAAmB,IAC1D6iF,EAAelmF,KAAKK,EAAE,oBAAoBgxE,aAAY,GAE5D0U,EAAU7jF,OAAOlC,KAAKK,IAAIgxE,cAAgB2U,EAAeC,EAAgBC,EAC3E,CACF,EAEA,EAKAJ,kBAAA,WACE,IAGMG,EAFJjmF,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,QAAiC/jF,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,WAAqD,UAAjBvqB,GAAAA,SAEvFx5D,KAAKq4B,MAAM2sD,iBAAmBz1E,SAASlP,EAAE,QAAQgD,IAAI,kBAAmB,IAAM,EAE9GhD,EAAE,YAAYgD,IAAI,CAAE4iF,cAAAA,GACtB,EAEA,EAGAT,sBAAA,WAEE,GAAIxlF,KAAKklF,eAAiBnB,GAAAA,SAAAA,YAAqC/jF,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,OAKvF,OAAQ/jF,KAAKq4B,MAAM/1B,UACjB,KAAKyhF,GAAAA,SAAAA,OACH,OAAO/jF,KAAK2M,OACd,KAAKo3E,GAAAA,SAAAA,UACH,OAAO/jF,KAAKukF,WACd,KAAKR,GAAAA,SAAAA,WACH,OAAO/jF,KAAK2L,QACd,KAAKo4E,GAAAA,SAAAA,OACH,OAAO/jF,KAAK0M,YAZd1M,KAAK2L,OAcT,EAEA,EAGAw6E,oBAAA,WACE,IAAMC,EAAYpmF,KAAKK,IAAI68B,MAAK,GAC1BmpD,EAAYD,EAAU/U,cACtBhvE,EAAYhC,EAAE0B,QAAQM,YAE5B+jF,EAAU15E,OACV1M,KAAKulF,eAEL,IAAMe,EAAYF,EAAU/U,cAExBrxE,KAAKklF,eAAiBnB,GAAAA,SAAAA,OACxBqC,EAAU/iF,IAAI,CAAEL,QAASsjF,EAAWpkF,OAAQokF,IAE5CF,EAAU/iF,IAAI,CAAEnB,OAAQmkF,IAG1B,IAAMr9E,EAAYo9E,EAAUx1C,QAAQ,CAAE5tC,OAAQ,EAAGd,OAAQokF,GAAa,QAAQvvD,UAI9E,OAFA/2B,KAAK8lF,oBACLzlF,EAAE0B,QAAQM,UAAUA,GACb2G,CACT,EAEA,EAGAu9E,aAAA,WACEvmF,KAAKwmF,UAAYnmF,EAAE,UAAUwC,SAAS,qBAAqBqL,SAAS,OACtE,EAEA,EAGAu4E,aAAA,WACMzmF,KAAKwmF,WAAWxmF,KAAKwmF,UAAU3hF,QACrC,EAEA,EAKA6H,KAAA,WAAO,WAGL,GAFA1M,KAAKmmF,sBAAsBlvD,MAAK,kBAAM,EAAKtrB,OAAO,IAE7B,UAAjB6tD,GAAAA,SAA0B,CAS5B,IAAMktB,EAAgB9lF,SAASwE,gBACzBuhF,EAAgB1jF,KAAK4T,IAAI6vE,EAAcrkF,UAAWqkF,EAAczkF,aAAeykF,EAAcxH,cACnGl/E,KAAKK,IAAIgD,IAAI,MAAOhD,EAAE,QAAQ0C,GAAG,kBAAoB4jF,EAAgB,GACrE3mF,KAAKumF,cACP,CACF,EAEA,EAKA55E,KAAA,WAAO,WACCy5E,EAAYpmF,KAAKK,IAIvB+lF,EAAUlpD,MAAK,GAAM0T,QAAQ,CAAE5tC,QAASojF,EAAUlkF,UAAY,QAAQ,WACpEkkF,EAAUz5E,OACV,EAAK85E,eACL,EAAKX,mBACP,GACF,EAEA,EAKAvB,SAAA,WACEvkF,KAAKmmF,sBAELnmF,KAAKK,IAAIgD,IAAI,MAAO,QACpBrD,KAAKymF,cACP,EAEA,EAKA5f,aAAA,WACE,IAAMlJ,EAAQ,IAAIlB,EA2ClB,OAzCIz8D,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,WAC1BpmB,EAAM7kD,IACJ,iBACA,EAACgrE,GAAc,CACb5jB,KAAK,kBACL/2D,MAAOqwD,GAAAA,WAAAA,MAAqB,gDAC5BlX,QAAStiD,KAAKq4B,MAAMqsD,eAAeh1C,KAAK1vC,KAAKq4B,WAI7Cr4B,KAAKq4B,MAAM/1B,WAAayhF,GAAAA,SAAAA,YAC1BpmB,EAAM7kD,IACJ,WACA,EAACgrE,GAAc,CACb5jB,KAAK,wBACL/2D,MAAOqwD,GAAAA,WAAAA,MAAqB,wCAC5BlX,QAAStiD,KAAKq4B,MAAMksD,SAAS70C,KAAK1vC,KAAKq4B,OACvC0lC,cAAc,qBAIlBJ,EAAM7kD,IACJ,aACA,EAACgrE,GAAc,CACb5jB,KAAK,gBACL/2D,MAAOqwD,GAAAA,WAAAA,MAAqB,2CAC5BlX,QAAStiD,KAAKq4B,MAAMosD,WAAW/0C,KAAK1vC,KAAKq4B,WAK/CslC,EAAM7kD,IACJ,QACA,EAACgrE,GAAc,CACb5jB,KAAK,eACL/2D,MAAOqwD,GAAAA,WAAAA,MAAqB,qCAC5BlX,QAAStiD,KAAKq4B,MAAM8jC,MAAMzsB,KAAK1vC,KAAKq4B,WAKnCslC,CACT,EAEA,EAGA8nB,iBAAA,WACEzlF,KAAKq4B,MAAMn2B,OAAS44D,aAAaC,QAAQ,kBAEpC/6D,KAAKq4B,MAAMn2B,SACdlC,KAAKq4B,MAAMn2B,OAASlC,KAAK4mF,gBAE7B,EAEA,EAIAA,cAAA,WACE,OAAO5mF,KAAKK,IAAI6B,QAClB,EAEA,EAIA2jF,aAAA,SAAa3jF,GACXlC,KAAKq4B,MAAMn2B,OAASA,EACpBlC,KAAKulF,eAELzqB,aAAaM,QAAQ,iBAAkBp7D,KAAKq4B,MAAMn2B,OACpD,EAAC,EAjY0B,CAASm5D,GCQRwrB,GAAY,uFAoEvC,OApEuC,EACxCliD,KAAA,SAAKyd,GAAyC,qBACtCk8B,EAAet+E,KAAK0qB,MAAM4zD,aAC1BluD,EAAoB,OAAhB,EAAY,OAAZ,EAAGpwB,KAAKowB,WAAI,EAAT,OAAApwB,OAAa,EAAI,GAExB8mF,EAAWxI,EAAawI,WAE9B,OACE,EAACzkC,EAAI,CACHv2B,UAAWkyC,EAAU,eAAgB,iBAAiBsgB,EAAapnC,cAAiB,EAAEonC,EAAa7P,UAAY,WAC/Gr+C,KAAMA,EACNouC,SAAUpuC,EAAK8pC,SAAS,OACxB5X,QAAStiD,KAAKwuE,WAAW9+B,KAAK1vC,OAE7By+D,EAAOqoB,GAAY,MACnB5mB,GAAc,OAAV,EAAClgE,KAAKkgE,WAAI,EAAT,OAAAlgE,MAAe,CAAE8rB,UAAW,sBAClC,UAAMA,UAAU,sBACd,UAAMA,UAAU,wBAAoC,OAAd,EAAE9rB,KAAKo2B,cAAO,EAAZ,OAAAp2B,OACxC,UAAM8rB,UAAU,8BACfs0C,GAAUke,EAAatP,eAExBsP,EAAa7P,UACb,EAAChL,GAAM,CACL33C,UAAU,0CACVo0C,KAAK,eACL/2D,MAAOqwD,GAAAA,WAAAA,MAAqB,iDAC5BlX,QAAS,SAAC/+C,GACRA,EAAEmC,iBACFnC,EAAEoC,kBAEF,EAAK6oE,YACP,IAGJ,SAAK1iD,UAAU,wBAAoC,OAAd,EAAE9rB,KAAK2vE,cAAO,EAAZ,OAAA3vE,OAG7C,EAsBA,EAGAwuE,WAAA,WAAa,QACPxuE,KAAK0qB,MAAM4zD,aAAa7P,WAEZ,OAAhB,EAAAjV,GAAAA,QAAAA,OAAA,EAAkBuiB,eAAe,CAAEgL,yBAAoE,OAA3C,EAACvtB,GAAAA,QAAAA,KAAAA,2BAA0C,EAAI,GAAK,IAEhHx5D,KAAK0qB,MAAM4zD,aAAapW,KAAK,CAAEuG,QAAQ,IACzC,EAAC,EApEuC,CAAsEpT,GCT3F2rB,GAA6B,uFAsB/C,OAtB+C,EAChD9mB,KAAA,WACE,MAAO,mBACT,EAAC,EAED9vC,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAC1BpgB,EAAaogB,EAAaC,UAEhC,OAAKrgB,EAIE1E,GAAAA,MAAAA,WAAqB0E,EAA0BogB,EAAaloD,UAAoC6wD,YAH9F,GAIX,EAAC,EAED7wD,QAAA,WACE,OAAOojC,GAAAA,WAAAA,MAAqB,mDAAoD,CAAE1M,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YAClH,EAAC,EAEDnX,QAAA,WACE,OAAO,IACT,EAAC,EAtB+C,CAASkX,ICN3D,SAAS9e,GAA6BxkE,GAChCi2D,GAAAA,SAAAA,iBACFA,GAAAA,SAAAA,WACAj2D,EAAEoC,kBAEN,CAEA,IAUqBuhF,GAAgB,uEAC5B3rB,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAM08C,YAAc18C,EAAM08C,aAAe5N,GAAAA,WAAAA,MAAqB,0CAC9D9uC,EAAM68C,YAAc78C,EAAM68C,aAAe/N,GAAAA,WAAAA,MAAqB,iDAC9D9uC,EAAMi9C,gBAAkBj9C,EAAMi9C,iBAAmBj9C,EAAMy9C,KAAK/xC,UAC5D1L,EAAMoiC,KAAOpiC,EAAMoiC,MAAQpiC,EAAMy9C,KAAKrb,OAEtCpiC,EAAMy9C,KAAKgf,cAAgBz8D,EAAMi9C,eACnC,EAAC,kBA4EA,OA5EA,EAEDC,YAAA,WACE,IAAMjK,EAAQ,EAAH,UAASiK,YAAW,WACzBO,EAAOnoE,KAAK0qB,MAAMy9C,KAYxB,OAVAxK,EAAM7kD,IACJ,QACA,YACGonD,GAAK,qBAAsB,IAC5B,EAAC7d,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,WAAqB2O,EAAKjK,aAAciK,EAAK3H,UAAWle,QAASylB,IAC1EvO,GAAAA,WAAAA,MAAqB,qCAAsC,CAAEgH,OAAQ2H,EAAK3H,SAAUtC,WAAYiK,EAAKjK,aAAa/0D,aAKlHw0D,CACT,EAEA,EAGAkK,cAAA,SAActkE,GACZwkE,GAA6BxkE,GAE7ByR,EAAEwrC,MAAM1kC,IAAI09C,GAAAA,MAAAA,KAAex5D,KAAK0qB,MAAMy9C,MACxC,EAEA,EAKAxmE,KAAA,WACE,MAAO,CACLy0B,QAASp2B,KAAK+mE,SAASW,OAAOtxC,UAElC,EAAC,EAED8uC,SAAA,WAAW,WACHhH,EAAal+D,KAAK0qB,MAAMy9C,KAAKjK,aAEnCl+D,KAAK0+D,SAAU,EAEf,IAAM/8D,EAAO3B,KAAK2B,OAElB3B,KAAK0qB,MAAMy9C,KAAKD,KAAKvmE,GAAMs1B,MAAK,SAACkxC,GAG/B,GAAI3O,GAAAA,kBAAsB0E,GACxB1E,GAAAA,QAAAA,IAAgB,UAAU4O,WAAWD,EAAK3H,eAK1C,IAAM6H,EAAQ7O,GAAAA,OAAAA,KACZ,CACEx0D,KAAM,UACNujE,SAAU,CACR,EAAC9E,GAAM,CACL33C,UAAU,sBACVw2B,QAAS,WACPttC,EAAEwrC,MAAM1kC,IAAI09C,GAAAA,MAAAA,KAAe2O,IAC3B3O,GAAAA,OAAAA,QAAmB6O,EACrB,GAEC7O,GAAAA,WAAAA,MAAqB,2CAI5BA,GAAAA,WAAAA,MAAqB,4CAIzB,EAAKuN,SAASp6D,MAChB,GAAG3M,KAAK8nE,OAAOp4B,KAAK1vC,MACtB,EAAC,EAtFkC,CAASsnE,ICZ9C,UASEiB,SAAQ,SAACJ,EAAMt0D,GAAS,WAChB8pD,EAAQ,IAAIlB,EAUlB,MARA,CAAC,OAAQ,aAAc,eAAe9lD,SAAQ,SAAC60D,GAC7C,IAAMjD,EAAW,EAAKiD,EAAU,YAAYrD,EAAMt0D,GAASoP,UACvDslD,EAAS9jE,SACX8jE,EAAS5xD,SAAQ,SAACsL,GAAI,OAAK07C,EAAM7kD,IAAImJ,EAAKg7C,SAAUh7C,EAAK,IACzD07C,EAAM7kD,IAAI0yD,EAAU,YAAa,EAAC,EAAS,OAE/C,IAEO7N,CACT,EAWA8N,aAAY,SAACtD,EAAMt0D,GACjB,OAAO,IAAI4oD,CACb,EAWAoP,mBAAkB,SAAC1D,EAAMt0D,GACvB,IAAM8pD,EAAQ,IAAIlB,EAalB,MAX2B,YAAvB0L,EAAKjxB,eAA+BixB,EAAKkS,YACtClS,EAAK8D,YACRtO,EAAM7kD,IACJ,OACA,EAAC2qD,GAAM,CAACvD,KAAK,oBAAoB5d,QAAStiD,KAAKonF,WAAW13C,KAAKy4B,IAC5D3O,GAAAA,WAAAA,MAAqB,2CAMvBmE,CACT,EAWAqO,oBAAmB,SAAC7D,EAAMt0D,GACxB,IAAM8pD,EAAQ,IAAIlB,EA8BlB,MA5B2B,YAAvB0L,EAAKjxB,eAAgCixB,EAAK8D,YAUjB,YAAvB9D,EAAKjxB,eAA+BixB,EAAK+D,WAC3CvO,EAAM7kD,IACJ,UACA,EAAC2qD,GAAM,CAACvD,KAAK,eAAe5d,QAAStiD,KAAKmsE,cAAcz8B,KAAKy4B,IAC1D3O,GAAAA,WAAAA,MAAqB,6CAIxB2O,EAAKiE,aACPzO,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,eAAe5d,QAAStiD,KAAKqsE,aAAa38B,KAAKy4B,EAAMt0D,IAC/D2lD,GAAAA,WAAAA,MAAqB,qDArBxB2O,EAAK+D,WACPvO,EAAM7kD,IACJ,OACA,EAAC2qD,GAAM,CAACvD,KAAK,mBAAmB5d,QAAStiD,KAAKssE,WAAW58B,KAAKy4B,IAC3D3O,GAAAA,WAAAA,MAAqB,4CAuBvBmE,CACT,EAOAypB,WAAU,WAAG,WACX,OAAO,IAAIznC,SAAQ,SAAChpB,GAIlB,OAHA6iC,GAAAA,SAAAA,KAAkB0tB,GAAkB,CAAE/e,KAAM,IAC5C3O,GAAAA,SAAAA,OAEO7iC,GACT,GACF,EAOA21C,WAAU,WACR,GAAKM,QAAQvM,GAAY7G,GAAAA,WAAAA,MAAqB,gDAG9C,OAFAx5D,KAAKysE,SAAS,CAAEvkE,WAAY,CAAEwkE,SAAU,IAAIzyD,MAAUguD,cAAe,CAAE0E,WAAYnT,GAAAA,QAAAA,QAE5Ex5D,KAAKkoE,KAAK,CAAE+D,UAAU,IAAQh1C,MAAK,kBAAMjiB,EAAEwqC,QAAQ,GAC5D,EAOA2sB,cAAa,WAGX,OAFAnsE,KAAKysE,SAAS,CAAEvkE,WAAY,CAAEwkE,SAAU,MAAQzE,cAAe,CAAE0E,WAAY,QAEtE3sE,KAAKkoE,KAAK,CAAE+D,UAAU,IAASh1C,MAAK,kBAAMjiB,EAAEwqC,QAAQ,GAC7D,EAOA6sB,aAAY,SAACx4D,GAAS,WACpB,GAAK+4D,QAAQvM,GAAY7G,GAAAA,WAAAA,MAAqB,kDAG9C,OAFI3lD,IAASA,EAAQ6qD,SAAU,GAExB1+D,KAAI,SACRi3B,MAAK,WACJ,IAAMinC,EAAa,EAAKA,aAExBA,EAAW6f,WAAW,EAAKp0D,MAItBu0C,EAAW4U,UAAUruE,SACxB+0D,GAAAA,YAAAA,iBAAiC0E,GAE7B1E,GAAAA,kBAAsB0E,IACxB1E,GAAAA,QAAAA,OAGN,IAAE,OACK,WAAO,IACbviC,MAAK,WACApjB,IAASA,EAAQ6qD,SAAU,GAC/B1pD,EAAEwqC,QACJ,GACJ,GCxKF,IAK8B6nC,GAAI,mGAUzB,OAVyB,0CAIhC3oB,SAAU,EAAK,EAMfoP,aAAO,IAVyB,OAUzB,kBAyHN,OAzHM,EAEPvrB,OAAA,SAAOH,GAAyC,WAC9C,YAAMG,OAAM,UAACH,GAEbpiD,KAAK0+D,SAAU,EAEf1+D,KAAK8tE,QAAU,IAAIxL,IACjB,kBAAM,EAAK5D,OAAO,IAClB,kBAAM,EAAKh0C,MAAMy9C,KAAK6F,SAAS,IAC/B,WACE,IAAMlhB,EAAO,EAAKpiC,MAAMy9C,KAAKrb,OAC7B,OAAOA,GAAQA,EAAKkhB,SACtB,GAEJ,EAAC,EAEDrpC,KAAA,SAAKyd,GAAyC,WACtC13B,EAAQ1qB,KAAKiuE,eAEnBvjD,EAAMoB,UAAY9rB,KAAKumD,QAAQ77B,EAAMoB,WAAiC1T,KAAK,KAE3E,IAAMmwD,EAAW+e,GAAa/e,SAASvoE,KAAK0qB,MAAMy9C,KAAMnoE,MAAMijB,UACxDskE,EAAcvnF,KAAKunF,cAActkE,UAEvC,OACE,YAAayH,EACX,aACG1qB,KAAK0+D,QAAU,EAACgE,GAAgB,MAAM1iE,KAAKo2B,UAC5C,WAAOtK,UAAU,gBACf,YACG0xC,EAAUx9D,KAAKwnF,cAAcvkE,aAC3BslD,EAAS9jE,QACV,YACE,EAACN,GAAQ,CACP2nB,UAAU,gBACV80C,gBAAgB,mCAChBC,cAAc,uBACdX,KAAK,oBACLmB,OAAQ,kBAAM,EAAKhhE,EAAE,kBAAkBwC,SAAS,OAAO,EACvD++D,OAAQ,kBAAM,EAAKvhE,EAAE,kBAAkBuC,YAAY,OAAO,EAC1Do+D,sBAAuBxH,GAAAA,WAAAA,MAAqB,8DAE3C+O,MAMX,YAAQz8C,UAAU,eAAey7D,EAAY9iF,OAAS,YAAK+4D,EAAU+pB,IAAqB,OAIlG,EAAC,EAEDrlC,eAAA,SAAeE,GAGb,OAFA,YAAMF,eAAc,UAACE,GAEdpiD,KAAK8tE,QAAQtL,cACtB,EAAC,EAEDhgB,SAAA,SAASJ,GACP,YAAMI,SAAQ,UAACJ,GAEf,IAAMqlC,EAAWznF,KAAKK,EAAE,iBAClBqnF,EAAY1nF,KAAKK,EAAE,kBAEzBonF,EAASjiF,YAAY,aAAckiF,EAAU3iF,SAAS,QACxD,EAEA,EAGAkpE,aAAA,WACE,MAAO,CAAC,CACV,EAEA,EAGA73C,QAAA,WAEE,MAAO,EACT,EAEA,EAGAmwB,QAAA,SAAQohC,GACN,IAAIphC,GAAWohC,GAAY,IAAI57E,MAAM,KAAK5L,OAAO,CAAC,SAE5C2sD,EAAO9sD,KAAK0qB,MAAMy9C,KAAKrb,OACvBoR,EAAal+D,KAAK0qB,MAAMy9C,KAAKjK,aAcnC,OAZIl+D,KAAK0+D,SACPnY,EAAQrxC,KAAK,iBAGX43C,GAAQA,IAAS0M,GAAAA,QAAAA,MACnBjT,EAAQrxC,KAAK,kBAGX43C,GAAQA,IAASoR,EAAWpR,QAC9BvG,EAAQrxC,KAAK,uBAGRqxC,CACT,EAEA,EAGAihC,YAAA,WACE,OAAO,IAAI/qB,CACb,EAEA,EAGA8qB,YAAA,WACE,OAAO,IAAI9qB,CACb,EAAC,EAnI+B,CAAsDpB,GCbnEusB,GAAU,8DAY5B,OAZ4B,SACtBrsB,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEZA,EAAM+zD,QACR/zD,EAAMw1C,KAAOx1C,EAAM+zD,MAAMve,QAAU,GACnCx1C,EAAMrT,MAAQqT,EAAM+zD,MAAMpnE,SAAW,GACrCqT,EAAMo2C,WAA+B,IAAhBp2C,EAAMo2C,MAAwBp2C,EAAM+zD,MAAMoJ,eAAiBn9D,EAAMo2C,MACtFp2C,EAAM1lB,KAAO,UAAY0lB,EAAM+zD,MAAM90D,YAE9Be,EAAM+zD,MAEjB,EAAC,EAZ4B,CAAwDpB,ICLlEyK,GAAK,uFAqBvB,OArBuB,EAKxBD,aAAA,WACE,OAAOnM,GAAAA,UAAwB,gBAAgB37E,KAAKC,KACtD,EAAC,EACD+nF,WAAA,WACE,OAAOrM,GAAAA,UAAwB,cAAc37E,KAAKC,KACpD,EAAC,EAEDqX,MAAA,WACE,OAAOqkE,GAAAA,UAA+B,SAAS37E,KAAKC,KACtD,EAAC,EACDkgE,KAAA,WACE,OAAOwb,GAAAA,UAA+B,QAAQ37E,KAAKC,KACrD,EAAC,EAEDisE,SAAA,WACE,OAAOyP,GAAAA,UAAyB,YAAY37E,KAAKC,KACnD,EAAC,EArBuB,CAAS07E,IAAdoM,GACZE,iBAAmB,IADPF,GAEZG,SAAW,IAFCH,GAGZI,UAAY,ICEgB,IAShBC,GAAa,mGAMsB,OANtB,0CACtB3sC,cAAQ,IACRquB,WAAK,IACLue,sBAAgB,IAChBC,iBAAW,IACXx3D,cAAQ,IACRtH,OAA0C,CAAC,EAAC,EANtB,OAMsB,kBAsOrD,OAtOqD,EAEtDg5B,OAAA,SAAOH,GAAyC,WAC9C,YAAMG,OAAM,UAACH,GAEb,IAAM0K,EAAO9sD,KAAK0qB,MAAMoiC,KAExB9sD,KAAKw7C,SAAW4R,GAAON,EAAKtR,YAAc,IAC1Cx7C,KAAK6pE,MAAQzc,GAAON,EAAK+c,SAAW,IACpC7pE,KAAKooF,iBAAmBh7B,GAAON,EAAKs7B,qBAAsB,GAC1DpoF,KAAKqoF,YAAcj7B,IAAO,GAC1BptD,KAAK6wB,SAAWu8B,GAAON,EAAKj8B,YAAc,IAE1C,IAAMy3D,EAAax7B,EAAKvjC,UAAY,GAEpCiwC,EAAImiB,MAAJniB,IACc,UACX1yD,QAAO,SAAC23E,GAAK,OAAM,CAACqJ,GAAMG,SAAUH,GAAMI,WAAWhuB,SAASukB,EAAM90D,KAAM,IAC1EhT,SAAQ,SAAC8nE,GAAK,OAAM,EAAKl1D,OAAOk1D,EAAM90D,MAASyjC,GAAOk7B,EAAWpuB,SAASukB,GAAO,GACtF,EAAC,EAED3yD,UAAA,WACE,MAAO,4BACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,EAAIiH,WAAWC,MAAM,2BAC9B,EAAC,EAEDtqC,QAAA,WACE,IAAMsxC,EAAS1nE,KAAK0nE,SAASzkD,UAC7B,OACE,SAAK6I,UAAU,cACZ47C,EAAOjjE,OAAS,EAAI,SAAKqnB,UAAU,QAAQ9rB,KAAK0nE,SAASzkD,WAAmBu2C,EAAIiH,WAAWC,MAAM,wCAGxG,EAAC,EAEDgH,OAAA,WAAS,WACD/J,EAAQ,IAAIlB,EAsHlB,OApHIz8D,KAAK0qB,MAAMoiC,KAAKy7B,uBAClB5qB,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,eAAQ0tC,EAAIiH,WAAWC,MAAM,wCAC7B,WACE50C,UAAU,cACV84C,YAAavE,GAAY7G,EAAIiH,WAAWC,MAAM,sCAC9C7H,KAAM74D,KAAKw7C,SACXxyB,SAAUhpB,KAAKwoF,0BAGnB,IAGEhvB,EAAIskB,QAAQhxB,OAAS9sD,KAAK0qB,MAAMoiC,OAClC6Q,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,cACb,eAAQ0tC,EAAIiH,WAAWC,MAAM,qCAC7B,aACE,WACE50C,UAAU,cACV84C,YAAavE,GAAY7G,EAAIiH,WAAWC,MAAM,mCAC9C7H,KAAM74D,KAAK6pE,MACX7gD,SAAUhpB,KAAKwoF,2BAGjBxoF,KAAKooF,oBAAsBpoF,KAAKyoF,YAAYjvB,EAAIskB,QAAQhxB,OACxD,aACE,EAAC2W,GAAM,CAAC33C,UAAU,uBAAuB4yC,QAAS1+D,KAAK0+D,QAASpc,QAAStiD,KAAK0tE,SAASh+B,KAAK1vC,OACzFw5D,EAAIiH,WAAWC,MAAM,yCAK9B,IAGF/C,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,eAAQ0tC,EAAIiH,WAAWC,MAAM,wCAC7B,aACE,WAAO50C,UAAU,YACf,WACE9mB,KAAK,WACL+zD,SAAU,SAACx1D,GACT,IAAM5C,EAAS4C,EAAE5C,OACjB,EAAK0nF,YAAY1nF,EAAO2vB,SACxBtb,EAAEwqC,OAAOD,OACL5+C,EAAO2vB,SAAS,EAAKjwB,EAAE,mBAAmBwlB,SAC9CtiB,EAAEi8C,QAAS,CACb,EACAx2B,SAAUhpB,KAAKwoF,yBAEhBhvB,EAAIiH,WAAWC,MAAM,0CAEvB1gE,KAAKqoF,eACJ,WACEv8D,UAAU,cACV9mB,KAAK,WACL6N,KAAK,WACL+xD,YAAavE,GAAY7G,EAAIiH,WAAWC,MAAM,sCAC9C7H,KAAM74D,KAAK6wB,SACX7H,SAAUhpB,KAAKwoF,2BAKvB,MAKFxoF,KAAK0qB,MAAMoiC,KAAK47B,iBAClB/qB,EAAM7kD,IACJ,SACA,SAAKgT,UAAU,mCACb,eAAQ0tC,EAAIiH,WAAWC,MAAM,sCAC7B,aACGj/C,OAAOvB,KAAKlgB,KAAKupB,QACf3hB,KAAI,SAAC+hB,GAAE,OAAK6vC,EAAImiB,MAAM3vD,QAAe,SAAUrC,EAAG,IAClD7iB,OAAOJ,SACPkB,KACC,SAAC62E,GAAK,OAEJA,GACE,WAAO3yD,UAAU,YACf,WACE9mB,KAAK,WACL6zD,KAAM,EAAKtvC,OAAOk1D,EAAM90D,MACxBX,SACEy1D,EAAM90D,OAASm+D,GAAME,mBAAqB,EAAKt9D,MAAMoiC,OAAS0M,EAAIskB,QAAQhxB,OAAS,EAAK27B,YAAYjvB,EAAIskB,QAAQhxB,SAGpH,EAAC86B,GAAU,CAACnJ,MAAOA,EAAO3d,MAAO,OAAQ,IAAE2d,EAAMoJ,eAEpD,MAIX,IAIJlqB,EAAM7kD,IACJ,SACA,SAAKgT,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,yBAAyB9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SACpElF,EAAIiH,WAAWC,MAAM,uCAGzB,IAGI/C,CACT,EAAC,EAED+P,SAAA,WAAW,WACT1tE,KAAK0+D,SAAU,EACf,IAAM/8D,EAAO,CACX65C,SAAUx7C,KAAKw7C,WACf4sC,kBAAkB,GAEpBpoF,KAAK0qB,MAAMoiC,KACRob,KAAKvmE,EAAM,CAAEqoE,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAC7Ci3B,MAAK,WACJ,EAAKmxD,kBAAiB,GACtB,EAAK1pB,SAAU,EACf1pD,EAAEwqC,QACJ,IAAE,OACK,WACL,EAAKkf,SAAU,EACf1pD,EAAEwqC,QACJ,GACJ,EAAC,EAED79C,KAAA,WAAO,WACCA,EAAuB,CAAC,EACxBsmE,EAAmC,CAAC,EAuB1C,OArBIjoE,KAAK0qB,MAAMoiC,KAAKy7B,uBAAyBvoF,KAAKwoF,yBAChD7mF,EAAK65C,SAAWx7C,KAAKw7C,WAEjBge,EAAIskB,QAAQhxB,OAAS9sD,KAAK0qB,MAAMoiC,OAClCnrD,EAAKkoE,MAAQ7pE,KAAK6pE,SAGhB7pE,KAAKqoF,gBACP1mF,EAAKkvB,SAAW7wB,KAAK6wB,aAIrB7wB,KAAK0qB,MAAMoiC,KAAK47B,kBAClBzgB,EAAc1+C,OAAS9H,OAAOvB,KAAKlgB,KAAKupB,QACrCziB,QAAO,SAAC6iB,GAAE,OAAK,EAAKJ,OAAOI,IAAK,IAChC/hB,KAAI,SAAC+hB,GAAE,OAAK6vC,EAAImiB,MAAM3vD,QAAe,SAAUrC,EAAG,IAClD7iB,QAAO,SAACgO,GAAC,OAAiBA,aAAagzE,EAAK,KAGjDnmF,EAAKsmE,cAAgBA,EAEdtmE,CACT,EAAC,EAEDujE,SAAA,SAAS3hE,GAAgB,WACvBA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf1+D,KAAK0qB,MAAMoiC,KACRob,KAAKloE,KAAK2B,OAAQ,CAAEqoE,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QACpDi3B,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,OAAM,OACpB,WACL,EAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,GACJ,EAAC,EAEDgpC,qBAAA,WACE,OAAOxoF,KAAKyoF,YAAYzoF,KAAK0qB,MAAMoiC,QAAU9sD,KAAKyoF,YAAYjvB,EAAIskB,QAAQhxB,KAC5E,EAEA,EAGU27B,YAAV,SAAsB37B,GACpB,UAAc,MAAJA,OAAI,EAAJA,EAAMvjC,WAAY,IAAI+3B,MAAK,SAACxsC,GAAC,OAAM,MAADA,OAAC,EAADA,EAAG6U,QAASm+D,GAAME,gBAAgB,GAChF,EAAC,EA5O+B,CAAwEnf,ICHrF8f,GAAc,uFAsChC,OAtCgC,EACjChkD,KAAA,SAAKyd,GACH,OAAOA,EAAM9sB,SAAS,EACxB,EAAC,EAED6sB,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAGfpiD,KAAK4oF,cAAgB5oF,KAAKy2E,SAAS/mC,KAAK1vC,MACxCK,EAAE0B,QAAQhB,GAAG,SAAUf,KAAK4oF,eAAelS,QAC7C,EAAC,EAED11B,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEf/hD,EAAE0B,QAAQmQ,IAAI,SAAUlS,KAAK4oF,cAC/B,EAAC,EAEDnS,SAAA,WAAW,WACHoS,EAAW7oF,KAAKK,IAChByoF,EAAUzoF,EAAE,WACZ0oF,EAAU1oF,EAAE,WACZ2oF,EAAgBH,EAAShoF,KAAK,QAEpCR,EAAE0B,QAAQmQ,IAAI,UACd82E,EAAcpmF,YAAY,gCAAgCuP,WAAW,YAIjE02E,EAASxX,aAAY,GAAQhxE,EAAE0B,QAAQG,SAAW4mF,EAAQzX,aAAY,IAE1E2X,EAAc5lF,MAAM,CAClBtB,OAAQ,CACNU,IAAK,kBAAMqmF,EAAS/mF,SAASU,IAAMsmF,EAAQzX,aAAY,GAAQ9hE,SAASs5E,EAASxlF,IAAI,cAAe,GAAG,EACvGL,OAAQ,kBAAO,EAAKA,OAAS+lF,EAAQ1X,aAAY,EAAK,IAG5D,EAAC,EAtCgC,CAAShW,GCSvB4tB,GAAQ,mGAIH,OAJG,0CAI3Bn8B,KAAoB,KAAI,EAJG,OAIH,kBAuJvB,OAvJuB,EAExBvK,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAK47D,UAAY,WACnB,EAEA,EAGAj3B,KAAA,WACE,OACE,SAAK7Y,UAAU,YACZ9rB,KAAK8sD,KACF,CACE,EAACo8B,GAAQ,CACPp8B,KAAM9sD,KAAK8sD,KACXhhC,UAAU,gBACVq9D,SAAUnpF,KAAK8sD,KAAKutB,WAAar6E,KAAK8sD,OAAS0M,GAAAA,QAAAA,KAC/C4vB,wBAAwB,WAE1B,SAAKt9D,UAAU,aACb,SAAKA,UAAU,oBACb,EAAC68D,GAAc,KACb,SAAK78D,UAAU,wBACb,YAAK0xC,EAAUx9D,KAAK06E,eAAez3D,cAGvC,SAAK6I,UAAU,kCAAkC9rB,KAAKo2B,cAI5D,CAAC,EAACssC,GAAgB,CAACz0D,QAAQ,WAGrC,EAEA,EAGAmoB,QAAA,WAAoC,EAEpC,EAMA1pB,KAAA,SAAKogD,GACH9sD,KAAK8sD,KAAOA,EAEZ0M,GAAAA,QAAAA,IAAgB,OAAQ1M,GAExB0M,GAAAA,SAAa1M,EAAK6J,eAElB3hD,EAAEwqC,QACJ,EAEA,EAIA6pC,SAAA,SAAS7tC,GAAkB,WACnB8tC,EAAoB9tC,EAASh1C,cAKnCgzD,GAAAA,uBAEAA,GAAAA,MAAAA,IAAoB,SAASlY,MAAK,SAACwL,GACjC,QAAKA,EAAKtR,WAAWh1C,gBAAkB8iF,GAAqBx8B,EAAKnjC,OAAS6xB,IAAasR,EAAKy8B,aAC1F,EAAK78E,KAAKogD,GACH,GAIX,IAEK9sD,KAAK8sD,MACR0M,GAAAA,MAAAA,KAAqB,QAAShe,EAAU,CAAEu/B,QAAQ,IAAQ9jD,KAAKj3B,KAAK0M,KAAKgjC,KAAK1vC,MAElF,EAEA,EAGA06E,aAAA,WACE,IAAM/c,EAAQ,IAAIlB,EASlB,OAPAkB,EAAM7kD,IACJ,MACA,EAACyiE,GAAc,CAACzvD,UAAU,mBAAmB80C,gBAAgB,UAC1D5gE,KAAKwpF,WAAWvmE,YAId06C,CACT,EAEA,EAGA6rB,SAAA,WACE,IAAM7rB,EAAQ,IAAIlB,EACZ3P,EAAO9sD,KAAK8sD,KACZ28B,EAAUjwB,GAAAA,QAAAA,OAAqB1M,EA2CrC,OAzCA6Q,EAAM7kD,IACJ,QACA,EAACuiE,GAAU,CAACjrD,KAAMopC,GAAAA,MAAU,aAAc,CAAEhe,SAAUsR,EAAKgS,SAAWoB,KAAK,kBACxE1G,GAAAA,WAAAA,MAAqB,8BAA6B,IAAE,UAAM1tC,UAAU,gBAAgBghC,EAAK8wB,iBAE5F,KAGFjgB,EAAM7kD,IACJ,cACA,EAACuiE,GAAU,CAACjrD,KAAMopC,GAAAA,MAAU,mBAAoB,CAAEhe,SAAUsR,EAAKgS,SAAWoB,KAAK,eAC9E1G,GAAAA,WAAAA,MAAqB,oCAAmC,IAAE,UAAM1tC,UAAU,gBAAgBghC,EAAK48B,oBAElG,IAGED,IACF9rB,EAAM7kD,IAAI,YAAa,EAAC,EAAS,OAAM,IACvC6kD,EAAM7kD,IACJ,WACA,EAACuiE,GAAU,CAACjrD,KAAMopC,GAAAA,MAAU,YAAa0G,KAAK,cAC3C1G,GAAAA,WAAAA,MAAqB,mCAEvB,OAIDiwB,GAAWjwB,GAAAA,MAAAA,UAA6B,8BACrCiwB,GACH9rB,EAAM7kD,IAAI,qBAAsB,EAAC,EAAS,OAAM,IAGlD6kD,EAAM7kD,IACJ,WACA,EAACuiE,GAAU,CAACjrD,KAAMopC,GAAAA,MAAU,gBAAiB,CAAEhe,SAAUsR,EAAKgS,SAAWoB,KAAK,qBAC3E1G,GAAAA,WAAAA,MAAqB,mCAEvB,MAIEmE,CACT,EAAC,EA3J0B,CAAuFhC,GCXpH,UASE4M,SAAQ,SAACzb,EAAMj5C,GAAS,WAChB8pD,EAAQ,IAAIlB,EAUlB,MARA,CAAC,OAAQ,aAAc,eAAe9lD,SAAQ,SAAC60D,GAC7C,IAAMjD,EAAW,EAAKiD,EAAU,YAAY1e,EAAMj5C,GAASoP,UACvDslD,EAAS9jE,SACX8jE,EAAS5xD,SAAQ,SAACsL,GAAI,OAAK07C,EAAM7kD,IAAImJ,EAAKg7C,SAAUh7C,EAAK,IACzD07C,EAAM7kD,IAAI0yD,EAAU,YAAa,EAAC,EAAS,OAE/C,IAEO7N,CACT,EAWA8N,aAAY,WACV,OAAO,IAAIhP,CACb,EAWAoP,mBAAkB,SAAC/e,GACjB,IAAM6Q,EAAQ,IAAIlB,EAWlB,OATI3P,EAAKutB,WAAavtB,EAAKy7B,sBAAwBz7B,EAAK47B,kBACtD/qB,EAAM7kD,IACJ,OACA,EAAC2qD,GAAM,CAACvD,KAAK,oBAAoB5d,QAAStiD,KAAKonF,WAAW13C,KAAK1vC,KAAM8sD,IAClE0M,GAAAA,WAAAA,MAAqB,0CAKrBmE,CACT,EAWAqO,oBAAmB,SAAClf,GAClB,IAAM6Q,EAAQ,IAAIlB,EAWlB,MATkB,MAAd3P,EAAKnjC,MAAgBmjC,EAAKsf,aAC5BzO,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,eAAe5d,QAAStiD,KAAKqsE,aAAa38B,KAAK1vC,KAAM8sD,IAC/D0M,GAAAA,WAAAA,MAAqB,4CAKrBmE,CACT,EAOA0O,aAAY,SAACvf,GAAM,WACZ8f,QAAQpT,GAAAA,WAAAA,MAAqB,kDAIlC1M,EAAI,SAED71B,MAAK,WACJ,EAAK0yD,kBAAkB78B,EAAM,WACzB0M,GAAAA,QAAAA,QAAoByvB,GAAU,CAAEn8B,KAAAA,IAClC0M,GAAAA,QAAAA,OAEAz3D,OAAOkuB,SAAS66C,QAEpB,IAAE,OACK,kBAAM,EAAK6e,kBAAkB78B,EAAM,QAAQ,GACtD,EAQA68B,kBAAiB,SAAC78B,EAAM9nD,GACtB,IAAMw1B,EAAU,CACdif,QAAS,kDACTp1B,MAAO,iDACPrf,GAEFw0D,GAAAA,OAAAA,KACE,CAAEx0D,KAAAA,GACFw0D,GAAAA,WAAAA,MAAqBh/B,EAAS,CAC5BsyB,KAAAA,EACA+c,MAAO/c,EAAK+c,UAGlB,EAOAud,WAAU,SAACt6B,GACT0M,GAAAA,MAAAA,KAAe2uB,GAAe,CAAEr7B,KAAAA,GAClC,GCxIF,IASqB88B,GAAY,uFAiN9B,OAjN8B,EAC/BrnC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAObpiD,KAAK0+D,SAAU,EAOf1+D,KAAK6pF,eAAgB,CACvB,EAAC,EAEDllD,KAAA,WACE,IAAMmoB,EAAO9sD,KAAK0qB,MAAMoiC,KAExB,OACE,SAAKhhC,UAAWkyC,EAAU,CAAC,eAAgB,WAAYh+D,KAAK0qB,MAAMoB,UAAW9rB,KAAK0+D,SAAW,UAAW1+D,KAAK6pF,eAAiB,cAC3HprB,EAAO3R,EAAM,CAAE4R,QAAS,UACzB,OACE5yC,UAAWghC,EAAK8R,YAAc,kBAAoB,yCAClDz1D,MAAOqwD,GAAAA,WAAAA,MAAqB,yCAC5B,cAAY,WACZlX,QAAStiD,KAAK8pF,YAAYp6C,KAAK1vC,MAC/B+pF,WAAY/pF,KAAKgqF,eAAet6C,KAAK1vC,MACrCiqF,YAAajqF,KAAKgqF,eAAet6C,KAAK1vC,MACtCkqF,YAAalqF,KAAKmqF,gBAAgBz6C,KAAK1vC,MACvCoqF,UAAWpqF,KAAKmqF,gBAAgBz6C,KAAK1vC,MACrCqqF,OAAQrqF,KAAKsqF,WAAW56C,KAAK1vC,OAE5BA,KAAK0+D,QACJ,EAACgE,GAAgB,CAACz0D,QAAQ,QAAQ4H,KAAK,UACrCi3C,EAAK8R,YACPsB,GAAK,qBAELA,GAAK,uBAGT,QAAIp0C,UAAU,sBAAsB0xC,EAAUx9D,KAAK6mE,eAAe5jD,YAGxE,EAEA,EAKA4jD,aAAA,WACE,IAAMlJ,EAAQ,IAAIlB,EAgBlB,OAdAkB,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,gBAAgB5d,QAAStiD,KAAKuqF,WAAW76C,KAAK1vC,OACxDw5D,GAAAA,WAAAA,MAAqB,0CAI1BmE,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAACvD,KAAK,eAAe5d,QAAStiD,KAAK6E,OAAO6qC,KAAK1vC,OACnDw5D,GAAAA,WAAAA,MAAqB,0CAInBmE,CACT,EAEA,EAKAqsB,eAAA,SAAezmF,GACbA,EAAEmC,iBACFnC,EAAEoC,kBACF3F,KAAK6pF,eAAgB,CACvB,EAEA,EAKAM,gBAAA,SAAgB5mF,GACdA,EAAEmC,iBACFnC,EAAEoC,kBACF3F,KAAK6pF,eAAgB,CACvB,EAEA,EAKAS,WAAA,SAAW/mF,GACTA,EAAEmC,iBACFnC,EAAEoC,kBACF3F,KAAK6pF,eAAgB,EACrB7pF,KAAKwqF,OAAOjnF,EAAEknF,aAAaC,MAAM,GACnC,EAEA,EAQAZ,YAAA,SAAYvmF,GACLvD,KAAK0qB,MAAMoiC,KAAK8R,cACnBr7D,EAAEmC,iBACFnC,EAAEoC,kBACF3F,KAAKuqF,aAET,EAEA,EAGAA,WAAA,WAAa,WACPvqF,KAAK0+D,SAIMr+D,EAAE,8DAGd6N,SAAS,QACTvB,OACAlB,QACA1K,GAAG,SAAS,SAACwC,GACZ,EAAKinF,OAAOnqF,EAAEkD,EAAE5C,QAAQ,GAAG+pF,MAAM,GACnC,GACJ,EAEA,EAKAF,OAAA,SAAO55D,GACL,IAAI5wB,KAAK0+D,QAAT,CAEA,IAAM5R,EAAO9sD,KAAK0qB,MAAMoiC,KAClBnrD,EAAO,IAAIgrD,SACjBhrD,EAAK8lC,OAAO,SAAU7W,GAEtB5wB,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEFga,GAAAA,QACW,CACP1iC,OAAQ,OACR+f,IAAQ2iB,GAAAA,MAAAA,UAAoB,UAAS,UAAU1M,EAAKnjC,KAAI,UACxDqrB,UAAW,SAAC5Z,GAAG,OAAKA,CAAG,EACvBj4B,KAAMxB,IAEPs1B,KAAKj3B,KAAKy5C,QAAQ/J,KAAK1vC,MAAOA,KAAK2qF,QAAQj7C,KAAK1vC,MAhB3B,CAiB1B,EAEA,EAGA6E,OAAA,WACE,IAAMioD,EAAO9sD,KAAK0qB,MAAMoiC,KAExB9sD,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEFga,GAAAA,QACW,CACP1iC,OAAQ,SACR+f,IAAQ2iB,GAAAA,MAAAA,UAAoB,UAAS,UAAU1M,EAAKnjC,KAAI,YAEzDsN,KAAKj3B,KAAKy5C,QAAQ/J,KAAK1vC,MAAOA,KAAK2qF,QAAQj7C,KAAK1vC,MACrD,EAEA,EAOAy5C,QAAA,SAAQK,GACN0f,GAAAA,MAAAA,YAAsB1f,UACf95C,KAAK0qB,MAAMoiC,KAAK89B,YAEvB5qF,KAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,EAEA,EAMAmrC,QAAA,SAAQ7wC,GACN95C,KAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,EAAC,EAjN8B,CAAS6b,GCOrB6tB,GAAQ,uFA2E1B,OA3E0B,EAC3BvkD,KAAA,WACE,IAAMmoB,EAAO9sD,KAAK0qB,MAAMoiC,KAClByb,EAAWsiB,GAAatiB,SAASzb,EAAM9sD,MAAMijB,UAC7C5L,EAAQy1C,EAAKz1C,QACb8mD,EAASrR,EAAKqR,SAASl7C,UAE7B,OACE,SAAK6I,UAAWkyC,EAAU,WAAYh+D,KAAK0qB,MAAMoB,WAAY/Y,MAAOsE,GAAS,CAAE,gBAAiBA,IAC9F,SAAKyU,UAAU,oBACb,SAAKA,UAAU,eACVy8C,EAAS9jE,QACV,EAACN,GAAQ,CACP2nB,UAAU,uCACV+0C,cAAc,uBACdD,gBAAiB5gE,KAAK0qB,MAAM0+D,wBAC5BtoB,MAAOtH,GAAAA,WAAAA,MAAqB,mCAC5BwH,sBAAuBxH,GAAAA,WAAAA,MAAqB,6DAC5C0G,KAAK,qBAEJqI,GAIL,SAAKz8C,UAAU,oBACb,QAAIA,UAAU,qBACX9rB,KAAK0qB,MAAMy+D,SACV,WACE,EAACS,GAAY,CAAC98B,KAAMA,EAAMhhC,UAAU,oBAAoB,IAAE0vB,GAASsR,IAGrE,EAACzK,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,KAAe1M,IACzB,SAAKhhC,UAAU,mBAAmB2yC,EAAO3R,EAAM,CAAE4R,QAAS,WACzDljB,GAASsR,OAKbqR,EAAO15D,QAAU,QAAIqnB,UAAU,0BAA0B0xC,EAAUW,IAEtE,QAAIryC,UAAU,iBAAiB0xC,EAAUx9D,KAAKmvE,YAAYlsD,eAMtE,EAEA,EAKAksD,UAAA,WACE,IAAMxR,EAAQ,IAAIlB,EACZ3P,EAAO9sD,KAAK0qB,MAAMoiC,KAClBg+B,EAAah+B,EAAKg+B,aAExB,GAAIA,EAAY,CACd,IAAMC,EAASj+B,EAAKk+B,WAEpBrtB,EAAM7kD,IACJ,WACA,UAAMgT,UAAWkyC,EAAU,oBAAqB,CAAE+sB,OAAAA,KAC/CA,EACG,CAAC7qB,GAAK,iBAAkB,IAAK1G,GAAAA,WAAAA,MAAqB,gCAClD,CAAC0G,GAAK,gBAAiB,IAAKE,GAAU0qB,KAE5C,IAEJ,CAIA,OAFAntB,EAAM7kD,IAAI,SAAU0gD,GAAAA,WAAAA,MAAqB,mCAAoC,CAAEwI,IAAK5B,GAAUtT,EAAKy8B,cAAgB,IAE5G5rB,CACT,EAAC,EA3E0B,CAAStC,GCnBvB,SAAS4vB,GAAWn+B,GACjC,OAAIA,EAAKg+B,cAAgBh+B,EAAKk+B,WACrB,UAAMl/D,UAAU,cAAco0C,GAAK,kBAGrC,IACT,CCJA,IAOqBgrB,GAAQ,uFAmE1B,OAnE0B,EAC3BvmD,KAAA,WACE,IAAMwjC,EAAOnoE,KAAK0qB,MAAMy9C,KAClBrb,EAAOqb,EAAKrb,OAElB,OAAKA,EAWH,SAAKhhC,UAAU,YACb,QAAIA,UAAU,iBACZ,EAACu2B,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,KAAe1M,IACxB2R,EAAO3R,EAAM,CAAEhhC,UAAW,oBAC1Bm/D,GAAWn+B,GACXtR,GAASsR,KAGd,QAAIhhC,UAAU,0BAA0B0xC,EAAU1Q,EAAKqR,SAASl7C,aAE9DklD,EAAK8D,YAAcjsE,KAAK0qB,MAAMygE,aAC9B,EAACjC,GAAQ,CAACp8B,KAAMA,EAAMhhC,UAAU,oBAAoBs9D,wBAAwB,sCApB9E,SAAKt9D,UAAU,YACb,QAAIA,UAAU,iBACX2yC,EAAO3R,EAAM,CAAEhhC,UAAW,oBAAoB,IAAG0vB,GAASsR,IAsBrE,EAAC,EAED3K,SAAA,SAASC,GAAO,IAGVz5C,EAHU,OACd,YAAMw5C,SAAQ,UAACC,GAIfpiD,KAAKK,IACFU,GAAG,YAAa,+BAA+B,WAC9CoM,aAAaxE,GACbA,EAAU7F,WAAW,EAAKsoF,SAAS17C,KAAK,GAAO,IACjD,IACC3uC,GAAG,WAAY,+BAA+B,WAC7CoM,aAAaxE,GACbA,EAAU7F,WAAW,EAAKuoF,SAAS37C,KAAK,GAAO,IACjD,GACJ,EAEA,EAGA07C,SAAA,WAAW,WACTprF,KAAK0qB,MAAM4gE,aAEXxoF,YAAW,kBAAM,EAAKzC,EAAE,aAAawC,SAAS,KAAK,GACrD,EAEA,EAGAwoF,SAAA,WAAW,WACTrrF,KAAKK,EAAE,aACJuC,YAAY,MACZwM,IAAI,oDAAoD,WACvD,EAAKsb,MAAM6gE,YACb,GACJ,EAAC,EAnE0B,CAASlwB,GCTvB,SAASmwB,GAAS75C,GAC/B,IAAM/8B,EAAI6kD,KAAM9nB,GAEVmwB,EAAWltD,EAAE8H,SACbqlD,EAAOntD,EAAE8H,OAAO,QAEtB,OACE,UAAMwlD,SAAO,EAACJ,SAAUA,GACrBC,EAGP,CCbA,IASqB0pB,GAAQ,uFA4C1B,OA5C0B,EAC3B9mD,KAAA,WACE,IAAMwjC,EAAOnoE,KAAK0qB,MAAMy9C,KAClBx2B,EAAOw2B,EAAK6G,YACZ0c,EAAY1rF,KAAK2rF,aAAaxjB,GAC9ByjB,EAAQ,iBAAkBhrF,SAASwE,gBAUzC,OACE,SAAK0mB,UAAU,qBACb,OAAGA,UAAU,kBAAkBw2B,QARX,SAAU/+C,GAAG,WACnCT,YAAW,kBAAMzC,EAAE,GAAMqE,SAAS7D,KAAK,uBAAuBglB,QAAQ,IAEtEtiB,EAAEi8C,QAAS,CACb,EAI6D,cAAY,YAClE4gB,GAAUzuB,IAGb,SAAK7lB,UAAU,+BACb,UAAMA,UAAU,mBAAmB0tC,GAAAA,WAAAA,MAAqB,iCAAkC,CAAEgH,OAAQ2H,EAAK3H,YAAoB,IAC7H,UAAM10C,UAAU,iBAAiB0/D,GAAS75C,IAAa,IAAC,UAAM7lB,UAAU,eAAeq8C,EAAKxmE,KAAKuG,WAAW2jF,WAC3GD,EACC,OAAG9/D,UAAU,4BAA4BsE,KAAMs7D,GAC5CA,GAGH,WAAO5/D,UAAU,iCAAiC/kB,MAAO2kF,EAAWppC,QAAS,SAAC/+C,GAAC,OAAKA,EAAEoC,iBAAiB,KAKjH,EAEA,EAMAgmF,aAAA,SAAaxjB,GACX,OAAO3O,GAAAA,MAAAA,UAAoB,cAAgBA,GAAAA,MAAAA,KAAe2O,EAC5D,EAAC,EA5C0B,CAAS9M,GCDjBywB,GAAU,uFAmB5B,OAnB4B,EAC7BvpC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,EACf,EAAC,EAEDzd,KAAA,WACE,IAAMwjC,EAAOnoE,KAAK0qB,MAAMy9C,KAClB4jB,EAAa5jB,EAAK4jB,aAClBC,EAAaxyB,GAAAA,WAAAA,MAAqB,iCAAkC,CAAE1M,KAAMi/B,EAAY/pB,IAAK5B,GAAU+H,EAAK8jB,cAElH,OACE,EAACxjF,GAAO,CAAC8H,KAAMy7E,GACb,UAAMlgE,UAAU,cAAc0tC,GAAAA,WAAAA,MAAqB,gCAGzD,EAAC,EAEDrX,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,EACjB,EAAC,EAnB4B,CAASiZ,GCQnB6wB,GAAW,uFAyI7B,OAzI6B,EAC9B3pC,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAM,UAACH,GAQbpiD,KAAKmsF,eAAgB,EAQrBnsF,KAAKmrF,aAAc,EAEnBnrF,KAAK8tE,QAAQt/C,OACX,kBAAM,EAAK28D,WAAW,IACtB,kBAAM,EAAKiB,WAAW,IACtB,kBAAM,EAAKD,aAAa,GAE5B,EAAC,EAED/1D,QAAA,WACE,OAAO,YAAMA,QAAO,WAAGj2B,OAAO,CAC5B,YAAQ2rB,UAAU,eAChB,YAAK0xC,EAAUx9D,KAAK4nE,cAAc3kD,aAEpC,SAAK6I,UAAU,aACZ9rB,KAAKosF,YAAc,EAACxa,GAAmB,CAAC9lD,UAAU,eAAei7C,SAAUvN,GAAAA,WAAmBxkD,EAAE6tC,MAAM7iD,KAAK0qB,MAAMy9C,KAAKkkB,iBAG7H,EAAC,EAEDC,eAAA,WACE,IAAMD,EAAcrsF,KAAKosF,YAAc,GAAKpsF,KAAK0qB,MAAMy9C,KAAKkkB,cAKxDrsF,KAAKqsF,cAAgBA,GACvBrsF,KAAKK,EAAE,qBAAqBoB,MAAK,WAC/B,IAAMihB,EAAS9hB,SAAS0E,cAAc,UACtCod,EAAOmL,YAAc7tB,KAAK6tB,YAC1BnuB,MAAMigB,KAAK3f,KAAKkI,YAAYyO,SAAQ,SAACrS,GAAI,OAAKoe,EAAOE,aAAate,EAAKuO,KAAMvO,EAAKyC,MAAM,IACxF/G,KAAKuI,WAAWw/B,aAAarlB,EAAQ1iB,KACvC,IAGFA,KAAKqsF,YAAcA,CACrB,EAAC,EAEDlqC,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAKssF,gBACP,EAAC,EAED9pC,SAAA,SAASJ,GACP,YAAMI,SAAQ,UAACJ,GAEfpiD,KAAKssF,gBACP,EAAC,EAEDF,UAAA,WACE,OAAO5yB,GAAAA,SAAAA,YAAyB0tB,GAAkB,CAAE/e,KAAMnoE,KAAK0qB,MAAMy9C,MACvE,EAAC,EAED8F,aAAA,WACE,IAAM9F,EAAOnoE,KAAK0qB,MAAMy9C,KAClBz9C,EAAQ,EAAH,UAASujD,aAAY,WAYhC,OAVAvjD,EAAMoB,UAAYkyC,EAAUtzC,EAAMoB,UAAW,cAAe,CAC1D,qBAAsBq8C,EAAKokB,eAC3B,eAAgBpkB,EAAK8D,WACrB,eAAgB9D,EAAKqkB,WACrBL,cAAensF,KAAKmsF,cACpBM,QAASzsF,KAAKosF,cAGZpsF,KAAKosF,cAAa1hE,EAAM,aAAe,QAEpCA,CACT,EAEA,EAGAgiE,cAAA,WACE1sF,KAAKmsF,eAAiBnsF,KAAKmsF,aAC7B,EAEA,EAKAvkB,YAAA,WAAc,WACNjK,EAAQ,IAAIlB,EACZ0L,EAAOnoE,KAAK0qB,MAAMy9C,KAiCxB,OA/BAxK,EAAM7kD,IACJ,OACA,EAACoyE,GAAQ,CACP/iB,KAAMA,EACNgjB,YAAanrF,KAAKmrF,YAClBG,WAAY,WACV,EAAKH,aAAc,EACnBn2E,EAAEwqC,QACJ,EACA+rC,WAAY,WACV,EAAKJ,aAAc,EACnBn2E,EAAEwqC,QACJ,IAEF,KAEFme,EAAM7kD,IAAI,OAAQ,EAAC2yE,GAAQ,CAACtjB,KAAMA,KAE9BA,EAAKqkB,aAAerkB,EAAK8D,YAC3BtO,EAAM7kD,IAAI,SAAU,EAACgzE,GAAU,CAAC3jB,KAAMA,KAKpCA,EAAK8D,YACPtO,EAAM7kD,IACJ,SACA,EAAC2qD,GAAM,CAAC33C,UAAU,sCAAsCo0C,KAAK,oBAAoB5d,QAAStiD,KAAK0sF,cAAch9C,KAAK1vC,SAI/G29D,CACT,EAAC,EAzI6B,CAAS0pB,ICDpBsF,GAAS,uFAgE3B,OAhE2B,EAC5B1e,aAAA,WACE,IAAMvjD,EAAQ,EAAH,UAASujD,aAAY,WAIhC,OAFAvjD,EAAMoB,UAAYkyC,EAAUtzC,EAAMoB,UAAW,YAAauzC,EAAQr/D,KAAK0qB,MAAMy9C,KAAKjxB,eAAiB,QAE5FxsB,CACT,EAAC,EAED0L,QAAA,WACE,IAAM02B,EAAO9sD,KAAK0qB,MAAMy9C,KAAKrb,OACvBtR,EAAWoxC,GAAe9/B,GAC1BnrD,EAAO8f,OAAOs+B,OAAO//C,KAAK6sF,kBAAmB,CACjD//B,KAAAA,EACAtR,SAAUsR,EACR,EAACzK,EAAI,CAACv2B,UAAU,iBAAiBsE,KAAMopC,GAAAA,MAAAA,KAAe1M,IACnDtR,GAGHA,EAEF7J,KAAMyuB,GAAUpgE,KAAK0qB,MAAMy9C,KAAK6G,eAGlC,OAAO,YACJ54C,QAAO,WACPj2B,OAAO,CAAC+/D,GAAKlgE,KAAKkgE,OAAQ,CAAEp0C,UAAW,mBAAqB,SAAKA,UAAU,kBAAkB9rB,KAAK20E,YAAYhzE,KACnH,EAEA,EAKAu+D,KAAA,WACE,MAAO,EACT,EAEA,EAMAyU,YAAA,SAAYhzE,GACV,OAAO63D,GAAAA,WAAAA,MAAqBx5D,KAAK8sF,iBAAkBnrF,EACrD,EAEA,EAKAmrF,eAAA,WACE,MAAO,EACT,EAEA,EAKAD,gBAAA,WACE,MAAO,CAAC,CACV,EAAC,EAhE2B,CAASxF,ICPlB0F,GAAqB,uFAuBvC,OAvBuC,EACxC7sB,KAAA,WACE,MAAO,mBACT,EAAC,EAEDyU,YAAA,SAAYhzE,GACV,IAAMqrF,EAAUxzB,GAAAA,WAAAA,MAAqB,iDAAkD73D,GAEvF,OAAO,cAAOqrF,EAChB,EAAC,EAEDH,gBAAA,WACE,IAAM1kB,EAAOnoE,KAAK0qB,MAAMy9C,KAClB8kB,EAAW9kB,EAAK/xC,UAAU,GAC1Bm1C,EAAWpD,EAAK/xC,UAAU,GAEhC,MAAO,CACL82D,IACE,EAACzkF,GAAO,CAAC8H,KAAM8vD,GAAY7G,GAAAA,WAAAA,MAAqB,wDAAyD,CAAE51D,IAAKqpF,MAC9G,YAAQnhE,UAAU,6BAA6By/C,IAIvD,EAAC,EAvBuC,CAASohB,ICN7CQ,GAAoB,gBAMLC,GAAW,mGAIP,OAJO,0CAI9Bh/C,QAAkB,EAAK,EAJO,OAIP,kBAkDtB,OAlDsB,EAEvBmU,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,EACf,EAAC,EAEDzd,KAAA,SAAKyd,GAA+C,WAClD,OAAIpiD,KAAKisE,WAAmB,KAO1B,YAAQngD,UAAU,oBAChB,SAAKA,UAAU,aACb,EAAC23C,GAAM,CACLvD,KAAK,eACL5d,QATQ,WACd,EAAKjiD,IAAI+wC,QAAQ,EAAKzkC,KAAK+iC,KAAK,GAClC,EAQQ5jB,UAAU,8CACV,aAAY0tC,GAAAA,WAAAA,MAAqB,kCAGnC,SAAK1tC,UAAU,mBACb,QAAIA,UAAU,cAAc0tC,GAAAA,MAAAA,UAAoB,iBAChD,SAAK1tC,UAAU,iBAAiB9W,EAAE6tC,MAAM2W,GAAAA,MAAAA,UAAoB,sBAKtE,EAEA,EAGA7sD,KAAA,WACEmuD,aAAaM,QAAQ+xB,GAAmB,OAC1C,EAEA,EAKAlhB,SAAA,WAAoB,MAClB,OAAgD,OAA5C,EAACzS,GAAAA,MAAAA,UAA4B,mBAA5B,EAA6C1a,UAC9Cgc,aAAaC,QAAQoyB,OACrBntF,KAAKouC,MAGX,EAAC,EAtD6B,CAASitB,GCGpBgyB,GAAkB,uEAC9B9xB,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMk6C,YAAcl6C,EAAMk6C,aAAevE,GAAY7G,GAAAA,WAAAA,MAAqB,oDAC1E9uC,EAAM08C,YAAc18C,EAAM08C,aAAe5N,GAAAA,WAAAA,MAAqB,gDAC9D9uC,EAAM68C,YAAc78C,EAAM68C,aAAelH,GAAY7G,GAAAA,WAAAA,MAAqB,wDAC1E9uC,EAAM4iE,iBAAmB5iE,EAAM4iE,kBAAoBjtB,GAAY7G,GAAAA,WAAAA,MAAqB,qDACpF9uC,EAAMoB,UAAY,0BACpB,EAAC,kBAiFA,OAjFA,EAEDy2B,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAK+mE,SAASW,OAAOv+D,MAAQnJ,KAAK+mE,SAASW,OAAOv+D,OAASikD,GAAO,IAOlEptD,KAAKmJ,MAAQnJ,KAAK+mE,SAASW,OAAOv+D,KACpC,EAAC,EAEDy+D,YAAA,WACE,IAAMjK,EAAQ,EAAH,UAASiK,YAAW,WAiB/B,OAfAjK,EAAM7kD,IAAI,QAAS,YAAK0gD,GAAAA,WAAAA,MAAqB,yCAA+C,KAE5FmE,EAAM7kD,IACJ,kBACA,YACE,WACEgT,UAAU,cACV+sC,KAAM74D,KAAKmJ,MACXy7D,YAAa5kE,KAAK0qB,MAAM4iE,iBACxBtkE,WAAYhpB,KAAK0qB,MAAM1B,SACvBukE,UAAWvtF,KAAKutF,UAAU79C,KAAK1vC,UAK9B29D,CACT,EAEA,EAMA4vB,UAAA,SAAUhqF,GACQ,KAAZA,EAAEqB,QAEJrB,EAAEmC,iBACF1F,KAAK+mE,SAASC,OAAO7B,aAAa,IAGpC5hE,EAAEi8C,QAAS,CACb,EAAC,EAEDioB,WAAA,WACE,OAAOznE,KAAKmJ,SAAWnJ,KAAK+mE,SAASW,OAAOtxC,SAC9C,EAEA,EAKAz0B,KAAA,WACE,MAAO,CACLwH,MAAOnJ,KAAKmJ,QACZitB,QAASp2B,KAAK+mE,SAASW,OAAOtxC,UAElC,EAAC,EAED8uC,SAAA,WAAW,WACTllE,KAAK0+D,SAAU,EAEf,IAAM/8D,EAAO3B,KAAK2B,OAElB63D,GAAAA,MAAAA,aACgB,eACb0O,KAAKvmE,GACLs1B,MAAK,SAACinC,GACL,EAAK6I,SAASp6D,OACd6sD,GAAAA,YAAAA,UACAxkD,EAAEwrC,MAAM1kC,IAAI09C,GAAAA,MAAAA,WAAqB0E,GACnC,GAAGl+D,KAAK8nE,OAAOp4B,KAAK1vC,MACxB,EAAC,EA1FoC,CAASsnE,ICO3BkmB,GAAS,mGAEd,OAFc,0CAE5BC,oBAAc,IAFc,OAEd,kBA0Rb,OA1Ra,EAEdlrC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAKToX,GAAAA,SAAAA,QAAqBkS,MACvB1rE,KAAKytF,eAAiBj0B,GAAAA,SAAAA,IAAiB,eAOrCA,GAAAA,SAAAA,QAAqBg0B,IACvBh0B,GAAAA,YAAAA,QAGFA,GAAAA,YAAAA,cAA8BA,GAAAA,OAAAA,SAAsBxkD,EAAEwrC,MAAM3L,MAAM,SAAWr4B,OAAOxH,EAAEwrC,MAAM3L,MAAM,UAAa,GAE/G2kB,GAAAA,QAAAA,KAAiB,QAAS6G,GAAY7G,GAAAA,WAAAA,MAAqB,6CAE3Dx5D,KAAK47D,UAAY,aACjB57D,KAAK67D,mBAAoB,CAC3B,EAAC,EAEDl3B,KAAA,WACE,OACE,SAAK7Y,UAAU,aACZ9rB,KAAK26E,OACN,SAAK7uD,UAAU,aACb,SAAKA,UAAU,oBACb,SAAKA,UAAU,yBACb,YAAK0xC,EAAUx9D,KAAK06E,eAAez3D,aAErC,SAAK6I,UAAU,mCACb,SAAKA,UAAU,qBACb,QAAIA,UAAU,0BAA0B0xC,EAAUx9D,KAAK0tF,YAAYzqE,YACnE,QAAI6I,UAAU,4BAA4B0xC,EAAUx9D,KAAKwnF,cAAcvkE,aAEzE,EAAC8sD,GAAc,CAAC13C,MAAOmhC,GAAAA,iBAMnC,EAAC,EAEDm0B,SAAA,WACEn0B,GAAAA,SAAa6G,GAAY7G,GAAAA,WAAAA,MAAqB,sCAC9CA,GAAAA,cAAkB,EACpB,EAAC,EAEDrX,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAK2tF,WAKL,IAAMC,EAAgBp0B,GAAAA,MAAAA,WAChBq0B,EAAcr0B,GAAAA,MAAAA,WAAuBx5D,KAAKK,EAAE,SAASgxE,eAAiB,EACtEhvE,EAAYm3D,GAAAA,MAAAA,UAKlB,GAHAn5D,EAAE,QAAQgD,IAAI,cAAehD,EAAE0B,QAAQG,UAAY,GAAK2rF,GAG/B,MAArBr0B,GAAAA,SAAAA,OAIAx5D,KAAKytF,eACPptF,EAAE0B,QAAQM,UAAUA,EAAYurF,EAAgBC,GAEhDxtF,EAAE0B,QAAQM,UAAU,GAMlBrC,KAAKytF,gBAAgB,CACvB,IAAMvc,EAAclxE,KAAKK,EAAE,eAAeL,KAAKytF,eAAe9jE,KAAI,0BAElE,GAAIunD,EAAYzsE,OAAQ,CACtB,IAAMqpF,EAAWztF,EAAE,WAAWgxE,eAAiB,EACzC0c,EAAc1tF,EAAE0B,QAAQG,UAAY,EACpC8rF,EAAmB9c,EAAYpvE,SAC/BwvE,EAAiB0c,GAAoBA,EAAiBxrF,KAAQ,EAC9D+uE,EAAmBD,GAAiBJ,EAAYG,eAAiB,IAEnEC,EAAgBjvE,EAAYyrF,GAAYvc,EAAmBlvE,EAAY0rF,IACzE1tF,EAAE0B,QAAQM,UAAUivE,EAAgBwc,EAExC,CACF,CACF,EAAC,EAEDrrC,eAAA,SAAeL,GACb,YAAMK,eAAc,UAACL,GAIrBoX,GAAAA,MAAAA,UAAsBn5D,EAAE0B,QAAQM,WAClC,EAAC,EAED2+C,SAAA,SAASoB,GACP,YAAMpB,SAAQ,UAACoB,GAEf/hD,EAAE,QAAQgD,IAAI,aAAc,GAC9B,EAEA,EAGAs3E,KAAA,WACE,OAAO,EAACyS,GAAW,KACrB,EAEA,EAKA1S,aAAA,WAAe,WACP/c,EAAQ,IAAIlB,EACZwxB,EAAqBz0B,GAAAA,MAAAA,UAAoB,wBAA0BA,GAAAA,QAAAA,KA8BzE,OA5BAmE,EAAM7kD,IACJ,gBACA,EAAC2qD,GAAM,CACLvD,KAAK,cACLp0C,UAAU,iDACViyC,cAAc,qBACdzb,QAAS,WAGP,OAAO,EAAK4rC,sBAAqB,OAAO,WAAO,GACjD,EACAllE,UAAWilE,GAEVz0B,GAAAA,WAAAA,MAAqB,qBAAoBy0B,EAAqB,0BAA4B,qCAI/FtwB,EAAM7kD,IACJ,MACA,EAACyiE,GAAc,CACb3a,gBAAgB,SAChB90C,UAAU,mBACVk1C,sBAAuBxH,GAAAA,WAAAA,MAAqB,8DAE3Cx5D,KAAKwpF,WAAWvmE,YAId06C,CACT,EAEA,EAIA6rB,SAAA,WACE,IAAM7rB,EAAQ,IAAIlB,EACZxf,EAASuc,GAAAA,OAAAA,eAUf,OARAmE,EAAM7kD,IACJ,iBACA,EAACuiE,GAAU,CAACjrD,KAAMopC,GAAAA,MAAU,QAASvc,GAASijB,KAAK,mBAChD1G,GAAAA,WAAAA,MAAqB,0CAExB,KAGKmE,CACT,EAEA,EAKA+vB,UAAA,WACE,IAAM/vB,EAAQ,IAAIlB,EACZ0xB,EAAU30B,GAAAA,YAAAA,UAEV40B,EAAc3sE,OAAOvB,KAAKiuE,GAASruF,QAAO,SAACG,EAAUouF,GAEzD,OADApuF,EAAIouF,GAAU70B,GAAAA,WAAAA,MAAqB,yBAAyB60B,EAAM,WAC3DpuF,CACT,GAAG,CAAC,GAsBJ,OApBA09D,EAAM7kD,IACJ,OACA,EAAC3U,GAAQ,CACPy8D,gBAAgB,SAChBE,MAAOstB,EAAY50B,GAAAA,OAAAA,SAAoB9jD,OAAS+L,OAAOvB,KAAKiuE,GAASvmF,KAAI,SAACkF,GAAG,OAAKshF,EAAYthF,EAAI,IAAE,GACpGk0D,sBAAuBxH,GAAAA,WAAAA,MAAqB,2DAE3C/3C,OAAOvB,KAAKkuE,GAAaxmF,KAAI,SAACb,GAC7B,IAAM+5D,EAAQstB,EAAYrnF,GACpB2vC,GAAU8iB,GAAAA,OAAAA,SAAoB9jD,MAAQ+L,OAAOvB,KAAKiuE,GAAS,MAAQpnF,EAEzE,OACE,EAAC08D,GAAM,CAACvD,MAAMxpB,GAAS,eAAuB4L,QAASkX,GAAAA,OAAAA,WAAAA,KAA2BA,GAAAA,OAAYzyD,GAAQ2vC,OAAQA,GAC3GoqB,EAGP,MAIGnD,CACT,EAEA,EAIA6pB,YAAA,WACE,IAAM7pB,EAAQ,IAAIlB,EA8BlB,OA5BAkB,EAAM7kD,IACJ,UACA,EAAC2qD,GAAM,CACLt6D,MAAOqwD,GAAAA,WAAAA,MAAqB,oCAC5B0G,KAAK,cACLp0C,UAAU,sBACVw2B,QAAS,WACPkX,GAAAA,YAAAA,UACIA,GAAAA,QAAAA,OACFA,GAAAA,MAAAA,KAAe,QAASA,GAAAA,QAAAA,KAAAA,MACxBxkD,EAAEwqC,SAEN,KAIAga,GAAAA,QAAAA,MACFmE,EAAM7kD,IACJ,gBACA,EAAC2qD,GAAM,CACLt6D,MAAOqwD,GAAAA,WAAAA,MAAqB,6CAC5B0G,KAAK,eACLp0C,UAAU,sBACVw2B,QAAStiD,KAAKm+E,cAAczuC,KAAK1vC,SAKhC29D,CACT,EAEA,EAGAuwB,oBAAA,WACE,OAAO,IAAIvuC,SAAQ,SAAChpB,EAASC,GAC3B,OAAI4iC,GAAAA,QAAAA,MACFA,GAAAA,SAAAA,KAAkB6zB,GAAoB,CAAEvgC,KAAM0M,GAAAA,QAAAA,OAC9CA,GAAAA,SAAAA,OAEO7iC,EAAQ6iC,GAAAA,YAEfA,GAAAA,MAAAA,KAAeoR,IAERh0C,IAEX,GACF,EAEA,EAGAunD,cAAA,WACE,IAEkB,EAFGvR,QAAQvM,GAAY7G,GAAAA,WAAAA,MAAqB,sDAG5C,OAAhB,EAAAA,GAAAA,QAAAA,OAAA,EAAkB0O,KAAK,CAAE8V,kBAAmB,IAAI/jE,OAEpD,EAAC,EA5R2B,CAAkF0hD,GAA3F6xB,GACZc,uBAAwB,ECbjC,IAIqBC,GAAa,mGAmBV,OAnBU,0CAIhC7vB,SAAmB,EAAI,EAKvB8vB,aAAuB,EAAK,EAK5B3b,MAAgB,GAAE,EAKlB4b,UAAoB,GAAE,EAnBU,OAmBV,kBA6GrB,OA7GqB,EAEtBlsC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKqpF,SAASr0E,EAAEwrC,MAAM3L,MAAM,YAC9B,EAAC,EAEDze,QAAA,WACE,OAA0B,IAAtBp2B,KAAK6yE,MAAMpuE,QAAiBzE,KAAK0+D,SAUjC1+D,KAAK0+D,QACPyL,EAAS,EAACzH,GAAgB,MACjB1iE,KAAKwuF,cACdrkB,EACE,SAAKr+C,UAAU,0BACb,EAAC23C,GAAM,CAAC33C,UAAU,SAASw2B,QAAStiD,KAAK0uF,SAASh/C,KAAK1vC,OACpDw5D,GAAAA,WAAAA,MAAqB,6CAO5B,SAAK1tC,UAAU,iBACb,QAAIA,UAAU,sBACX9rB,KAAK6yE,MAAMjrE,KAAI,SAACugE,GAAI,OACnB,YACE,SAAKr8C,UAAU,4BACZ0tC,GAAAA,WAAAA,MAAqB,qCAAsC,CAC1D0E,WAAY,EAAC7b,EAAI,CAACjyB,KAAMopC,GAAAA,MAAAA,KAAe2O,IAAQA,EAAKjK,aAAa/0D,YAIrE,EAAC+iF,GAAW,CAAC/jB,KAAMA,IAChB,KAGT,SAAKr8C,UAAU,0BAA0Bq+C,KAnCzC,SAAKr+C,UAAU,iBACb,EAACgkD,GAAW,CAACv/D,KAAMipD,GAAAA,WAAAA,MAAqB,uCAK9C,IAAI2Q,CAgCN,EAEA,EAIAz9D,KAAA,SAAKogD,GACH,YAAMpgD,KAAI,UAACogD,GAEX9sD,KAAK2uF,SACP,EAEA,EAGAA,QAAA,WACE3uF,KAAK0+D,SAAU,EACf1+D,KAAK6yE,MAAQ,GAEb79D,EAAEwqC,SAEFx/C,KAAK4uF,cAAc33D,KAAKj3B,KAAK6uF,aAAan/C,KAAK1vC,MACjD,EAEA,EAKA4uF,YAAA,SAAY9sF,GACV,YADgB,IAANA,IAAAA,EAAS,GACZ03D,GAAAA,MAAAA,KAAuB,QAAS,CACrC1yD,OAAQ,CACNgoF,OAAQ9uF,KAAK8sD,KAAMtR,WACnBx2C,KAAM,WAER80E,KAAM,CAAEh4E,OAAAA,EAAQs/E,MAAOphF,KAAKyuF,WAC5B/4E,KAAM,cAEV,EAEA,EAGAg5E,SAAA,WACE1uF,KAAK0+D,SAAU,EACf1+D,KAAK4uF,YAAY5uF,KAAK6yE,MAAMpuE,QAAQwyB,KAAKj3B,KAAK6uF,aAAan/C,KAAK1vC,MAClE,EAEA,EAGA6uF,aAAA,SAAahqE,GAAyB,MAQpC,OAPA7kB,KAAK0+D,SAAU,GAEf,EAAA1+D,KAAK6yE,OAAM39D,KAAI,QAAI2P,GAEnB7kB,KAAKwuF,YAAc3pE,EAAQpgB,QAAUzE,KAAKyuF,UAC1Cz5E,EAAEwqC,SAEK36B,CACT,EAAC,EAhI+B,CAASokE,ICWb8F,GAAkB,WAW9C,WAAsB9xC,EAAqB68B,EAAkBxJ,QAA9B,IAATrzB,IAAAA,EAAY,CAAC,QAAoB,IAAZ68B,IAAAA,EAAe,QAAmB,IAAhBxJ,IAAAA,EAAmB,IAAE,KAVxErgD,cAAQ,OACRqgD,cAAQ,OAER0e,MAAmB,GAAE,KACrB/xC,OAAY,CAAC,EAAC,KAEdgyC,gBAA0B,EAAK,KAC/BC,aAAuB,EAAK,KAC5BC,aAAuB,EAG/BnvF,KAAKi9C,OAASA,EAEdj9C,KAAKiwB,SAAW,CAAE6pD,KAAAA,GAClB95E,KAAKswE,SAAWA,CAClB,CAAC,kBA4MA,OA5MA,EAIMr8D,MAAP,WACEjU,KAAKgvF,MAAQ,GAEbh6E,EAAEwqC,QACJ,EAAC,EAEM4vC,SAAP,WAAiC,WAC/B,GAAIpvF,KAAKkvF,aAA2C,IAA5BlvF,KAAKqvF,cAAcvV,KAAY,OAAOn6B,QAAQhpB,UAEtE32B,KAAKkvF,aAAc,EAEnB,IAAMpV,EAAe95E,KAAKsvF,oBAE1B,OAAOtvF,KAAKk6E,SAASJ,GAClB7iD,KAAKj3B,KAAK6uF,aAAan/C,KAAK1vC,KAAM85E,IAAM,SAChC,kBAAO,EAAKoV,aAAc,CAAK,GAC5C,EAAC,EAEM7e,SAAP,WAAiC,WAC/B,GAAIrwE,KAAKmvF,YAAa,OAAOxvC,QAAQhpB,UAErC32B,KAAKmvF,aAAc,EAEnB,IAAMrV,EAAe95E,KAAKuvF,oBAE1B,OAAOvvF,KAAKk6E,SAASJ,GAClB7iD,KAAKj3B,KAAK6uF,aAAan/C,KAAK1vC,KAAM85E,IAAM,SAChC,kBAAO,EAAKqV,aAAc,CAAK,GAC5C,EAAC,EAESN,aAAV,SAAuBpe,EAAY5rD,GAAqC,MAChE6rD,EAAUl0D,OAAOi0D,GAEjB+e,EAAuB,OAAlB,EAAG3qE,EAAQg9B,cAAO,EAAf,EAAiB2tC,MACzB1V,EAAO,CACXtZ,OAAQkQ,EACR/S,MAAO94C,EACPurD,UAAgB,MAALof,IAAAA,EAAOtmE,MAClBumE,UAAgB,MAALD,IAAAA,EAAOh6D,OAGhBx1B,KAAKqmD,WAAaqqB,EAAU1wE,KAAKuvF,oBAAsB,EACzDvvF,KAAKgvF,MAAM95E,KAAK4kE,GAEhB95E,KAAKgvF,MAAM3hE,QAAQysD,GAGrB95E,KAAKiwB,SAAW,CAAE6pD,KAAMpJ,GAExB17D,EAAEwqC,QACJ,EAEA,EAGU06B,SAAV,SAAmBJ,QAAI,IAAJA,IAAAA,EAAO,GACxB,IAAM4V,EAAY1vF,KAAK+pE,gBAEjBsX,EAAU3hF,MAAMU,QAAQsvF,EAAUrO,SAAWqO,EAAUrO,QAAQjpE,KAAK,KAAOs3E,EAAUrO,QAErFpkC,EAA+B,KAChCyyC,EAAS,CACZ5V,KAAM,KACD4V,EAAU5V,KAAI,CACjBh4E,OAAQ9B,KAAKswE,UAAYwJ,EAAO,KAElCuH,QAAAA,IAGF,OAAO7nB,EAAImiB,MAAM96E,KAAUb,KAAKgF,KAAMi4C,EACxC,EAEA,EAOU8sB,cAAV,WACE,OAAO/pE,KAAKi9C,MACd,EAEA,EAQO0yC,cAAP,SAAqBC,EAAc9V,GACjC,OAAI95E,KAAKqmD,WAAarmD,KAAK6vF,cAAcD,IACvC5vF,KAAKi9C,OAAS2yC,EAEP5vF,KAAK2uF,QAAQ7U,IAGfn6B,QAAQhpB,SACjB,EAAC,EAEMg4D,QAAP,SAAe7U,GAAiC,WAS9C,YATyB,IAAZA,IAAAA,EAAe,GAC5B95E,KAAKivF,gBAAiB,EACtBjvF,KAAKkvF,aAAc,EACnBlvF,KAAKmvF,aAAc,EAEnBnvF,KAAKiU,QAELjU,KAAKiwB,SAAW,CAAE6pD,KAAAA,GAEX95E,KAAKk6E,WACTjjD,MAAK,SAACpS,GACL,EAAKmqE,MAAQ,GACb,EAAKH,aAAa,EAAK5+D,SAAS6pD,KAAMj1D,EACxC,IAAE,SACO,kBAAO,EAAKoqE,gBAAiB,CAAK,GAC/C,EAAC,EAEMze,SAAP,WACE,OAAOxwE,KAAKgvF,KACd,EAAC,EACMK,YAAP,WACE,OAAOrvF,KAAKiwB,QACd,EAAC,EAEMggD,UAAP,WACE,OAAOjwE,KAAKivF,gBAAkBjvF,KAAKmvF,aAAenvF,KAAKkvF,WACzD,EAAC,EACMhf,iBAAP,WACE,OAAOlwE,KAAKivF,cACd,EAAC,EACMa,cAAP,WACE,OAAO9vF,KAAKkvF,WACd,EAAC,EACM/e,cAAP,WACE,OAAOnwE,KAAKmvF,WACd,EAEA,EAKOre,SAAP,WACE,QAAS9wE,KAAK+vF,cAActrF,MAC9B,EAEA,EAMO4hD,QAAP,WACE,OAAQrmD,KAAKkwE,qBAAuBlwE,KAAK8wE,UAC3C,EAAC,EAEM2e,QAAP,WAA0B,MACxB,QAAsB,OAAd,EAACzvF,KAAKgvF,MAAM,MAAX,EAAeS,QAC1B,EAAC,EACMrf,QAAP,WAA0B,MACxB,QAA0C,OAAlC,EAACpwE,KAAKgvF,MAAMhvF,KAAKgvF,MAAMvqF,OAAS,MAA/B,EAAmC2rE,QAC9C,EAEA,EAGOJ,UAAP,WACE,OAAOhwE,KAAKi9C,MACd,EAAC,EAESsyC,kBAAV,WAAsC,MAC9B9e,EAAsC,OAApC,EAAGzwE,KAAKgvF,MAAMhvF,KAAKgvF,MAAMvqF,OAAS,SAAE,EAAjC,EAAmC+7D,OAE9C,OAAIiQ,IAAOhhE,MAAMghE,GACRA,EAAK,EAELzwE,KAAKiwB,SAAS6pD,IAEzB,EAAC,EACSwV,kBAAV,WAAsC,MAC9B7e,EAAkB,OAAhB,EAAGzwE,KAAKgvF,MAAM,SAAE,EAAb,EAAexuB,OAE1B,OAAIiQ,IAAOhhE,MAAMghE,GAGRxtE,KAAKC,IAAIutE,EAAK,EAAG,GAEjBzwE,KAAKiwB,SAAS6pD,IAEzB,EAAC,EAES+V,cAAV,SAAwBD,GAAuB,WAC7C,OAAOnuE,OAAOvB,KAAK0vE,GAAWtuC,MAAK,SAACx0C,GAAG,OAAK,EAAKkjE,YAAYljE,KAAS8iF,EAAU9iF,EAAI,GACtF,EAAC,EAESijF,YAAV,WACE,OAAO/vF,KAAKwwE,WACT5oE,KAAI,SAAC6oE,GAAE,OAAKA,EAAG9S,KAAK,IACpB/9D,MACL,EAAC,EA5N6C,GC1B3BowF,GAAY,WAG/B,aAAqB,KAFXruD,OAAc,CAAC,EAGvB3hC,KAAK2hC,OAAS,CAAC,CACjB,CAAC,kBAgBA,OAhBA,EAEM5gC,GAAP,SAAUkS,EAAe8xD,GAOvB,OANK/kE,KAAK2hC,OAAO1uB,KACfjT,KAAK2hC,OAAO1uB,GAAS,IAGvBjT,KAAK2hC,OAAO1uB,GAAOiC,KAAK6vD,GAEjB/kE,IACT,EAAC,EAEMiwF,KAAP,SAAYh9E,GAAqC,2BAAnBqG,EAAI,iCAAJA,EAAI,kBAC5BtZ,KAAK2hC,OAAO1uB,IACdjT,KAAK2hC,OAAO1uB,GAAO0D,SAAQ,SAACouD,GAAkB,OAAKA,EAAQ,aAAIzrD,EAAK,GAExE,EAAC,EArB8B,8GCUjC,IAAM42E,GAAqB,IAAIF,GAEVG,GAAmB,YAItC,WAAYlzC,EAAW68B,GAAkB,MAG2D,YAHjE,IAAZA,IAAAA,EAAe,IACpC,cAAM78B,EAAQ68B,EAAM,KAAG,MAJfsW,iBAAiC,GAAE,EACnCC,kBAAY,EAKpB,EAAKA,aAAeH,GAAmBnvF,GAAG,qBAAsB,EAAKuvF,iBAAiB5gD,KAAK,OAAO,CACpG,CARsC,OAQrC,kBAIA,OAJA,EAMDq6B,cAAA,WAA4C,MACpC9sB,EAAS,CACbokC,QAAS,CAAC,OAAQ,kBAClBv6E,OAAQ9G,KAAKi9C,OAAOn2C,QAAU,CAAC,EAC/B4O,KAAM1V,KAAKmuF,UAA0B,OAAjB,EAACnuF,KAAKi9C,OAAOvnC,MAAI,EAAI,KAQ3C,OALI1V,KAAKi9C,OAAO+T,IACd/T,EAAOn2C,OAAOkqD,EAAIhxD,KAAKi9C,OAAO+T,EAC9B/T,EAAOokC,QAAQnsE,KAAK,mBAAoB,0BAGnC+nC,CACT,EAAC,EAESi9B,SAAV,SAAmBJ,QAAY,IAAZA,IAAAA,EAAe,GAChC,IAAMyW,EAAuB/2B,GAAAA,uBAE7B,OAAI+2B,GACFvwF,KAAKivF,gBAAiB,EAEftvC,QAAQhpB,QAAQ45D,IAGlB,EAAP,UAAarW,SAAQ,UAACJ,EACxB,EAAC,EAED7lE,MAAA,WACE,YAAMA,MAAK,WAEXjU,KAAKowF,iBAAmB,EAC1B,EAEA,EAIAjC,QAAA,WACE,IAAMvmF,EAAW,CAAC,EAUlB,OARI5H,KAAKi9C,OAAO+T,IACdppD,EAAI4oF,UAAY,IAElB5oF,EAAI6oF,OAAS,gBACb7oF,EAAIpF,IAAM,gBACVoF,EAAI8oF,OAAS,aACb9oF,EAAI+oF,OAAS,YAEN/oF,CACT,EAEA,EAGA2oE,gBAAA,WACE,QAASvwE,KAAKi9C,OAAO+T,CACvB,EAAC,EAED4/B,iBAAA,SAAiB1yB,GACfl+D,KAAKqwF,aAAaJ,KAAK,qBAAsB/xB,EAC/C,EAAC,EAEDoyB,iBAAA,SAAiBpyB,GACf,IAAK,IAAwB,EAA7B,+sBAAmBl+D,KAAKgvF,SAAK,aAAE,KAApBlV,EAAI,QACPj0E,EAAQi0E,EAAKnc,MAAMz8C,QAAQg9C,GAEjC,IAAe,IAAXr4D,EAAc,CAChBi0E,EAAKnc,MAAM55C,OAAOle,EAAO,GACzB,KACF,CACF,CAEA,IAAMA,EAAQ7F,KAAKowF,iBAAiBlvE,QAAQg9C,IAE7B,IAAXr4D,GACF7F,KAAKowF,iBAAiBrsE,OAAOle,GAG/BmP,EAAEwqC,QACJ,EAEA,EAGAqxC,cAAA,SAAc3yB,GACZl+D,KAAK4wF,iBAAiB1yB,GACtBl+D,KAAKowF,iBAAiB/iE,QAAQ6wC,GAE9BlpD,EAAEwqC,QACJ,EAAC,EAESuwC,YAAV,WACE,OAAO/vF,KAAKowF,iBAAiBjwF,OAAO,EAAD,UAAO4vF,YAAW,WACvD,EAAC,EAEMvf,SAAP,WACE,IAAMwe,EAAQ,EAAH,UAASxe,SAAQ,WAE5B,OAAIxwE,KAAKowF,iBAAiB3rF,OACjB,CACL,CACE+7D,QAAS,EACT7C,MAAO39D,KAAKowF,mBACb,OACEpB,GAIAA,CACT,EAAC,qBAjHD,WACE,MAAO,aACT,KAAC,EAZqC,CAAgED,ICFnF+B,GAAmB,uFAwBrC,OAxBqC,EACtCvuC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKqpF,SAASr0E,EAAEwrC,MAAM3L,MAAM,YAC9B,EAAC,EAEDnoC,KAAA,SAAKogD,GACH,YAAMpgD,KAAI,UAACogD,GAEX9sD,KAAKq4B,MAAQ,IAAI83D,GAAoB,CACnCrpF,OAAQ,CAAEgoF,OAAQhiC,EAAKtR,YACvB9lC,KAAM,WAGR1V,KAAKq4B,MAAMs2D,SACb,EAAC,EAEDv4D,QAAA,WACE,OACE,SAAKtK,UAAU,uBACb,EAACikD,GAAc,CAAC13C,MAAOr4B,KAAKq4B,QAGlC,EAAC,EAxBqC,CAAS4wD,ICCjD,kBAAgBn8E,EAAaikF,GAAY,OACvC,WACEA,EAAG/wF,KAAK2iB,aAAa7V,IAAS9M,KAAa8M,GAC7C,CAAC,ECAH,IAYqBkkF,GAAQ,uFAiC1B,OAjC0B,EAC3BrsD,KAAA,SAAKyd,GACH,IAAMt2B,EAAYkyC,EAAU,CAC1B,WACAh+D,KAAK0qB,MAAM2N,MAAQ,KAAO,MAC1Br4B,KAAK0qB,MAAMoB,UACX9rB,KAAK0qB,MAAMg0C,SAAW,UACtB1+D,KAAK0qB,MAAM1B,UAAY,aAGzB,OACE,WAAO8C,UAAWA,GAChB,WAAO9mB,KAAK,WAAWsrB,QAAStwB,KAAK0qB,MAAM2N,MAAOrP,SAAUhpB,KAAK0qB,MAAM1B,SAAU+vC,SAAUk4B,GAAS,UAAWjxF,KAAK+4D,SAASrpB,KAAK1vC,SAClI,SAAK8rB,UAAU,mBAAmB,cAAY,QAC3C9rB,KAAKkxF,cAEP9uC,EAAM9sB,SAGb,EAEA,EAGU47D,WAAV,WACE,OAAOlxF,KAAK0qB,MAAMg0C,QAAU,EAACgE,GAAgB,CAACz0D,QAAQ,QAAQ4H,KAAK,UAAaqqD,GAAKlgE,KAAK0qB,MAAM2N,MAAQ,eAAiB,eAC3H,EAEA,EAGU0gC,SAAV,SAAmBzoC,GACbtwB,KAAK0qB,MAAMquC,UAAU/4D,KAAK0qB,MAAMquC,SAASzoC,EAAStwB,KACxD,EAAC,EAjC0B,CAA8Dq7D,GCnBtE81B,GAAM,8DASxB,OATwB,SAClB51B,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMoB,UAAYkyC,EAAUtzC,EAAMoB,UAAW,mBAC/C,EAAC,YAEDolE,WAAA,WACE,QAASlxF,KAAK0qB,MAAMg0C,SAAW,EAAJ,UAAUwyB,WAAU,UACjD,EAAC,EATwB,CAASF,ICKfI,GAAQ,8DAQ1B,OAR0B,mBAC3BzsD,KAAA,SAAKyd,GACH,OACE,cAAUt2B,UAAW9rB,KAAK0qB,MAAMoB,WAC9B,gBAAS9rB,KAAK0qB,MAAMo2C,OACpB,YAAKtD,EAAUpb,EAAM9sB,WAG3B,EAAC,EAR0B,CAAS+lC,GCEjBg2B,GAAgB,uFA4MlC,OA5MkC,EACnC9uC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAObpiD,KAAKsxF,QAAUtxF,KAAKuxF,sBAAsBtuE,UAO1CjjB,KAAK0+D,QAAU,CAAC,EAOhB1+D,KAAKkhC,MAAQlhC,KAAKwxF,oBAAoBvuE,SACxC,EAAC,EAED0hB,KAAA,WAAO,WACC8sD,EAAczxF,KAAK0qB,MAAMoiC,KAAK2kC,cAEpC,OACE,WAAO3lE,UAAU,oBACf,eACE,YACE,aACC9rB,KAAKsxF,QAAQ1pF,KAAI,SAACkvB,GAAM,OACvB,QAAIhL,UAAU,+BAA+Bw2B,QAAS,EAAKovC,aAAahiD,KAAK,EAAM5Y,EAAOjkB,OACvFqtD,GAAKppC,EAAOopC,MAAK,IAAGppC,EAAOgqC,MACzB,MAKX,eACG9gE,KAAKkhC,MAAMt5B,KAAI,SAAC5C,GAAI,OACnB,YACE,QAAI8mB,UAAU,+BAA+Bw2B,QAAS,EAAKqvC,WAAWjiD,KAAK,EAAM1qC,EAAK6N,OACnFqtD,GAAKl7D,EAAKk7D,MAAK,IAAGl7D,EAAK87D,OAEzB,EAAKwwB,QAAQ1pF,KAAI,SAACkvB,GACjB,IAAMhqB,EAAM,EAAK8kF,cAAc5sF,EAAK6N,KAAMikB,EAAOjkB,MAEjD,OACE,QAAIiZ,UAAU,6BACZ,EAACklE,GAAQ,CACP34D,QAASo5D,EAAY3kF,GACrB4xD,QAAS,EAAKA,QAAQ5xD,GACtBkc,WAAYlc,KAAO2kF,GACnB14B,SAAU,EAAK70D,OAAOwrC,KAAK,EAAM,CAAC5iC,KAElC,UAAMgf,UAAU,WACb0tC,GAAAA,WAAAA,MAAqB,gEAAiE,CACrFmb,YAAa3vE,EAAK87D,MAClBhqC,OAAQA,EAAOgqC,UAM3B,IACG,KAKf,EAAC,EAED3e,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAKK,EAAE,uCAAuCqvC,KAAK,yBAAyB,SAAUnsC,GACpF,IAAM0D,EAAIsI,SAASlP,EAAEL,MAAM6F,QAAS,IAAM,EAC1CxF,EAAEL,MACC81B,QAAQ,SACRj1B,KAAK,gBAAkBoG,EAAI,KAC3BzB,YAAY,cAA0B,eAAXjC,EAAEyB,KAClC,IAEAhF,KAAKK,EAAE,uCAAuCqvC,KAAK,yBAAyB,SAAUnsC,GACpFlD,EAAEL,MACC0E,SACA7D,KAAK,MACL2E,YAAY,cAA0B,eAAXjC,EAAEyB,KAClC,GACF,EAEA,EAMAd,OAAA,SAAOgc,GAAM,WACL4sC,EAAO9sD,KAAK0qB,MAAMoiC,KAClB2kC,EAAc3kC,EAAK2kC,cACnB/oF,GAAW+oF,EAAYvxE,EAAK,IAElCA,EAAKvJ,SAAQ,SAAC7J,GACZ,EAAK4xD,QAAQ5xD,IAAO,EACpB2kF,EAAY3kF,GAAOpE,CACrB,IAEAsM,EAAEwqC,SAEFsN,EAAKob,KAAK,CAAEupB,YAAAA,IAAex6D,MAAK,WAC9B/W,EAAKvJ,SAAQ,SAAC7J,GAAG,OAAM,EAAK4xD,QAAQ5xD,IAAO,CAAK,IAEhDkI,EAAEwqC,QACJ,GACF,EAEA,EAKAkyC,aAAA,SAAa56D,GAAQ,WACb5W,EAAOlgB,KAAKkhC,MAAMt5B,KAAI,SAAC5C,GAAI,OAAK,EAAK4sF,cAAc5sF,EAAK6N,KAAMikB,EAAO,IAAEhwB,QAAO,SAACgG,GAAG,OAAKA,KAAO,EAAK4d,MAAMoiC,KAAK2kC,aAAa,IAEjIzxF,KAAKkE,OAAOgc,EACd,EAEA,EAKAyxE,WAAA,SAAW3sF,GAAM,WACTkb,EAAOlgB,KAAKsxF,QAAQ1pF,KAAI,SAACkvB,GAAM,OAAK,EAAK86D,cAAc5sF,EAAM8xB,EAAOjkB,KAAK,IAAE/L,QAAO,SAACgG,GAAG,OAAKA,KAAO,EAAK4d,MAAMoiC,KAAK2kC,aAAa,IAErIzxF,KAAKkE,OAAOgc,EACd,EAEA,EAQA0xE,cAAA,SAAc5sF,EAAM8xB,GAClB,MAAO,UAAY9xB,EAAO,IAAM8xB,CAClC,EAEA,EAWAy6D,oBAAA,WACE,IAAM5zB,EAAQ,IAAIlB,EAclB,OAZAkB,EAAM7kD,IAAI,QAAS,CACjBjG,KAAM,QACNqtD,KAAM,cACNY,MAAOtH,GAAAA,WAAAA,MAAqB,+CAG9BmE,EAAM7kD,IAAI,QAAS,CACjBjG,KAAM,QACNqtD,KAAM,kBACNY,MAAOtH,GAAAA,WAAAA,MAAqB,iDAGvBmE,CACT,EAEA,EAWA6zB,kBAAA,WACE,IAAM7zB,EAAQ,IAAIlB,EAQlB,OANAkB,EAAM7kD,IAAI,oBAAqB,CAC7BjG,KAAM,oBACNqtD,KAAM,oBACNY,MAAOtH,GAAAA,WAAAA,MAAqB,yDAGvBmE,CACT,EAAC,EA5MkC,CAAStC,GCJzBw2B,GAAmB,uFAkDrC,OAlDqC,EACtC/lE,UAAA,WACE,MAAO,kCACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,GAAAA,WAAAA,MAAqB,mCAC9B,EAAC,EAEDpjC,QAAA,WACE,OACE,SAAKtK,UAAU,cACb,SAAKA,UAAU,uBAAuB9rB,KAAK0nE,SAASzkD,WAG1D,EAAC,EAEDykD,OAAA,WACE,IAAMA,EAAS,IAAIjL,EAanB,OAXAiL,EAAO5uD,IAAI,OAAQ,OAAGgT,UAAU,YAAY0tC,GAAAA,WAAAA,MAAqB,qCAEjEkO,EAAO5uD,IACL,SACA,SAAKgT,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,GAAAA,WAAAA,MAAqB,6CAKrBkO,CACT,EAAC,EAEDxC,SAAA,SAAS3hE,GACPA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEflF,GAAAA,QACW,CACP1iC,OAAQ,OACR+f,IAAK2iB,GAAAA,MAAAA,UAAoB,UAAY,UACrCr2D,KAAMnD,KAAK8xF,gBAEZ76D,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,MAAOA,KAAK8nE,OAAOp4B,KAAK1vC,MACjD,EAAC,EAED8xF,YAAA,WACE,MAAO,CAAEjoB,MAAOrQ,GAAAA,QAAAA,KAAAA,QAClB,EAAC,EAlDqC,CAAwEqP,ICE3FkpB,GAAgB,mGAcX,OAdW,0CAInCloB,WAAK,IAKLh5C,cAAQ,IAKR4oB,SAAmB,EAAK,EAdW,OAcX,kBA4HvB,OA5HuB,EAExB8I,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAK6pE,MAAQzc,GAAOoM,GAAAA,QAAAA,KAAAA,SAA6B,IACjDx5D,KAAK6wB,SAAWu8B,GAAO,GACzB,EAAC,EAEDthC,UAAA,WACE,MAAO,+BACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,GAAAA,WAAAA,MAAqB,gCAC9B,EAAC,EAEDpjC,QAAA,WACE,OACE,SAAKtK,UAAU,cACb,SAAKA,UAAU,uBAAuB9rB,KAAK0nE,SAASzkD,WAG1D,EAAC,EAEDykD,OAAA,WACE,IAAM/J,EAAQ,IAAIlB,EA4DlB,OA1DIz8D,KAAKy5C,SACPkkB,EAAM7kD,IACJ,OACA,OAAGgT,UAAU,YACV0tC,GAAAA,WAAAA,MAAqB,+CAAgD,CACpEqQ,MAAO,gBAAS7pE,KAAK6pE,aAK3BlM,EAAM7kD,IACJ,UACA,SAAKgT,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuCw2B,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,OAC9Ew5D,GAAAA,WAAAA,MAAqB,+CAK5BmE,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,cACb,WACE9mB,KAAK,QACL6N,KAAK,QACLiZ,UAAU,cACV84C,YAAapL,GAAAA,QAAAA,KAAAA,QACbX,KAAM74D,KAAK6pE,MACX7gD,SAAUhpB,KAAK0+D,YAKrBf,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,WACE9mB,KAAK,WACL6N,KAAK,WACLiZ,UAAU,cACV2+C,aAAa,mBACb7F,YAAapL,GAAAA,WAAAA,MAAqB,wDAClCX,KAAM74D,KAAK6wB,SACX7H,SAAUhpB,KAAK0+D,YAKrBf,EAAM7kD,IACJ,SACA,SAAKgT,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,GAAAA,WAAAA,MAAqB,6CAMvBmE,CACT,EAAC,EAEDuH,SAAA,SAAS3hE,GAAgB,WACvBA,EAAEmC,iBAIE1F,KAAK6pE,UAAYrQ,GAAAA,QAAAA,KAAAA,SAKrBx5D,KAAK0+D,SAAU,EACf1+D,KAAK8oE,WAAa,KAElBtP,GAAAA,QAAAA,KAAAA,KACcx5D,KAAKgyF,oBAAqB,CACpChoB,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,MAChCm8E,KAAM,CAAEtrD,SAAU7wB,KAAK6wB,cAExBoG,MAAK,WACJ,EAAKwiB,SAAU,CACjB,IAAE,OACK,WAAO,IACbxiB,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,QAhBvBA,KAAK2M,MAiBT,EAAC,EAEDqlF,kBAAA,WACE,MAAO,CAAEnoB,MAAO7pE,KAAK6pE,QACvB,EAAC,EAEDluB,QAAA,SAAQt3B,GACe,MAAjBA,EAAM20B,QAAkB30B,EAAMgkD,QAChChkD,EAAMgkD,MAAMjyC,QAAUojC,GAAAA,WAAAA,MAAqB,uDAG7C,YAAM7d,QAAO,UAACt3B,EAChB,EAAC,EA1IkC,CAAwEwkD,ICKxFopB,GAAY,mGACV,OADU,0CAC/BC,2BAAqB,IADU,OACV,kBAqGpB,OArGoB,EAErB3vC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAK0M,KAAK8sD,GAAAA,QAAAA,MAEVA,GAAAA,SAAa6G,GAAY7G,GAAAA,WAAAA,MAAqB,8BAChD,EAAC,EAEDpjC,QAAA,WACE,OACE,SAAKtK,UAAU,gBACb,YAAK0xC,EAAUx9D,KAAKmyF,gBAAgBlvE,YAG1C,EAEA,EAGAkvE,cAAA,WAAgB,WACRx0B,EAAQ,IAAIlB,EAclB,MAZA,CAAC,UAAW,gBAAiB,WAAW9lD,SAAQ,SAAC60D,EAAS3lE,GACxD,IAAMusF,EAAkB5mB,EAAO,QAE/B7N,EAAM7kD,IACJ0yD,EACA,EAAC4lB,GAAQ,CAACtlE,UAAS,YAAc0/C,EAAW1K,MAAOtH,GAAAA,WAAAA,MAAqB,uBAAuBgS,EAAO,aACnG,EAAK4mB,KAAgBnvE,WAExB,IAAc,GAARpd,EAEV,IAEO83D,CACT,EAEA,EAGA00B,aAAA,WACE,IAAM10B,EAAQ,IAAIlB,EAkBlB,OAhBAkB,EAAM7kD,IACJ,iBACA,EAAC2qD,GAAM,CAAC33C,UAAU,SAASw2B,QAAS,kBAAMkX,GAAAA,MAAAA,KAAeq4B,GAAoB,GAC1Er4B,GAAAA,WAAAA,MAAqB,+CAExB,KAGFmE,EAAM7kD,IACJ,cACA,EAAC2qD,GAAM,CAAC33C,UAAU,SAASw2B,QAAS,kBAAMkX,GAAAA,MAAAA,KAAeu4B,GAAiB,GACvEv4B,GAAAA,WAAAA,MAAqB,4CAExB,IAGKmE,CACT,EAEA,EAGA20B,mBAAA,WACE,IAAM30B,EAAQ,IAAIlB,EAIlB,OAFAkB,EAAM7kD,IAAI,mBAAoB,EAACu4E,GAAgB,CAACvkC,KAAM9sD,KAAK8sD,OAAU,KAE9D6Q,CACT,EAEA,EAGA40B,aAAA,WAAe,aACP50B,EAAQ,IAAIlB,EAqBlB,OAnBAkB,EAAM7kD,IACJ,iBACA,EAACq4E,GAAM,CACL94D,MAA+B,OAA1B,EAAEr4B,KAAK8sD,KAAM2kC,oBAAa,EAAxB,EAA0Be,eACjCz5B,SAAU,SAAChyD,GACT,EAAKmrF,uBAAwB,EAE7B,EAAKplC,KAAM2lC,gBAAgB,CAAED,eAAgBzrF,IAASkwB,MAAK,WACzD,EAAKi7D,uBAAwB,EAC7Bl9E,EAAEwqC,QACJ,GACF,EACAkf,QAAS1+D,KAAKkyF,uBAEb14B,GAAAA,WAAAA,MAAqB,sDAExB,KAGKmE,CACT,EAAC,EAtG8B,CAA8DsrB,ICP1EyJ,GAAiB,uFAiBnC,OAjBmC,EACpCnwC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEboX,GAAAA,QAAAA,KAAiB,gBAAiB6G,GAAY7G,GAAAA,WAAAA,MAAqB,oCAEnEA,GAAAA,cAAAA,OAEAx5D,KAAK47D,UAAY,oBACnB,EAAC,EAEDj3B,KAAA,WACE,OACE,SAAK7Y,UAAU,qBACb,EAACoyD,GAAgB,CAAC7lD,MAAOmhC,GAAAA,gBAG/B,EAAC,EAjBmC,CAAsDmC,GCCvEg3B,GAAe,WASlC,WAAYjzC,EAA2Bsc,GAAmB,KAH1Dtc,eAAS,OACTsc,eAAS,EAGPh8D,KAAK0/C,UAAYA,EACjB1/C,KAAKg8D,UAAYA,CACnB,CAEA,kBAsBC,OAtBD,EAKA42B,QAAA,WACE,OAAO5yF,KAAKg8D,UAAYt/B,KAAKwwB,UAAUl4C,EAAEwrC,MAAM3L,QACjD,EAAC,EAEDg+C,UAAA,SAAUzwC,GACR,OAAO,KACFA,EAAM13B,MAAK,CACdsxC,UAAWh8D,KAAKg8D,WAEpB,EAAC,EAED/Z,QAAA,SAAQ3oC,EAAiBw5E,EAAuBtyC,GAC9C,OAAOxgD,KAAK0/C,SACd,EAAC,EAEDP,OAAA,SAAOiD,GACL,MAAO,CAAC,KAAKA,EAAO,CAAA13B,MAAO1qB,KAAK6yF,UAAUzwC,GAAQt1C,IAAK9M,KAAK4yF,YAC9D,EAAC,EApCiC,GCAfG,GAAsB,uFAgDxC,OA1CD,EAOAC,2BAAA,SAA2Bl0B,GACzB,GAAKA,EACL,OAAOA,EAAK/yD,MAAM,KAAK,EACzB,EAEA,EAGA6mF,QAAA,WACE,IAAM31C,EAAS,KAAKjoC,EAAEwrC,MAAM3L,SAK5B,MAJI,SAAUoI,UACLA,EAAO88B,KAEhB98B,EAAOtzB,GAAK3pB,KAAKgzF,2BAA2B/1C,EAAOtzB,IAC5C3pB,KAAKg8D,UAAUr4D,QAAQ,QAAS,IAAM+4B,KAAKwwB,UAAUjQ,EAC9D,EAAC,EAEDgF,QAAA,SAAQ3oC,EAAyBw5E,EAAuBtyC,GAMtD,OALIgZ,GAAAA,QAAAA,QAAoBkS,KAAmB1rE,KAAKgzF,2BAA2B15E,EAAKqQ,MAAQ3pB,KAAKgzF,2BAA2Bh+E,EAAEwrC,MAAM3L,MAAM,SAEpIk+C,EAAuBE,mBAAqB35E,EAAKygE,MAAQ,GAGpD,EAAP,UAAa93B,QAAO,UAAC3oC,EAAMw5E,EAAetyC,EAC5C,EAAC,EAEDrB,OAAA,SAAOiD,GACL,GAAkD,OAA9C2wC,EAAuBE,mBAA6B,CACtD,IAAMzyB,EAASuyB,EAAuBE,mBAEtCnwF,YAAW,kBAAM02D,GAAAA,QAAAA,IAAgB,UAAU4O,WAAW5H,EAAO,IAC7DuyB,EAAuBE,mBAAqB,IAC9C,CAEA,OAAO,EAAP,UAAa9zC,OAAM,UAACiD,EACtB,EAAC,EAhDwC,CAGjCuwC,IAHWI,GAIZE,mBAAoC,KCN7C,IAMqBC,GAAU,8DAY5B,OAZ4B,mBAC7BvuD,KAAA,SAAKyd,GACH,OACE,SAAKt2B,UAAU,cACb,SAAKA,UAAU,oBACZ0tC,EAAIiH,WAAWC,MAAM,8BAA+B,CACnDI,MAAO9gE,KAAK0qB,MAAMo2C,SAGtB,SAAKh1C,UAAU,oBAAoB9rB,KAAK0qB,MAAM3jB,OAGpD,EAAC,EAZ4B,CAAkEs0D,GCO5E83B,GAAgB,mGAE8B,OAF9B,0CACzBz0B,QAA+C,CAAC,EAAC,EACjD00B,cAAqD,CAAC,EAAC,EAF9B,OAE8B,kBA2KhE,OA3KgE,EAEjEzuD,KAAA,SAAKyd,GACH,OACE,SAAKt2B,UAAU,oBACZ9rB,KAAK0qB,MAAMuG,OAAOxsB,OACjBzE,KAAK0qB,MAAMuG,OAAOrpB,IAAI5H,KAAKqzF,UAAU3jD,KAAK1vC,OAE1C,SAAK8rB,UAAU,2BAA2B0tC,GAAAA,WAAAA,MAAqB,mCAIvE,EAAC,EAED65B,UAAA,SAAUr/D,GACR,OACE,SACElI,UAAWkyC,EAAU,wBAAyB,CAC5C,gCAAiChqC,EAAMs/D,cAEzCxmF,IAAKknB,EAAMrK,MAEV3pB,KAAKuzF,eAAev/D,GAAO/Q,UAGlC,EAAC,EAEDswE,eAAA,SAAev/D,GACb,IAAM2pC,EAAQ,IAAIlB,EAQlB,OANAkB,EAAM7kD,IAAI,OAAQ,SAAKgT,UAAU,8BAA8Bo0C,GAAKlgE,KAAK0qB,MAAMw1C,MAAQ,eAAsB,IAE7GvC,EAAM7kD,IAAI,OAAQ,SAAKgT,UAAU,8BAA8B9rB,KAAKwzF,eAAex/D,GAAO/Q,WAAkB,IAE5G06C,EAAM7kD,IAAI,UAAW,SAAKgT,UAAU,iCAAiC9rB,KAAKyzF,iBAAiBz/D,GAAO/Q,WAAkB,IAE7G06C,CACT,EAAC,EAED61B,eAAA,SAAex/D,GACb,IAAM2pC,EAAQ,IAAIlB,EAsDlB,MApDwB,YAApBz8D,KAAK0qB,MAAM1lB,KACb24D,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,+BACb,UAAMA,UAAU,oCAAoCkI,EAAM0/D,UACzD1/D,EAAMs/D,aAAe,CACpB,MACA,UAAMxnE,UAAU,mCAAmC0tC,GAAAA,WAAAA,MAAqB,kDAK9EmE,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,+BACb,UAAMA,UAAU,oCAAoC9rB,KAAK2zF,mBAAmB3/D,MAKlF2pC,EAAM7kD,IACJ,YACA,SAAKgT,UAAU,mCACb,EAAConE,GAAU,CAACpyB,MAAOtH,GAAAA,WAAAA,MAAqB,+BAAgCzyD,MAAOq5D,GAAUpsC,EAAMg7C,iBAInGrR,EAAM7kD,IACJ,iBACA,SAAKgT,UAAU,wCACb,EAAConE,GAAU,CACTpyB,MAAOtH,GAAAA,WAAAA,MAAqB,qCAC5BzyD,MACEitB,EAAM4/D,iBACJ,WACGxzB,GAAUpsC,EAAM4/D,kBAChB5/D,EAAM6/D,iBAAmB,MAAM7/D,EAAM6/D,gBACjB,oBAApB7zF,KAAK0qB,MAAM1lB,MAA8BgvB,EAAM0/D,UAC9C,WACG,IAAG,KACF,UAAM5nE,UAAU,mCAAmCkI,EAAM0/D,YAKjEl6B,GAAAA,WAAAA,MAAqB,iCAOxBmE,CACT,EAAC,EAED81B,iBAAA,SAAiBz/D,GAAoB,WAC7B2pC,EAAQ,IAAIlB,EAEZq3B,EAAY,CAChBhW,QAAS,oBACTiW,gBAAiB,uBACjB/zF,KAAK0qB,MAAM1lB,MAEb,GAAwB,oBAApBhF,KAAK0qB,MAAM1lB,KAA4B,CACzC,IAAMinE,GAAYjsE,KAAKozF,cAAcp/D,EAAMrK,MACrCqqE,EAAa/nB,EAAW,oBAAsB,oBAEpDtO,EAAM7kD,IACJ,gBACA,EAAC2qD,GAAM,CACL33C,UAAU,0BACVo0C,KAAM+L,EAAW,aAAe,mBAChC3pB,QAAS,WACP,EAAK8wC,cAAcp/D,EAAMrK,MAASsiD,EAClCj3D,EAAEwqC,QACJ,GAECga,GAAAA,WAAAA,MAAqB,uBAAuBw6B,IAGnD,CAEA,IAAIC,EACF,EAACxwB,GAAM,CAAC33C,UAAU,wBAAwB9C,SAAUgL,EAAMs/D,YAAa50B,UAAW1+D,KAAK0+D,QAAQ1qC,EAAMrK,MAAQ24B,QAAS,kBAAM,EAAK4xC,OAAOlgE,EAAM,GAC3IwlC,GAAAA,WAAAA,MAAqB,uBAAuBs6B,IAcjD,OAVI9/D,EAAMs/D,cACRW,EACE,EAACxrF,GAAO,CAAC8H,KAAMipD,GAAAA,WAAAA,MAAqB,yDAClC,SAAK3mB,SAAS,KAAKohD,KAKzBt2B,EAAM7kD,IAAI,SAAUm7E,GAEbt2B,CACT,EAAC,EAEKu2B,OAAM,+BAAZ,WAAalgE,GAAkB,+EACxB44C,QAAQvM,GAAY7G,GAAAA,WAAAA,MAAqB,0DAA2D,CAAF,gDAEtE,OAAjCx5D,KAAK0+D,QAAQ1qC,EAAMrK,OAAS,EAAK,SAE3BqK,EAAK,SAAS,OAEpBh0B,KAAK0+D,QAAQ1qC,EAAMrK,OAAS,EACT,OAAnB,KAAA3pB,KAAK0qB,OAAMypE,WAAX,SAAsBngE,GAEhBlnB,EAA0B,YAApB9M,KAAK0qB,MAAM1lB,KAAqB,qBAAuB,gBAEnEw0D,GAAAA,OAAAA,KAAgB,CAAEx0D,KAAM,WAAaw0D,GAAAA,WAAAA,MAAqB,uBAAuB1sD,EAAO,CAAE2J,MAAO,KACjGzB,EAAEwqC,SAAS,iDACZ,mDAdW,GAcX,EAEDm0C,mBAAA,SAAmB3/D,GACjB,IAAMnhB,EAAOmhB,EAAM7qB,SAAWqwD,GAAAA,WAAAA,MAAqB,+CAC7CzyD,EAAQ/G,KAAKo0F,kBAAkBpgE,GAErC,OAAOwlC,GAAAA,WAAAA,MAAqB,uCAAwC,CAAErwD,MAAO0J,EAAMmhB,MAAOjtB,GAC5F,EAAC,EAEDqtF,kBAAA,SAAkBpgE,GAChB,IAAMqgE,EAAiB30F,MAAM,IAAI40F,KAAK,KAAKl8E,KAAK,IAC1CrR,EAAQ/G,KAAKozF,cAAcp/D,EAAMrK,MAASqK,EAAMA,QAAUqgE,EAEhE,OAAO,UAAMvoE,UAAU,+BAA+B/kB,EACxD,EAAC,EA7KkC,CAA8Es0D,GCV9Fk5B,GAAmB,mGACL,OADK,0CAC5BC,WAAapnC,GAAO,IAAG,EADK,OACL,kBAiDhC,OAjDgC,EAEjCthC,UAAA,WACE,MAAO,kCACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,GAAAA,WAAAA,MAAqB,mDAC9B,EAAC,EAEDpjC,QAAA,WACE,IAAMq+D,EAAaj7B,GAAAA,WAAAA,MAAqB,gEAExC,OACE,SAAK1tC,UAAU,cACb,SAAKA,UAAU,uBACb,SAAKA,UAAU,cACb,WAAO9mB,KAAK,OAAO8mB,UAAU,cAAc+sC,KAAM74D,KAAKw0F,WAAY5vB,YAAa6vB,EAAY,aAAYA,KAEzG,SAAK3oE,UAAU,cACb,EAAC23C,GAAM,CAAC33C,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,GAAAA,WAAAA,MAAqB,+DAMlC,EAAC,EAEDqR,WAAA,WACE,MAAO,CACL1hE,MAAOnJ,KAAKw0F,aAEhB,EAAC,EAEDtvB,SAAA,SAAS3hE,GAAgB,WACvB,YAAM2hE,SAAQ,UAAC3hE,GACfA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEflF,GAAAA,MAAAA,aAC6B,iBAC1B0O,KAAKloE,KAAK6qE,cACV5zC,MAAK,SAACjD,GACL,EAAKtJ,MAAMgqE,UAAU1gE,GACrBwlC,GAAAA,MAAAA,OACF,IAAE,QACOx5D,KAAK8nE,OAAOp4B,KAAK1vC,MAC9B,EAAC,EAlDqC,CAAoF6oE,ICVvG8rB,GAAqB,6BAC9B1jE,OAA+B,KAAI,KACtC2jE,0BAAoC,EAAK,KACzCC,qBAA+B,CAAK,mBA2C1C,OA3C0C,EAEpCC,gBAAP,WACE,OAAuB,OAAhB90F,KAAKixB,MACd,EAAC,EAEM8jE,UAAP,WACE,OAAO/0F,KAAKixB,MACd,EAAC,EAEM+jE,UAAP,SAAiB/jE,GACfjxB,KAAKixB,OAASA,CAChB,EAAC,EAEMgkE,UAAP,SAAiBjhE,GAA0B,MAC9B,OAAX,EAAAh0B,KAAKixB,SAAL,EAAa/b,KAAK8e,EACpB,EAAC,EAEMkhE,YAAP,SAAmBlhE,GACjBh0B,KAAKixB,OAASjxB,KAAKixB,OAAQnqB,QAAO,SAACoR,GAAC,OAAKA,IAAM8b,CAAK,GACtD,EAAC,EAEMmhE,iBAAP,WAAyC,MACvC,OAAkB,OAAX,EAAAn1F,KAAKixB,aAAM,EAAX,EAAanqB,QAAO,SAACktB,GAAK,OAAKA,EAAMohE,gBAAgB,IAAE1/E,MAAK,SAAChM,EAAGE,GAAC,OAAMA,EAAE0pF,YAAc,GAAK,CAAC,MAAM,EAC5G,EAAC,EAEM+B,mBAAP,WAAkD,MAChD,OAAkB,OAAX,EAAAr1F,KAAKixB,aAAM,EAAX,EAAanqB,QAAO,SAACktB,GAAK,OAAMA,EAAMohE,gBAAgB,MAAK,IACpE,EAEA,EAGOE,sBAAP,WAA8C,MAC5C,OAAkB,OAAX,EAAAt1F,KAAKixB,aAAM,EAAX,EAAanqB,QAAO,SAACktB,GAAK,OAAKA,EAAMohE,mBAAqBphE,EAAMs/D,WAAW,MAAK,EACzF,EAAC,EAEMiC,uBAAP,WACE,OAAQv1F,KAAKs1F,yBAA2B,IAAI7wF,OAAS,CACvD,EAAC,EAEM+wF,yBAAP,WACEx1F,KAAKixB,OAASjxB,KAAKixB,OAAQnqB,QAAO,SAACktB,GAAK,OAAMA,EAAMohE,kBAAoBphE,EAAMs/D,WAAW,GAC3F,EAAC,EA9CuC,GCkBrBmC,GAAgB,mGACA,OADA,0CACnCp9D,MAAQ,IAAIs8D,GAAuB,EADA,OACA,kBAiOlC,OAjOkC,EAEnCpyC,OAAA,SAAOH,GAAyC,MAC9C,YAAMG,OAAM,UAACH,GAEb,IAAMszC,EAAgB1gF,EAAEwrC,MAAM3L,MAAM,YAEhC6gD,KAAkC,OAArB,EAAKl8B,GAAAA,QAAAA,WAAgB,EAAhB,EAAkBsF,SAAWtF,GAAAA,MAAAA,UAA6B,4BAC9ExkD,EAAEwrC,MAAM1kC,IAAI,KAGd9b,KAAKqpF,SAASqM,GAEdl8B,GAAAA,SAAa6G,GAAY7G,GAAAA,WAAAA,MAAqB,+BAE9Cx5D,KAAK21F,YACP,EAAC,EAEDv/D,QAAA,WACE,OACE,SAAKtK,UAAU,oBACb,YAAK0xC,EAAUx9D,KAAKmyF,gBAAgBlvE,YAG1C,EAEA,EAGAkvE,cAAA,WAAgB,MACRx0B,EAAQ,IAAIlB,EA0ClB,OAvCEjD,GAAAA,MAAAA,UAAoB,yBACpBA,GAAAA,MAAAA,UAAoB,4BACnBx5D,KAAKq4B,MAAMy8D,mBAAoD,OAAnC,EAAI90F,KAAKq4B,MAAMg9D,uBAAX,EAAiC5wF,OAElEk5D,EAAM7kD,IACJ,kBACA,EAACs4E,GAAQ,CAACtlE,UAAU,mCAAmCg1C,MAAOtH,GAAAA,WAAAA,MAAqB,iDAChFx5D,KAAK41F,uBAAuB3yE,YAGvBjjB,KAAKq4B,MAAMy8D,mBACrBn3B,EAAM7kD,IAAI,kBAAmB,EAAC4pD,GAAgB,OAGhD/E,EAAM7kD,IACJ,WACA,EAACs4E,GAAQ,CAACtlE,UAAU,4BAA4Bg1C,MAAOtH,GAAAA,WAAAA,MAAqB,yCACzEx5D,KAAK61F,gBAAgB5yE,YAItBjjB,KAAK8sD,KAAMnjC,OAAS6vC,GAAAA,QAAAA,KAAAA,MACtBmE,EAAM7kD,IACJ,eACA,EAACs4E,GAAQ,CAACtlE,UAAU,gCAAgCg1C,MAAOtH,GAAAA,WAAAA,MAAqB,8CAC9E,UAAM1tC,UAAU,YAAY0tC,GAAAA,WAAAA,MAAqB,gDACjD,EAACiK,GAAM,CACL33C,UAAU,SACVo0C,KAAK,sBACL5d,QAAStiD,KAAK81F,aAAapmD,KAAK1vC,MAChC0+D,QAAS1+D,KAAKq4B,MAAMw8D,oBACpB7rE,SAAUhpB,KAAKq4B,MAAMu8D,0BAEpBp7B,GAAAA,WAAAA,MAAqB,uDAMvBmE,CACT,EAEA,EAGAi4B,qBAAA,WAAuB,WACfj4B,EAAQ,IAAIlB,EAwClB,OAtCAkB,EAAM7kD,IACJ,kBACC9Y,KAAKq4B,MAAMy8D,kBAGV,EAAC3B,GAAgB,CACfnuF,KAAK,kBACLmvF,SAAU,SAACngE,GACT,EAAKqE,MAAM68D,YAAYlhE,GACvBhf,EAAEwqC,QACJ,EACAvuB,OAAQjxB,KAAKq4B,MAAMg9D,qBACnBn1B,KAAK,aACL61B,YAAY,IAVd,EAACrzB,GAAgB,OAejB1iE,KAAK8sD,KAAMnjC,OAAS6vC,GAAAA,QAAAA,KAAAA,MACtBmE,EAAM7kD,IACJ,iBACA,EAAC2qD,GAAM,CACL33C,UAAU,SACV9C,UAAWwwC,GAAAA,MAAAA,UAA6B,wBACxClX,QAAS,kBACPkX,GAAAA,MAAAA,KAAe+6B,GAAqB,CAClCG,UAAW,SAAC1gE,GACV,EAAKqE,MAAM48D,UAAUjhE,GACrBhf,EAAEwqC,QACJ,GACA,GAGHga,GAAAA,WAAAA,MAAqB,iDAKrBmE,CACT,EAEA,EAGAk4B,cAAA,WAAgB,WACRl4B,EAAQ,IAAIlB,EAoBlB,GAlBAkB,EAAM7kD,IACJ,eACC9Y,KAAKq4B,MAAMy8D,kBAGV,EAAC3B,GAAgB,CACfnuF,KAAK,UACLmvF,SAAU,SAACngE,GACT,EAAKqE,MAAM68D,YAAYlhE,GACvBhf,EAAEwqC,QACJ,EACAvuB,OAAQjxB,KAAKq4B,MAAM88D,mBACnBj1B,KAAK,gBACL61B,YAAY,IAVd,EAACrzB,GAAgB,OAejB1iE,KAAK8sD,KAAMnjC,OAAS6vC,GAAAA,QAAAA,KAAAA,KAAwB,CAC9C,IAAMruC,GAAcnrB,KAAKq4B,MAAMk9D,yBAE3BS,EACF,EAACvyB,GAAM,CACL33C,UAAU,SACVw2B,QAAStiD,KAAKi2F,0BAA0BvmD,KAAK1vC,MAC7C0+D,QAAS1+D,KAAKq4B,MAAMu8D,yBACpB5rE,SAAUhpB,KAAKq4B,MAAMw8D,qBAAuB1pE,GAE3CquC,GAAAA,WAAAA,MAAqB,qDAItBruC,IACF6qE,EACE,EAACvtF,GAAO,CAAC8H,KAAMipD,GAAAA,WAAAA,MAAqB,yDAClC,UAAM3mB,SAAS,KAAKmjD,KAK1Br4B,EAAM7kD,IAAI,4BAA6Bk9E,EACzC,CAEA,OAAOr4B,CACT,EAAC,EAEDg4B,WAAA,WAAa,WACX,OAAOn8B,GAAAA,MAAAA,KACgB,gBAAiB,CACpC1yD,OAAQ,CAAEgmD,KAAM9sD,KAAK8sD,KAAMnjC,QAE5BsN,MAAK,SAAChG,GACL,EAAKoH,MAAM28D,UAAU/jE,GACrBjc,EAAEwqC,QACJ,GACJ,EAAC,EAEDy2C,0BAAA,WAA4B,WAC1B,GAAKrpB,QAAQvM,GAAY7G,GAAAA,WAAAA,MAAqB,mEAI9C,OAFAx5D,KAAKq4B,MAAMu8D,0BAA2B,EAE/Bp7B,GAAAA,QACI,CACP1iC,OAAQ,SACR+f,IAAK2iB,GAAAA,MAAAA,UAAoB,UAAY,cAEtCviC,MAAK,WAEJ,IAAMxgB,EAAQ,EAAK4hB,MAAMi9D,wBAAwB7wF,OAEjD,EAAK4zB,MAAMm9D,2BAEXh8B,GAAAA,OAAAA,KAAgB,CAAEx0D,KAAM,WAAaw0D,GAAAA,WAAAA,MAAqB,yCAA0C,CAAE/iD,MAAAA,IACxG,IAAE,OACK,WACL+iD,GAAAA,OAAAA,KAAgB,CAAEx0D,KAAM,SAAWw0D,GAAAA,WAAAA,MAAqB,kDAC1D,IAAE,SACO,WACP,EAAKnhC,MAAMu8D,0BAA2B,EACtC5/E,EAAEwqC,QACJ,GACJ,EAAC,EAEDs2C,aAAA,WAAe,WAGb,OAFA91F,KAAKq4B,MAAMw8D,qBAAsB,EAE1Br7B,GAAAA,QACI,CACP1iC,OAAQ,OACR+f,IAAK2iB,GAAAA,MAAAA,UAA4B,WAAa,mBAE/CviC,MAAK,kBAAMl1B,OAAOkuB,SAAS66C,QAAQ,IAAC,SAC5B,WACP,EAAKzyC,MAAMw8D,qBAAsB,EACjC7/E,EAAEwqC,QACJ,GACJ,EAAC,EAlOkC,CAA8DypC,ICKpF,SAAS,GAACzvB,GACvBA,EAAIzY,OAAS,CACXl7C,MAAO,CAAEw6C,KAAM,OAAQX,UAAW8tC,IAElCtvB,WAAY,CAAE7d,KAAM,SAAUX,UAAWgsB,GAAgBwqB,cAAenD,IACxE,kBAAmB,CAAE1yC,KAAM,eAAgBX,UAAWgsB,GAAgBwqB,cAAenD,IAErFjmC,KAAM,CAAEzM,KAAM,eAAgBX,UAAW6uC,IACzC,aAAc,CAAEluC,KAAM,eAAgBX,UAAW6uC,IACjD,mBAAoB,CAAEluC,KAAM,2BAA4BX,UAAWoxC,IAEnEt5C,SAAU,CAAE6I,KAAM,YAAaX,UAAWuyC,IAC1C,gBAAiB,CAAE5xC,KAAM,wBAAyBX,UAAW+1C,IAC7DjX,cAAe,CAAEn+B,KAAM,iBAAkBX,UAAWgzC,IAExD,CC9Be,SAASyD,GAAuB38B,GAC7C,IAAM1M,EAAO0M,EAAIskB,QAAQhxB,KAEzB,GAAKA,IAAQA,EAAKs7B,mBAAlB,CAA6C,IAEvCgO,EAAY,uFAoCf,OApCe,EAChB7zC,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAK0+D,SAAU,EACf1+D,KAAKw1D,MAAO,CACd,EAAC,EAED7wB,KAAA,WACE,OACE,EAAC8+B,GAAM,CAAC33C,UAAU,sBAAsBw2B,QAAStiD,KAAKsiD,QAAQ5S,KAAK1vC,MAAO0+D,QAAS1+D,KAAK0+D,QAAS11C,SAAUhpB,KAAKw1D,MAC7Gx1D,KAAKw1D,KACF,CAAC0K,GAAK,gBAAiB,IAAK1G,EAAIiH,WAAWC,MAAM,oDACjDlH,EAAIiH,WAAWC,MAAM,oDAG/B,EAAC,EAEDpe,QAAA,WAAU,WACRtiD,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEFga,EACG1W,QAAQ,CACPhsB,OAAQ,OACR+f,IAAK2iB,EAAI2J,MAAMC,UAAU,UAAY,UAAYtW,EAAKnjC,KAAO,uBAE9DsN,MAAK,WACJ,EAAKynC,SAAU,EACf,EAAKlJ,MAAO,EACZxgD,EAAEwqC,QACJ,IAAE,OACK,WACL,EAAKkf,SAAU,EACf1pD,EAAEwqC,QACJ,GACJ,EAAC,EApCe,CAAS6b,GAuCrBg7B,EAAc,8DAIjB,OAJiB,mBAClB1xD,KAAA,SAAKyd,GACH,IAAMke,EAAO,EAAH,UAAS37B,KAAI,UAACyd,GACxB,OAAO,KAAKke,EAAM,CAAAhrC,SAAU,CAAC,SAAKxJ,UAAU,aAAaw0C,EAAKhrC,YAChE,EAAC,EAJiB,CAASkzC,IAO7BxzD,EAAEyqC,MAAMp/C,EAAE,kCAAkCsnC,aAAa,YAAY,GAAI,CACvEhD,KAAM,kBACJ,EAAC0xD,EAAc,CAAC5tB,aAAa,EAAOF,SAAU,CAAC,EAAC6tB,EAAY,OAAMtqE,UAAU,4BACzE0tC,EAAIiH,WAAWC,MAAM,mDAAoD,CAAEmJ,MAAO,gBAAS/c,EAAK+c,WAClF,GApDuB,CAuD9C,CCpEA,IAAMysB,GAAqB,CACzB,QACA,SACA,WACA,UACA,SACA,uBACA,kBACA,kBACA,mDACA,gCACA,WAEIC,GAAoCD,GAAmBl+E,KAAK,KAE5Do+E,GAA+B,oBAAZC,QAEnBzxE,GAAUwxE,GACZ,WAAa,EACbC,QAAQ92F,UAAUqlB,SAClByxE,QAAQ92F,UAAUgtB,mBAClB8pE,QAAQ92F,UAAU6sB,sBAEhBoR,IACH44D,IAAaC,QAAQ92F,UAAUi+B,YAC5B,SAACr9B,GAAD,OAAaA,EAAQq9B,aAArB,EACA,SAACr9B,GAAD,OAAaA,EAAQgN,aAArB,EAQAmpF,GAAgB,SAAU7uF,EAAI8uF,EAAkB7vF,GACpD,IAAI8vF,EAAal3F,MAAMC,UAAU4V,MAAM9B,MACrC5L,EAAGqiB,iBAAiBqsE,KAMtB,OAJII,GAAoB3xE,GAAQjlB,KAAK8H,EAAI0uF,KACvCK,EAAWvpE,QAAQxlB,GAER+uF,EAAW9vF,OAAOA,EAEhC,EAoCK+vF,GAA2B,SAA3BA,EACJ/uF,EACA6uF,EACAn2F,GAIA,IAFA,IAAMo2F,EAAa,GACbE,EAAkBp3F,MAAMigB,KAAK7X,GAC5BgvF,EAAgBryF,QAAQ,CAC7B,IAAMlE,EAAUu2F,EAAgBxsE,QAChC,GAAwB,SAApB/pB,EAAQ0E,QAAoB,CAE9B,IAAM8xF,EAAWx2F,EAAQy2F,mBAEnBC,EAAmBJ,EADTE,EAAStyF,OAASsyF,EAAWx2F,EAAQ+0B,UACM,EAAM90B,GAC7DA,EAAQ02F,QACVN,EAAW1hF,KAAX,MAAA0hF,EAAmBK,GAEnBL,EAAW1hF,KAAK,CACd8U,MAAOzpB,EACPq2F,WAAYK,GAGjB,KAAM,CAEkBjyE,GAAQjlB,KAAKQ,EAASg2F,KAG3C/1F,EAAQsG,OAAOvG,KACdo2F,IAAqB7uF,EAASoyD,SAAS35D,KAExCq2F,EAAW1hF,KAAK3U,GAIlB,IAAM42F,EACJ52F,EAAQ42F,YAE0B,mBAA1B32F,EAAQ42F,eACd52F,EAAQ42F,cAAc72F,GAEpB82F,GACH72F,EAAQ82F,kBAAoB92F,EAAQ82F,iBAAiB/2F,GAExD,GAAI42F,GAAcE,EAAiB,CAOjC,IAAMJ,EAAmBJ,GACR,IAAfM,EAAsB52F,EAAQ+0B,SAAW6hE,EAAW7hE,UACpD,EACA90B,GAGEA,EAAQ02F,QACVN,EAAW1hF,KAAX,MAAA0hF,EAAmBK,GAEnBL,EAAW1hF,KAAK,CACd8U,MAAOzpB,EACPq2F,WAAYK,GAGjB,MAGCH,EAAgBzpE,QAAhB,MAAAypE,EAA2Bv2F,EAAQ+0B,SAEtC,CACF,CACD,OAAOshE,CACR,EAEKW,GAAc,SAAU/0E,EAAMg1E,GAClC,OAAIh1E,EAAK6N,SAAW,IAafmnE,GACC,0BAA0BjzF,KAAKie,EAAKvd,UACpCud,EAAKi1E,oBACPhoF,MAAMF,SAASiT,EAAKG,aAAa,YAAa,KAEvC,EAIJH,EAAK6N,QACb,EAEKqnE,GAAuB,SAAUhuF,EAAGE,GACxC,OAAOF,EAAE2mB,WAAazmB,EAAEymB,SACpB3mB,EAAEiuF,cAAgB/tF,EAAE+tF,cACpBjuF,EAAE2mB,SAAWzmB,EAAEymB,QACpB,EAEKqhC,GAAU,SAAUlvC,GACxB,MAAwB,UAAjBA,EAAKvd,OACb,EAkEK2yF,GAAa,SAAUp1E,GAC3B,IAA0BA,EAAAA,EAAK3R,wBAAvBjC,EAAR,EAAQA,MAAO1M,EAAf,EAAeA,OACf,OAAiB,IAAV0M,GAA0B,IAAX1M,CACvB,EAkJK21F,GAAkC,SAAUr3F,EAASgiB,GACzD,QACEA,EAAKwG,UAvNa,SAAUxG,GAC9B,OAAOkvC,GAAQlvC,IAAuB,WAAdA,EAAKxd,IAC9B,CAsNG8yF,CAAct1E,IApJD,SAAUA,EAAuCu1E,GAAA,IAA/BC,EAA+B,EAA/BA,aAAcZ,EAAiB,EAAjBA,cAM/C,GAA0C,WAAtC5uD,iBAAiBhmB,GAAM+oB,WACzB,OAAO,EAGT,IACM0sD,EADkBjzE,GAAQjlB,KAAKyiB,EAAM,iCACAA,EAAK01E,cAAgB11E,EAChE,GAAIwC,GAAQjlB,KAAKk4F,EAAkB,yBACjC,OAAO,EAoBT,IAAME,EAAev6D,GAAYpb,GAAM62B,KACjC++C,GACJD,aAAA,EAAAA,EAAc5qF,cAAcrI,SAASizF,KACrC31E,EAAKjV,cAAcrI,SAASsd,GAE9B,GAAKw1E,GAAiC,SAAjBA,GA6Dd,GAAqB,kBAAjBA,EAMT,OAAOJ,GAAWp1E,OAnE0B,CAC5C,GAA6B,mBAAlB40E,EAA8B,CAIvC,IADA,IAAMiB,EAAe71E,EACdA,GAAM,CACX,IAAM01E,EAAgB11E,EAAK01E,cACrBI,EAAW16D,GAAYpb,GAC7B,GACE01E,IACCA,EAAcf,aACkB,IAAjCC,EAAcc,GAId,OAAON,GAAWp1E,GAGlBA,EAFSA,EAAK+1E,aAEP/1E,EAAK+1E,aACFL,GAAiBI,IAAa91E,EAAKjV,cAKtC2qF,EAHAI,EAASj/C,IAKnB,CAED72B,EAAO61E,CACR,CAWD,GAAID,EAKF,OAAQ51E,EAAK6pB,iBAAiB5nC,MAgBjC,CAUD,OAAO,CACR,CAuCGwnE,CAASzpD,EAAMhiB,IArNU,SAAUgiB,GAMrC,MAJmB,YAAjBA,EAAKvd,SACLvF,MAAMC,UAAU4V,MACb9B,MAAM+O,EAAK8S,UACXgsB,MAAK,SAACoB,GAAD,MAA6B,YAAlBA,EAAMz9C,OAAjB,GAEX,CAgNGuzF,CAAqBh2E,IApCM,SAAUA,GACvC,GAAI,mCAAmCje,KAAKie,EAAKvd,SAG/C,IAFA,IAAIsD,EAAaia,EAAK01E,cAEf3vF,GAAY,CACjB,GAA2B,aAAvBA,EAAWtD,SAA0BsD,EAAWygB,SAAU,CAE5D,IAAK,IAAI/hB,EAAI,EAAGA,EAAIsB,EAAW+sB,SAAS7wB,OAAQwC,IAAK,CACnD,IAAMy7C,EAAQn6C,EAAW+sB,SAASrT,KAAKhb,GAEvC,GAAsB,WAAlBy7C,EAAMz9C,QAGR,QAAO+f,GAAQjlB,KAAKwI,EAAY,0BAE3Bm6C,EAAMx9C,SAASsd,EAEvB,CAED,OAAO,CACR,CACDja,EAAaA,EAAW2vF,aACzB,CAKH,OAAO,CACR,CASGO,CAAuBj2E,GAK1B,EAEKk2E,GAAiC,SAAUl4F,EAASgiB,GACxD,QAxKyB,SAAUA,GACnC,OALc,SAAUA,GACxB,OAAOkvC,GAAQlvC,IAAuB,UAAdA,EAAKxd,IAC9B,CAGQ2zF,CAAQn2E,KAxCO,SAAUA,GAChC,IAAKA,EAAK3P,KACR,OAAO,EAET,IAOI+lF,EAPEC,EAAar2E,EAAKs2E,MAAQl7D,GAAYpb,GACtCu2E,EAAc,SAAUlmF,GAC5B,OAAOgmF,EAAW3uE,iBAChB,6BAA+BrX,EAAO,OAK1C,GACoB,oBAAX9Q,aACe,IAAfA,OAAOi3F,KACe,mBAAtBj3F,OAAOi3F,IAAI3wE,OAElBuwE,EAAWG,EAAYh3F,OAAOi3F,IAAI3wE,OAAO7F,EAAK3P,YAE9C,IACE+lF,EAAWG,EAAYv2E,EAAK3P,KAQ7B,CAPC,MAAOmuB,GAMP,OAJA1G,QAAQjW,MACN,2IACA2c,EAAIxG,UAEC,CACR,CAGH,IAAMlK,EAvCgB,SAAUmQ,EAAOq4D,GACvC,IAAK,IAAI7xF,EAAI,EAAGA,EAAIw5B,EAAMh8B,OAAQwC,IAChC,GAAIw5B,EAAMx5B,GAAGqpB,SAAWmQ,EAAMx5B,GAAG6xF,OAASA,EACxC,OAAOr4D,EAAMx5B,EAGlB,CAiCiBgyF,CAAgBL,EAAUp2E,EAAKs2E,MAC/C,OAAQxoE,GAAWA,IAAY9N,CAChC,CAO0B02E,CAAgB12E,EAC1C,CAuKG22E,CAAmB32E,IACnB+0E,GAAY/0E,GAAQ,IACnBq1E,GAAgCr3F,EAASgiB,GAK7C,EAEK42E,GAA4B,SAAUC,GAC1C,IAAMhpE,EAAW9gB,SAAS8pF,EAAe12E,aAAa,YAAa,IACnE,SAAIlT,MAAM4gB,IAAaA,GAAY,EAMpC,EAMKipE,GAAc,SAAdA,EAAwB1C,GAC5B,IAAM2C,EAAmB,GACnBC,EAAmB,GAqBzB,OApBA5C,EAAWjgF,SAAQ,SAAUsL,EAAMhb,GACjC,IAAMuwF,IAAYv1E,EAAK+H,MACjBzpB,EAAUi3F,EAAUv1E,EAAK+H,MAAQ/H,EACjCw3E,EAAoBlC,GAAYh3F,EAASi3F,GACzC1vF,EAAW0vF,EAAU8B,EAAYr3E,EAAK20E,YAAcr2F,EAChC,IAAtBk5F,EACFjC,EACI+B,EAAiBrkF,KAAjB,MAAAqkF,EAAyBzxF,GACzByxF,EAAiBrkF,KAAK3U,GAE1Bi5F,EAAiBtkF,KAAK,CACpByiF,cAAe1wF,EACfopB,SAAUopE,EACVx3E,KAAMA,EACNu1E,QAASA,EACTphE,QAAStuB,OAKR0xF,EACJ9jF,KAAKgiF,IACL53F,QAAO,SAACG,EAAKy5F,GAIZ,OAHAA,EAASlC,QACLv3F,EAAIiV,KAAJ,MAAAjV,EAAYy5F,EAAStjE,SACrBn2B,EAAIiV,KAAKwkF,EAAStjE,SACfn2B,CACR,GAAE,IACFE,OAAOo5F,EACX,EAEKI,GAAW,SAAU9xF,EAAIrH,GAG7B,IAAIo2F,EAeJ,OAbEA,GAJFp2F,EAAUA,GAAW,CAAC,GAGV42F,cACGP,GAAyB,CAAChvF,GAAKrH,EAAQm2F,iBAAkB,CACpE7vF,OAAQ4xF,GAA+BhpD,KAAK,KAAMlvC,GAClD02F,SAAS,EACTE,cAAe52F,EAAQ42F,cACvBE,iBAAkB8B,KAGP1C,GACX7uF,EACArH,EAAQm2F,iBACR+B,GAA+BhpD,KAAK,KAAMlvC,IAGvC84F,GAAY1C,EACpB,EAuBKgD,GAAa,SAAUp3E,EAAMhiB,GAEjC,GADAA,EAAUA,GAAW,CAAC,GACjBgiB,EACH,MAAM,IAAI3W,MAAM,oBAElB,OAA8C,IAA1CmZ,GAAQjlB,KAAKyiB,EAAM+zE,KAGhBmC,GAA+Bl4F,EAASgiB,EAChD,EAEKq3E,GAA6CvD,GAChDn2F,OAAO,UACPiY,KAAK,KAEF0hF,GAAc,SAAUt3E,EAAMhiB,GAElC,GADAA,EAAUA,GAAW,CAAC,GACjBgiB,EACH,MAAM,IAAI3W,MAAM,oBAElB,OAAuD,IAAnDmZ,GAAQjlB,KAAKyiB,EAAMq3E,KAGhBhC,GAAgCr3F,EAASgiB,EACjD,+rBC3hBD,IACQu3E,GADFC,IACED,GAAY,GACX,CACLE,aADK,SACQC,GACX,GAAIH,GAAUt1F,OAAS,EAAG,CACxB,IAAM01F,EAAaJ,GAAUA,GAAUt1F,OAAS,GAC5C01F,IAAeD,GACjBC,EAAWC,OAEd,CAED,IAAMC,EAAYN,GAAU74E,QAAQg5E,IACjB,IAAfG,GAIFN,GAAUh2E,OAAOs2E,EAAW,GAH5BN,GAAU7kF,KAAKglF,IAQnBI,eAnBK,SAmBUJ,GACb,IAAMG,EAAYN,GAAU74E,QAAQg5E,IACjB,IAAfG,GACFN,GAAUh2E,OAAOs2E,EAAW,GAG1BN,GAAUt1F,OAAS,GACrBs1F,GAAUA,GAAUt1F,OAAS,GAAG81F,SAEnC,IAoBCnxF,GAAQ,SAAUvF,GACtB,OAAOf,WAAWe,EAAI,EACvB,EAIK22F,GAAY,SAAUj5E,EAAK1d,GAC/B,IAAI6rB,GAAO,EAWX,OATAnO,EAAImtC,OAAM,SAAU3nD,EAAOE,GACzB,OAAIpD,EAAGkD,KACL2oB,EAAMzoB,GACC,MAMJyoB,CACR,EASK+qE,GAAiB,SAAU1zF,GAAkB,2BAARk2C,EAAQ,iCAARA,EAAQ,kBACjD,MAAwB,mBAAVl2C,EAAuBA,EAAK,WAAIk2C,EAAAA,GAAUl2C,CACzD,EAEK2zF,GAAkB,SAAUznF,GAQhC,OAAOA,EAAMtS,OAAOw2F,YAA4C,mBAAvBlkF,EAAM0nF,aAC3C1nF,EAAM0nF,eAAe,GACrB1nF,EAAMtS,MACX,EAEKi6F,GAAkB,SAAU9yF,EAAU+yF,GAG1C,IA6CIX,EA7CEz3E,GAAMo4E,aAAA,EAAAA,EAAaj6F,WAAYA,SAE/BqsD,EAAS,GAAH,CACV6tC,yBAAyB,EACzBC,mBAAmB,EACnBC,mBAAmB,GAChBH,GAGCxiE,EAAQ,CAGZ4iE,WAAY,GAeZC,gBAAiB,GAMjBC,eAAgB,GAEhBC,4BAA6B,KAC7BC,wBAAyB,KACzB3kD,QAAQ,EACRq9B,QAAQ,EAIRunB,4BAAwBxoF,GAapByoF,EAAY,SAACC,EAAuBC,EAAYC,GACpD,OAAOF,QACiC1oF,IAAtC0oF,EAAsBC,GACpBD,EAAsBC,GACtBxuC,EAAOyuC,GAAoBD,IAU3BE,EAAqB,SAAUp7F,GAInC,OAAO83B,EAAM6iE,gBAAgBV,WAC3B,gBAAGlxF,EAAH,EAAGA,UAAWsyF,EAAd,EAAcA,cAAd,OACEtyF,EAAUpE,SAAS3E,IAKnBq7F,EAAc/6F,MAAK,SAAC2hB,GAAD,OAAUA,IAASjiB,CAAnB,GANrB,KAuBEs7F,EAAmB,SAAUJ,GACjC,IAAIK,EAAc7uC,EAAOwuC,GAEzB,GAA2B,mBAAhBK,EAA4B,4BAHS7+C,EAGT,iCAHSA,EAGT,kBACrC6+C,EAAcA,EAAAroF,WAAAA,EAAewpC,EAC9B,CAMD,IAJoB,IAAhB6+C,IACFA,OAAchpF,IAGXgpF,EAAa,CAChB,QAAoBhpF,IAAhBgpF,IAA6C,IAAhBA,EAC/B,OAAOA,EAIT,MAAM,IAAIjwF,MACH4vF,IAAAA,OAAAA,EADP,gEAGD,CAED,IAAIj5E,EAAOs5E,EAEX,GAA2B,iBAAhBA,KACTt5E,EAAOC,EAAI+uC,cAAcsqC,IAEvB,MAAM,IAAIjwF,MACH4vF,IAAAA,OAAAA,EADP,0CAMJ,OAAOj5E,GAGHu5E,EAAsB,WAC1B,IAAIv5E,EAAOq5E,EAAiB,gBAG5B,IAAa,IAATr5E,EACF,OAAO,EAGT,QAAa1P,IAAT0P,EAEF,GAAIm5E,EAAmBl5E,EAAIyN,gBAAkB,EAC3C1N,EAAOC,EAAIyN,kBACN,CACL,IAAM8rE,EAAqB3jE,EAAM8iE,eAAe,GAKhD34E,EAHEw5E,GAAsBA,EAAmBC,mBAGfJ,EAAiB,gBAC9C,CAGH,IAAKr5E,EACH,MAAM,IAAI3W,MACR,gEAIJ,OAAO2W,GAGH05E,EAAsB,WA6D1B,GA5DA7jE,EAAM6iE,gBAAkB7iE,EAAM4iE,WAAWrzF,KAAI,SAAC0B,GAC5C,IDsOsBzB,EAAIrH,ECtOpBo7F,EAAgBjC,GAASrwF,EAAW2jD,EAAOkvC,iBAI3CC,GDkOgBv0F,EClOWyB,GDmOrC9I,GAD8BA,EClOkBysD,EAAOkvC,kBDmOlC,CAAC,GAGV/E,cACGP,GAAyB,CAAChvF,GAAKrH,EAAQm2F,iBAAkB,CACpE7vF,OAAQ+wF,GAAgCnoD,KAAK,KAAMlvC,GACnD02F,SAAS,EACTE,cAAe52F,EAAQ42F,gBAGZV,GACX7uF,EACArH,EAAQm2F,iBACRkB,GAAgCnoD,KAAK,KAAMlvC,KC9O3C,MAAO,CACL8I,UAAAA,EACAsyF,cAAAA,EACAQ,eAAAA,EACAH,kBAAmBL,EAAcn3F,OAAS,EAAIm3F,EAAc,GAAK,KACjES,iBACET,EAAcn3F,OAAS,EACnBm3F,EAAcA,EAAcn3F,OAAS,GACrC,KAUN63F,iBAlBK,SAkBY95E,GAAsB,IAAhBqM,IAAgB,yDAW/B0tE,EAAUH,EAAe5B,WAAU,SAACvlF,GAAD,OAAOA,IAAMuN,CAAb,IACzC,KAAI+5E,EAAU,GAId,OAAI1tE,EACKutE,EACJ7mF,MAAMgnF,EAAU,GAChB17F,MAAK,SAACoU,GAAD,OAAO2kF,GAAW3kF,EAAGg4C,EAAOkvC,gBAA5B,IAGHC,EACJ7mF,MAAM,EAAGgnF,GACTlmE,UACAx1B,MAAK,SAACoU,GAAD,OAAO2kF,GAAW3kF,EAAGg4C,EAAOkvC,gBAA5B,GACT,EAEJ,IAED9jE,EAAM8iE,eAAiB9iE,EAAM6iE,gBAAgBp0F,QAC3C,SAAC23E,GAAD,OAAWA,EAAMmd,cAAcn3F,OAAS,KAKxC4zB,EAAM8iE,eAAe12F,QAAU,IAC9Bo3F,EAAiB,iBAElB,MAAM,IAAIhwF,MACR,wGAKA2wF,EAAW,SAAXA,EAAqBh6E,IACZ,IAATA,GAIAA,IAASC,EAAIyN,gBAIZ1N,GAASA,EAAK7W,OAKnB6W,EAAK7W,MAAM,CAAE8wF,gBAAiBxvC,EAAOwvC,gBACrCpkE,EAAMgjE,wBAA0B74E,EA1TV,SAAUA,GAClC,OACEA,EAAKvd,SAC0B,UAA/Bud,EAAKvd,QAAQuB,eACU,mBAAhBgc,EAAKqD,MAEf,CAsTO62E,CAAkBl6E,IACpBA,EAAKqD,UARL22E,EAAST,OAYPY,EAAqB,SAAUC,GACnC,IAAMp6E,EAAOq5E,EAAiB,iBAAkBe,GAChD,OAAOp6E,IAAuB,IAATA,GAAyBo6E,CAC/C,EAIKC,EAAmB,SAAUt5F,GACjC,IAAM5C,EAAS+5F,GAAgBn3F,GAE3Bo4F,EAAmBh7F,IAAW,IAK9B85F,GAAextC,EAAO6vC,wBAAyBv5F,GAEjD22F,EAAK6C,WAAW,CAYdC,YACE/vC,EAAO6tC,0BACNhB,GAAYn5F,EAAQssD,EAAOkvC,mBAQ9B1B,GAAextC,EAAOgwC,kBAAmB15F,IAM7CA,EAAEmC,iBACH,EAGKw3F,EAAe,SAAU35F,GAC7B,IAAM5C,EAAS+5F,GAAgBn3F,GACzB45F,EAAkBxB,EAAmBh7F,IAAW,EAGlDw8F,GAAmBx8F,aAAkBy8F,SACnCD,IACF9kE,EAAMgjE,wBAA0B16F,IAIlC4C,EAAEi+B,2BACFg7D,EAASnkE,EAAMgjE,yBAA2BU,KAE7C,EAuHKsB,EAAW,SAAU95F,GACzB,GAhfkB,SAAUA,GAC9B,MAAiB,WAAVA,EAAEuJ,KAA8B,QAAVvJ,EAAEuJ,KAA+B,KAAdvJ,EAAEshC,OACnD,CA+eKy4D,CAAc/5F,KACkC,IAAhDk3F,GAAextC,EAAO8tC,kBAAmBx3F,GAIzC,OAFAA,EAAEmC,sBACFw0F,EAAK6C,cAjfQ,SAAUx5F,GAC3B,MAAiB,QAAVA,EAAEuJ,KAA+B,IAAdvJ,EAAEshC,OAC7B,EAmfO04D,CAAWh6F,IA3HA,SAAUA,GACzB,IAAM5C,EAAS+5F,GAAgBn3F,GAC/B24F,IAEA,IAAIsB,EAAkB,KAEtB,GAAInlE,EAAM8iE,eAAe12F,OAAS,EAAG,CAInC,IAAMg5F,EAAiB9B,EAAmBh7F,GACpC+8F,EACJD,GAAkB,EAAIplE,EAAM6iE,gBAAgBuC,QAAkB3qF,EAEhE,GAAI2qF,EAAiB,EAKjBD,EAFEj6F,EAAEmhC,SAGFrM,EAAM8iE,eAAe9iE,EAAM8iE,eAAe12F,OAAS,GAChD43F,iBAGahkE,EAAM8iE,eAAe,GAAGc,uBAEvC,GAAI14F,EAAEmhC,SAAU,CAIrB,IAAIi5D,EAAoBnD,GACtBniE,EAAM8iE,gBACN,gBAAGc,EAAH,EAAGA,kBAAH,OAA2Bt7F,IAAWs7F,CAAtC,IAmBF,GAfE0B,EAAoB,IACnBD,EAAep0F,YAAc3I,GAC3Bm5F,GAAYn5F,EAAQssD,EAAOkvC,mBACzBvC,GAAWj5F,EAAQssD,EAAOkvC,mBAC1BuB,EAAepB,iBAAiB37F,GAAQ,MAQ7Cg9F,EAAoBF,GAGlBE,GAAqB,EAAG,CAI1B,IAAMC,EACkB,IAAtBD,EACItlE,EAAM8iE,eAAe12F,OAAS,EAC9Bk5F,EAAoB,EAG1BH,EADyBnlE,EAAM8iE,eAAeyC,GACXvB,gBACpC,CACF,KAAM,CAIL,IAAIwB,EAAmBrD,GACrBniE,EAAM8iE,gBACN,gBAAGkB,EAAH,EAAGA,iBAAH,OAA0B17F,IAAW07F,CAArC,IAmBF,GAfEwB,EAAmB,IAClBH,EAAep0F,YAAc3I,GAC3Bm5F,GAAYn5F,EAAQssD,EAAOkvC,mBACzBvC,GAAWj5F,EAAQssD,EAAOkvC,mBAC1BuB,EAAepB,iBAAiB37F,MAQrCk9F,EAAmBJ,GAGjBI,GAAoB,EAAG,CAIzB,IAAMD,EACJC,IAAqBxlE,EAAM8iE,eAAe12F,OAAS,EAC/C,EACAo5F,EAAmB,EAGzBL,EADyBnlE,EAAM8iE,eAAeyC,GACX3B,iBACpC,CACF,CACF,MAECuB,EAAkB3B,EAAiB,iBAGjC2B,IACFj6F,EAAEmC,iBACF82F,EAASgB,IAgBTM,CAASv6F,IAKPw6F,EAAa,SAAUx6F,GAC3B,IAAM5C,EAAS+5F,GAAgBn3F,GAE3Bo4F,EAAmBh7F,IAAW,GAI9B85F,GAAextC,EAAO6vC,wBAAyBv5F,IAI/Ck3F,GAAextC,EAAOgwC,kBAAmB15F,KAI7CA,EAAEmC,iBACFnC,EAAEi+B,2BACH,EAMKw8D,EAAe,WACnB,GAAK3lE,EAAMqe,OAiCX,OA5BAsjD,GAAiBC,aAAaC,GAI9B7hE,EAAMijE,uBAAyBruC,EAAO+tC,kBAClC5xF,IAAM,WACJozF,EAAST,IACV,IACDS,EAAST,KAEbt5E,EAAImJ,iBAAiB,UAAWsxE,GAAc,GAC9Cz6E,EAAImJ,iBAAiB,YAAaixE,EAAkB,CAClDoB,SAAS,EACTvsB,SAAS,IAEXjvD,EAAImJ,iBAAiB,aAAcixE,EAAkB,CACnDoB,SAAS,EACTvsB,SAAS,IAEXjvD,EAAImJ,iBAAiB,QAASmyE,EAAY,CACxCE,SAAS,EACTvsB,SAAS,IAEXjvD,EAAImJ,iBAAiB,UAAWyxE,EAAU,CACxCY,SAAS,EACTvsB,SAAS,IAGJwoB,GAGHgE,EAAkB,WACtB,GAAK7lE,EAAMqe,OAUX,OANAj0B,EAAImY,oBAAoB,UAAWsiE,GAAc,GACjDz6E,EAAImY,oBAAoB,YAAaiiE,GAAkB,GACvDp6E,EAAImY,oBAAoB,aAAciiE,GAAkB,GACxDp6E,EAAImY,oBAAoB,QAASmjE,GAAY,GAC7Ct7E,EAAImY,oBAAoB,UAAWyiE,GAAU,GAEtCnD,CACR,EA2JD,OArJAA,EAAO,CACDxjD,aACF,OAAOre,EAAMqe,QAGXq9B,aACF,OAAO17C,EAAM07C,QAGfrG,SATK,SASIywB,GACP,GAAI9lE,EAAMqe,OACR,OAAO12C,KAGT,IAAMo+F,EAAa7C,EAAU4C,EAAiB,cACxCE,EAAiB9C,EAAU4C,EAAiB,kBAC5CG,EAAoB/C,EAAU4C,EAAiB,qBAEhDG,GACHpC,IAGF7jE,EAAMqe,QAAS,EACfre,EAAM07C,QAAS,EACf17C,EAAM+iE,4BAA8B34E,EAAIyN,cAEpCkuE,GACFA,IAGF,IAAMG,EAAmB,WACnBD,GACFpC,IAEF8B,IACIK,GACFA,KAIJ,OAAIC,GACFA,EAAkBjmE,EAAM4iE,WAAW96F,UAAU82B,KAC3CsnE,EACAA,GAEKv+F,OAGTu+F,IACOv+F,OAGT+8F,WApDK,SAoDMyB,GACT,IAAKnmE,EAAMqe,OACT,OAAO12C,KAGT,IAAMQ,EAAU,GAAH,CACXi+F,aAAcxxC,EAAOwxC,aACrBC,iBAAkBzxC,EAAOyxC,iBACzBC,oBAAqB1xC,EAAO0xC,qBACzBH,GAGLrxF,aAAakrB,EAAMijE,wBACnBjjE,EAAMijE,4BAAyBxoF,EAE/BorF,IACA7lE,EAAMqe,QAAS,EACfre,EAAM07C,QAAS,EAEfimB,GAAiBM,eAAeJ,GAEhC,IAAMuE,EAAelD,EAAU/6F,EAAS,gBAClCk+F,EAAmBnD,EAAU/6F,EAAS,oBACtCm+F,EAAsBpD,EAAU/6F,EAAS,uBACzCw8F,EAAczB,EAClB/6F,EACA,cACA,2BAGEi+F,GACFA,IAGF,IAAMG,EAAqB,WACzBx1F,IAAM,WACA4zF,GACFR,EAASG,EAAmBtkE,EAAM+iE,8BAEhCsD,GACFA,GAEH,KAGH,OAAI1B,GAAe2B,GACjBA,EACEhC,EAAmBtkE,EAAM+iE,8BACzBnkE,KAAK2nE,EAAoBA,GACpB5+F,OAGT4+F,IACO5+F,OAGTo6F,MAAQ,WACN,OAAI/hE,EAAM07C,SAAW17C,EAAMqe,SAI3Bre,EAAM07C,QAAS,EACfmqB,KAJSl+F,MASXu6F,QAAU,WACR,OAAKliE,EAAM07C,QAAW17C,EAAMqe,QAI5Bre,EAAM07C,QAAS,EACfmoB,IACA8B,IAEOh+F,MAPEA,MAUX6+F,wBAnIK,SAmImBC,GACtB,IAAMC,EAAkB,GAAG5+F,OAAO2+F,GAAmBh4F,OAAOJ,SAU5D,OARA2xB,EAAM4iE,WAAa8D,EAAgBn3F,KAAI,SAACrH,GAAD,MAClB,iBAAZA,EAAuBkiB,EAAI+uC,cAAcjxD,GAAWA,CADtB,IAInC83B,EAAMqe,QACRwlD,IAGKl8F,IACR,IAIE6+F,wBAAwB/2F,GAEtBoyF,CACR,EC7vBD,SAASU,KAAmG,2BAAhFthF,EAAI,yBAAJA,EAAI,gBAM9B,OALAA,EAAK,GAAK,GACRyhF,mBAAmB,GAChBzhF,EAAK,IAGH0lF,GAAAA,WAAiB,EAAG1lF,EAC7B,CClBA,IAAI2lF,IAAmB,EACvB,GAAsB,oBAAXl9F,OAAwB,CACjC,IAAIm9F,GAAqB,CACnBxtB,cACFutB,IAAmB,CAErB,GAEFl9F,OAAO6pB,iBAAiB,cAAe,KAAMszE,IAC7Cn9F,OAAO64B,oBAAoB,cAAe,KAAMskE,GAClD,CAEA,ICDIC,GDCAC,GAAgC,oBAAXr9F,QAA0BA,OAAO6/E,WAAa7/E,OAAO6/E,UAAUyd,WAAa,iBAAiB96F,KAAKxC,OAAO6/E,UAAUyd,WAA2C,aAA9Bt9F,OAAO6/E,UAAUyd,UAA2Bt9F,OAAO6/E,UAAU0d,eAAiB,GAGnOC,GAAQ,GACRC,IAAwB,EACxBC,IAAkB,EAClBC,QAA8B,EAC9BC,QAAuB,EACvBC,QAA2B,EAG3BC,GAAiB,SAAwBh4F,GAC3C,OAAO03F,GAAMj+C,MAAK,SAAUtpB,GAC1B,SAAIA,EAAKx3B,QAAQq/F,iBAAkB7nE,EAAKx3B,QAAQq/F,eAAeh4F,GAKjE,GACF,EAEInC,GAAiB,SAAwBo6F,GAC3C,IAAIv8F,EAAIu8F,GAAY/9F,OAAOkR,MAM3B,QAAI4sF,GAAet8F,EAAE5C,SAKjB4C,EAAEkiC,QAAQhhC,OAAS,IAEnBlB,EAAEmC,gBAAgBnC,EAAEmC,kBAEjB,EACT,EAuKWq6F,GAA0B,WAC/BX,KAEFG,GAAM5oF,SAAQ,SAAUqhB,GACtBA,EAAKgoE,cAAcC,aAAe,KAClCjoE,EAAKgoE,cAAcE,YAAc,IACnC,IAEIV,KACF5+F,SAASg6B,oBAAoB,YAAal1B,GAAgBu5F,GAAmB,CAAEvtB,SAAS,QAAU5+D,GAClG0sF,IAAwB,GAI1BC,IAAkB,GAGhBL,GA9GuB,WAC3B,QAA6BtsF,IAAzB6sF,GAAoC,CAEtC,IAAI9nF,GAAKtI,SAAS3O,SAASuC,KAAK4P,MAAMvQ,IAAK,IACvCoX,GAAKrK,SAAS3O,SAASuC,KAAK4P,MAAM/E,KAAM,IAG5CpN,SAASuC,KAAK4P,MAAMzQ,SAAWq9F,GAAqBr9F,SACpD1B,SAASuC,KAAK4P,MAAMvQ,IAAMm9F,GAAqBn9F,IAC/C5B,SAASuC,KAAK4P,MAAM/E,KAAO2xF,GAAqB3xF,KAGhDjM,OAAOi8C,SAASpkC,EAAG/B,GAEnB8nF,QAAuB7sF,CACzB,CACF,CA+FIqtF,SAlK+BrtF,IAA7B8sF,KACFh/F,SAASuC,KAAK4P,MAAMqtF,aAAeR,GAInCA,QAA2B9sF,QAGOA,IAAhC4sF,KACF9+F,SAASuC,KAAK4P,MAAMq9B,SAAWsvD,GAI/BA,QAA8B5sF,IA0JhCysF,GAAQ,EACV,EEtOqBc,GAAY,mGAUoC,OAVpC,0CAErBC,eAAS,IAGTC,sBAAgB,IAGhBC,cAAwB,EAAK,EAE7BC,cAAqD,KAAI,EAVpC,OAUoC,kBAoHlE,OApHkE,EAEnE97D,KAAA,SAAKyd,GAAqE,WACxE,OACE,WACGpiD,KAAK0qB,MAAM2N,MAAMqoE,UAAU94F,KAAI,SAACs0D,EAAOj1D,GACtC,IAAM62D,EAAW,MAAL5B,OAAK,EAALA,EAAOgoB,eAEnB,OACE,SACEp3E,IAAKovD,EAAMpvD,IACXgf,UAAU,qBACV,iBAAgBowC,EAAMpvD,IACtB,oBAAmB7F,EACnB67D,KAAK,SACL,aAAW,OACX/vD,MAAO,CAAE,iBAAkB9L,GAC3B,cAAa,EAAKyjB,MAAM2N,MAAM6jC,QAAUA,GAAS,UAE9C4B,GAAO,CACR,EAACA,EAAG,eACFhxD,IAAKovD,EAAMpvD,KACPovD,EAAMxxC,MAAK,CACfs+C,YAAa,EAAKA,YAAYt5B,KAAK,GACnC05B,YAAa,EAAKA,YAAY15B,KAAK,GACnCrX,MAAO,EAAK3N,MAAM2N,SAGpB,SAAKvrB,IAAKovD,EAAMpvD,IAAKgf,UAAU,iCAAiCw2B,QAAS,EAAKq+C,4BAA4BjxD,KAAK,MAIvH,IAEC1vC,KAAK0qB,MAAM2N,MAAMuoE,eAChB,SACE90E,UAAU,0BACV+0E,gBAAiB7gG,KAAK8gG,wBAAwBpxD,KAAK1vC,MACnD,iBAAgBA,KAAK0qB,MAAM2N,MAAMqoE,UAAUj8F,OAC3CsO,MAAO,CAAE,gBAAiB/S,KAAK0qB,MAAM2N,MAAMqoE,UAAUj8F,UAK/D,EAAC,EAED09C,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfpiD,KAAKygG,cAAgBzgG,KAAK+gG,eAAerxD,KAAK1vC,MAC9CY,SAASuC,KAAKyoB,iBAAiB,QAAS5rB,KAAKygG,cAC/C,EAAC,EAEDh+C,eAAA,SAAeL,GACb,YAAMK,eAAc,UAACL,GAErBpiD,KAAKygG,eAAiB7/F,SAASuC,KAAKy3B,oBAAoB,QAAS56B,KAAKygG,eACtEzgG,KAAKygG,cAAgB,IACvB,EAAC,EAEDj+C,SAAA,SAASJ,GAAyD,WAChE,YAAMI,SAAQ,UAACJ,GAEf/T,uBAAsB,WACpB,IAAI,MAImC,EAArC,IAAK,EAAK3jB,MAAM2N,MAAM2oE,cAKpB,OAJ8B,OAA9B,EAAApgG,SAASgR,eAAe,SAAxB,EAAgCgR,aAAa,cAAe,SAClC,MAA1B,EAAK09E,UAAWvD,YAAhB,EAAKuD,UAAWvD,kBAChBgD,KAK4B,OAA9B,EAAAn/F,SAASgR,eAAe,SAAxB,EAAgCgR,aAAa,cAAe,QAG5D,IAAMq+E,EAAY,EAAKv2E,MAAM2N,MAAM6jC,MAAOpvD,IAGtC,EAAKwzF,WAAa,EAAKC,mBAAqBU,IACpB,MAA1B,EAAKX,UAAWvD,YAAhB,EAAKuD,UAAWvD,aAEhBgD,MAIE,EAAKmB,qBAAuB,EAAKX,mBAAqBU,IACxD,EAAKX,UAAY1F,GAAgB,EAAKsG,oBAAoC,CAAEjE,mBAAmB,IACvE,MAAxB,EAAKqD,UAAW5yB,UAAhB,EAAK4yB,UAAW5yB,WFwDK,SAA2BsyB,EAAex/F,GAEvE,GAAKw/F,GAOL,IAAIT,GAAMj+C,MAAK,SAAUtpB,GACvB,OAAOA,EAAKgoE,gBAAkBA,CAChC,IAFA,CAMA,IAAIhoE,EAAO,CACTgoE,cAAeA,EACfx/F,QAASA,GAAW,CAAC,GAGvB++F,GAAQ,GAAGp/F,OAnMb,SAA4BohB,GAAO,GAAI7hB,MAAMU,QAAQmhB,GAAM,CAAE,IAAK,IAAIta,EAAI,EAAGkrD,EAAOzyD,MAAM6hB,EAAI9c,QAASwC,EAAIsa,EAAI9c,OAAQwC,IAAOkrD,EAAKlrD,GAAKsa,EAAIta,GAAM,OAAOkrD,CAAM,CAAS,OAAOzyD,MAAMigB,KAAK4B,EAAQ,CAmM9K4/E,CAAmB5B,IAAQ,CAACvnE,IAE1ConE,GAnGGr9F,OAAOssC,uBAAsB,WAElC,QAA6Bv7B,IAAzB6sF,GAAoC,CACtCA,GAAuB,CACrBr9F,SAAU1B,SAASuC,KAAK4P,MAAMzQ,SAC9BE,IAAK5B,SAASuC,KAAK4P,MAAMvQ,IACzBwL,KAAMpN,SAASuC,KAAK4P,MAAM/E,MAI5B,IAAIozF,EAAUr/F,OACVs/F,EAAUD,EAAQC,QAClBC,EAAUF,EAAQE,QAClB1e,EAAcwe,EAAQxe,YAE1BhiF,SAASuC,KAAK4P,MAAMzQ,SAAW,QAC/B1B,SAASuC,KAAK4P,MAAMvQ,KAAO6+F,EAC3BzgG,SAASuC,KAAK4P,MAAM/E,MAAQszF,EAE5Bx+F,YAAW,WACT,OAAOf,OAAOssC,uBAAsB,WAElC,IAAIkzD,EAAkB3e,EAAc7gF,OAAO6gF,YACvC2e,GAAmBF,GAAWze,IAEhChiF,SAASuC,KAAK4P,MAAMvQ,MAAQ6+F,EAAUE,GAE1C,GACF,GAAG,IACL,CACF,IArEsB,SAA2B/gG,GAEjD,QAAiCsS,IAA7B8sF,GAAwC,CAC1C,IAAI4B,IAAyBhhG,IAA2C,IAAhCA,EAAQihG,oBAC5CC,EAAe3/F,OAAO4/F,WAAa/gG,SAASwE,gBAAgBw8F,YAEhE,GAAIJ,GAAwBE,EAAe,EAAG,CAC5C,IAAIG,EAA2BtyF,SAASxN,OAAOymC,iBAAiB5nC,SAASuC,MAAM8lC,iBAAiB,iBAAkB,IAClH22D,GAA2Bh/F,SAASuC,KAAK4P,MAAMqtF,aAC/Cx/F,SAASuC,KAAK4P,MAAMqtF,aAAeyB,EAA2BH,EAAe,IAC/E,CACF,MAGoC5uF,IAAhC4sF,KACFA,GAA8B9+F,SAASuC,KAAK4P,MAAMq9B,SAClDxvC,SAASuC,KAAK4P,MAAMq9B,SAAW,SAEnC,CA2HI0xD,CAAkBthG,GAGhB4+F,KACFY,EAAcC,aAAe,SAAUhtF,GACF,IAA/BA,EAAMsyB,cAAc9gC,SAEtBg7F,GAAiBxsF,EAAMsyB,cAAc,GAAGP,QAE5C,EACAg7D,EAAcE,YAAc,SAAUjtF,GACD,IAA/BA,EAAMsyB,cAAc9gC,QAzDX,SAAsBwO,EAAO+sF,GAC9C,IAAIh7D,EAAU/xB,EAAMsyB,cAAc,GAAGP,QAAUy6D,IAE3CI,GAAe5sF,EAAMtS,UAIrBq/F,GAA6C,IAA5BA,EAAc39F,WAAmB2iC,EAAU,GAX7B,SAAwCg7D,GAC3E,QAAOA,GAAgBA,EAAc/9F,aAAe+9F,EAAc39F,WAAa29F,EAAc9gB,YAC/F,CAcM6iB,CAA+B/B,IAAkBh7D,EAAU,EAHtDt/B,GAAeuN,GAQxBA,EAAMtN,kBAER,CAwCQq8F,CAAa/uF,EAAO+sF,EAExB,EAEKR,KACH5+F,SAASgrB,iBAAiB,YAAalmB,GAAgBu5F,GAAmB,CAAEvtB,SAAS,QAAU5+D,GAC/F0sF,IAAwB,GA/B5B,OATEllE,QAAQjW,MAAM,iHA2ClB,CErGU49E,CAAkB,EAAKC,2BAA6B,CAAET,qBAAqB,KAI7E,EAAKlB,iBAAmBU,CAExB,CADA,SACA,CAEJ,GACF,EAEA,EAcAj4B,YAAA,SAAYm5B,GAA4C,gBAAnB,IAAzBA,IAAAA,EAA4B,WAAO,GACxCniG,KAAK0qB,MAAM2N,MAAM6jC,QAEtBl8D,KAAKkhG,oBAAoBt1E,iBACvB,iBACA,WACEu2E,GACF,GACA,CAAEtqE,MAAM,IAGVwW,uBAAsB,WACpB,EAAK6yD,oBAAoBljC,UAAUllD,IAAI,KACzC,IACF,EAAC,EAEDswD,YAAA,SAAYg5B,GAA6C,gBAAnB,IAA1BA,IAAAA,EAA6B,WAAO,GAC1CpiG,KAAKwgG,eACTxgG,KAAKwgG,cAAe,EAWpBxgG,KAAKkhG,oBAAoBt1E,iBAAiB,iBATT,WAC/B,EAAK40E,cAAe,EAGpB,EAAK91E,MAAM2N,MAAM8jC,QAEjBimC,GACF,GAEqF,CAAEvqE,MAAM,IAE7F73B,KAAKkhG,oBAAoBljC,UAAUn5D,OAAO,MAC1C7E,KAAKkhG,oBAAoBljC,UAAUllD,IAAI,OACzC,EAAC,EAESioF,eAAV,SAAyBx9F,GACvB,GAAKvD,KAAK0qB,MAAM2N,MAAM6jC,MAAtB,CAEA,IAAMmmC,EAAmBriG,KAAK0qB,MAAM2N,MAAM6jC,MAAMgoB,eAAehb,mBAIjD,WAAV3lE,EAAEuJ,KAAoBu1F,EAAiB74B,YACzCjmE,EAAEmC,iBAEF1F,KAAKopE,cAT4B,CAWrC,EAAC,EAESu3B,4BAAV,SAAsCp9F,GAC/BvD,KAAK0qB,MAAM2N,MAAM6jC,OAAUl8D,KAAK0qB,MAAM2N,MAAM6jC,MAAMgoB,eAAehb,mBAAmBQ,kBAEzF1pE,KAAKopE,aACP,EAAC,EAES03B,wBAAV,SAAkCv9F,GACT,YAAnBA,EAAE++F,cAG0C,OAF7B/+F,EAAE0J,cAEN0V,aAAa,kBAExB3iB,KAAK0qB,MAAM2N,MAAMuoE,eAAgB,EACjC5rF,EAAEwqC,SAGR,EAAC,oCA5ED,WAA+C,MAC7C,OAAO5+C,SAASuC,KAAKquD,cAAc,kCAAuD,OAAxD,EAAkCxxD,KAAK0qB,MAAM2N,MAAM6jC,YAAK,EAAtB,EAAwBpvD,KAAG,YACjG,GAEA,sCAGA,WAAsD,MACpD,OAAOlM,SAASuC,KAAKquD,cAAc,kCAAuD,OAAxD,EAAkCxxD,KAAK0qB,MAAM2N,MAAM6jC,YAAK,EAAtB,EAAwBpvD,KAAG,KACjG,KAAC,EA9H8B,CAASuuD,GCNrBknC,GAAY,uFA4B9B,OA5B8B,EAC/BhgD,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKq4B,MAAQr4B,KAAK0qB,MAAM2N,KAC1B,EAAC,EAEDsM,KAAA,WAAO,WACC69D,EAAexiG,KAAKq4B,MAAMoqE,kBAEhC,OACE,SAAK32E,UAAU,gBACZrK,OAAOvB,KAAKsiF,GACV56F,IAAI4U,QACJ5U,KAAI,SAACkF,GACJ,IAAMu7D,EAAQm6B,EAAa11F,GACrB41F,EAA8B,UAArBr6B,EAAM39C,MAAM1lB,KAE3B,OACE,SAAK8mB,UAAU,qBAAqBg3C,KAAK,QAAQ,YAAW4/B,EAAS,YAAc,UACjF,EAACr6B,EAAM6b,eAAc,iBAAK7b,EAAM39C,MAAK,CAAEg+C,UAAW,EAAKrwC,MAAMsqE,QAAQjzD,KAAK,EAAKrX,MAAOvrB,KACnFu7D,EAAM/yC,UAIf,IAGR,EAAC,EA5B8B,CAAsE+lC,GCJlFunC,GAAiB,uFAkCnC,OAlCmC,EACpC92E,UAAA,WACE,MAAO,gCACT,EAAC,EAED3iB,MAAA,WACE,QAASnJ,KAAK0qB,MAAMrG,MAAM42B,KAAUj7C,KAAK0qB,MAAMrG,MAAM42B,IAAIjC,OAAM,IAAIh5C,KAAK0qB,MAAMrG,MAAM42B,IAAI/B,UAC1F,EAAC,EAED9iB,QAAA,WACE,IAEI4lB,EAFJ,EAAkCh8C,KAAK0qB,MAA/BrG,EAAK,EAALA,MAAOw+E,EAAc,EAAdA,eAcf,OAPE7mD,EADE6mD,EAAep+F,OACFo+F,EAAezqF,KAAK,QAC1BiM,EAAMy1B,SACApd,KAAKwwB,UAAU7oC,EAAMy1B,SAAU,KAAM,GAErCz1B,EAAM23B,aAIrB,SAAKlwB,UAAU,cACb,aACG9rB,KAAK0qB,MAAMrG,MAAM7jB,QAAQs2B,OAAM,IAAG92B,KAAK0qB,MAAMrG,MAAM7jB,QAAQq2C,IAC5D,aACA,aACCmF,GAIT,EAAC,EAlCmC,CAAgF6sB,6JCkB/G,SAASquB,GAAQv1E,GAEvB,OAAOA,EAAM7hB,QAAO,SAACgjG,EAAa/7F,GACjC,OAAO+7F,EAAY3iG,OAAOT,MAAMU,QAAQ2G,GAASmwF,GAAQnwF,GAASA,EAClE,GAAE,GACH,CClBM,SAASg8F,GAAQ5qE,GACvB,IAAM/N,EAAQ,CAAC,EACf,OAAO,WAAkB,2BAAN9Q,EAAM,yBAANA,EAAM,gBACxB,IAAIxM,EAAMwM,EAAK7U,OAAS6U,EACtB1R,KAAI,SAAAsd,GAAG,OACC,OAARA,EAAe,YACPpS,IAARoS,EAAoB,YACL,mBAARA,EAAqBA,EAAI3J,WAChC2J,aAAejL,KAAOiL,EAAI9G,cAC1Bse,KAAKwwB,UAAUhoC,EALR,IAOP9M,KAAK,KACN,cACD,GAAIqJ,OAAO9hB,UAAU8M,eAAe1M,KAAKqqB,EAAOtd,GAC/C,OAAOsd,EAAMtd,GAEd,IAAI2hB,EAAS0J,EAAI,WAAJ,EAAQ7e,GAErB,OADA8Q,EAAMtd,GAAO2hB,EACNA,CACP,CACD,CCHM,SAASu0E,GAAWnnE,GAW1B,IAVA,IAAMonE,EAAe,SAAAv6E,GAAE,MAAI,KAAKnkB,KAAKmkB,EAAd,EAEjBpP,EAAO,GACP4pF,EAAQ,CAAC,EAEXC,EAAgB,EAChBC,EAAa,KACbC,GAAS,EAETp8F,EAAI,EACDA,EAAI40B,EAAOp3B,QAAQ,CAEzB,GAAI4+F,IAAWJ,EAAapnE,EAAO50B,KAAqB,MAAd40B,EAAO50B,IAChDo8F,GAAS,EACTD,EAAavnE,EAAOtmB,MAAM4tF,EAAel8F,GAGvB,MAAd40B,EAAO50B,IACVA,SAKG,IAAKo8F,IAAWJ,EAAapnE,EAAO50B,IAAK,CAC7C,IAAMq8F,EAAyB,MAAdznE,EAAO50B,GAIxB,GAAIm8F,GAAcE,EAAU,CAC3B,IAAMC,EAAiBC,GAAmB3nE,EAAQ50B,GAElD,IAAwB,IAApBs8F,EACH,MAAM,IAAI13F,MAAJ,8CAAiDgwB,EAAjD,MAGPqnE,EAAME,GAAcvnE,EAAOtmB,MAAMtO,EAAI,EAAGs8F,GAExCt8F,EAAIs8F,EACJH,EAAa,IACb,MAEIA,IACH9pF,EAAKpE,KAAKkuF,GACVA,EAAa,MAGdC,GAAS,EACTF,EAAgBl8F,CAEjB,CACDA,GACA,CAUD,OARIo8F,IACHD,EAAavnE,EAAOtmB,MAAM4tF,IAGvBC,GACH9pF,EAAKpE,KAAKkuF,GAGJ,CACN9pF,KAAAA,EACA4pF,MAAAA,EAED,CAWM,SAASM,GAAmB3nE,EAAQ4nE,GAE1C,IADA,IAAI5jG,EAAQ,EACHoH,EAAIw8F,EAAY,EAAGx8F,EAAI40B,EAAOp3B,OAAQwC,IAAK,CACnD,IAAIy8F,EAAO7nE,EAAOypB,OAAOr+C,GACzB,GAAa,MAATy8F,EAAc,CACjB,GAAc,IAAV7jG,EACH,OAAOoH,EAERpH,GACA,KACiB,MAAT6jG,GACR7jG,GAED,CACD,OAAQ,CACR,CAWM,SAAS8jG,GAAuBC,GACtC,OAAO73F,GAAM63F,EAAMruF,MAAM,GAAI,GAAI,IAAK,EACtC,CAaD,SAASxJ,GAAM8vB,EAAQgoE,EAAWziB,GAAyB,IAAlB0hB,EAAkB,uDAAJ,GACtD,IAAKjnE,EACJ,OAAOinE,EAER,GAAc,IAAV1hB,EAEH,OADA0hB,EAAY5tF,KAAK2mB,GACVinE,EAER,IAAIgB,EAAmBjoE,EAAO3a,QAAQ2iF,GACtC,IAA0B,IAAtBC,EAEH,OADAhB,EAAY5tF,KAAK2mB,GACVinE,EAER,IAAIjgF,EAAOgZ,EAAO1hB,UAAU,EAAG2pF,GAAkBhlD,OAC7CilD,EAAOloE,EAAO1hB,UAAU2pF,EAAmBD,EAAUp/F,OAAS,GAAGq6C,OAErE,OADAgkD,EAAY5tF,KAAK2N,GACV9W,GAAMg4F,EAAMF,EAAWziB,EAAQ,EAAG0hB,EACzC,ukBNjJD,IAAIkB,GAAa,EAIXC,GAAQ,QAQd,SAASC,GAAkBZ,EAAUv8F,GAMpC,IALA,IAAIE,EAAI,EACJwoD,EAAS,GACT00C,EAAY,EACVC,EAAe,CAAC,EAEfn9F,EAAIq8F,EAAS7+F,QAAQ,CAC3B,GAAoB,MAAhB6+F,EAASr8F,IAAek9F,EAM3B10C,GAAU6zC,EAASr8F,OANmB,CACtC,IAAIo9F,EAAW,cAAH,OAAiBL,MAC7Bv0C,GAAU,IAAJ,OAAQ40C,EAAR,aACND,EAAaC,GAAYt9F,CACzB,CAKmB,MAAhBu8F,EAASr8F,GACZk9F,IAEwB,MAAhBb,EAASr8F,IACjBk9F,IAGDl9F,GACA,CAED,MAAO,CACNq8F,SAAU7zC,EACV20C,aAAAA,EAED,CAgBc,SAASE,GAAkBv9F,GAA6C,IAAtCie,EAAsC,uDAA5B,GAAIxL,EAAwB,uCAAhBolB,EAAgB,uCAARliB,EAAQ,uCACtF,EAAwBsmF,GAAWh+E,GAA3B1L,EAAR,EAAQA,KAAM4pF,EAAd,EAAcA,MAEVqB,EAAWh1F,SAASxI,GAExBuS,EAAK3C,SAAQ,SAACuO,GACTA,EAAIs/E,WAAW,aAClBD,GAAYh1F,SAAS2V,EAAI3P,MAAM,UAAU9Q,SAE1C,IAED,IAAMggG,EAAuB,GAE7B,GAAI,gBAAiB7uB,KAAM,MAEF9iE,IAApBqsF,IAAiCA,GAAgBuF,kBAAkBlrF,SAAWA,IACjF2lF,GAAkB,IAAIvpB,KAAK+uB,YAAYnrF,IAGxC,IAAMorF,EAAgBzF,GAAgBt5E,OAAO0+E,GAGzCK,IAAkBX,IACrBQ,EAAqBvvF,KAAK0vF,EAE3B,CACgB,IAAbL,GACHE,EAAqBvvF,KAlFT,OAoFbuvF,EAAqBvvF,KAArB,WAA8BqvF,GAAYN,IAE1C,IAAK,IAAIh9F,EAAI,EAAGA,EAAIw9F,EAAqBhgG,OAAQwC,IAAK,CACrD,IAAM49F,EAAUJ,EAAqBx9F,GACrC,GAAI49F,KAAW3B,EAAO,CACrB,MAAmCgB,GAAkBhB,EAAM2B,GAAUN,GAA7DjB,EAAR,EAAQA,SAAUc,EAAlB,EAAkBA,aAClB,OAAO1nF,EAAO4mF,EAAD,SACT1kE,GACAwlE,GAEJ,CACD,CAED,OAAOr9F,CACP,COvGD,IAAMk9F,GAAQ,QAgBC,SAASa,GAAkB/9F,GAA6C,IAAtCie,EAAsC,uDAA5B,GAAY4Z,EAAgB,uCAARliB,EAAQ,uCACtF,EAAkBsmF,GAAWh+E,GAArBk+E,EAAR,EAAQA,MAER,OAAIn8F,KAASm8F,EACLxmF,EAAOwmF,EAAMn8F,GAAQ63B,GAEpBqlE,MAASf,EACVxmF,EAAOwmF,EAAK,MAAStkE,GAGtB73B,CACP,CDjCM,SAASg+F,GAAgBvqE,EAASoE,EAAQprB,GAAmC,IAA1BwxF,EAA0B,uDAAJ,GACzEv2E,EAAS,GAETw2E,EAAa,SAClBC,EACAC,EACAC,EACAn+F,EACAmB,EACAi9F,GAEA,GAAIF,EACH,MAAO,CACNG,OAAO,GAIT,IAAMC,EAAiBC,GAAehrE,EAAS4qE,EAASn+F,EAAGmB,GAE3D,IAAKm9F,EACH,OAAO92E,EAGT,IAAMg3E,EAAqBF,EAAeG,eAAiBz+F,EACrD0+F,EAA8BnrE,EAAQ+qE,EAAeG,cAErDE,EAAc,GAEpB,GAAIH,EACHG,EAAY1wF,KAAKgwF,EAAQ3vF,MAAMnN,EAAI,EAAGm9F,EAAeM,mBAEjD,CACJD,EAAY1wF,KAAKgwF,EAAQ3vF,MAAMnN,EAAI,IAEnC,IAAK,IAAI2M,EAAI9N,EAAI,EAAG8N,EAAIwwF,EAAeG,aAAc3wF,IACpD6wF,EAAY1wF,KAAKslB,EAAQzlB,IAE1B6wF,EAAY1wF,KACXywF,EAA4BpwF,MAAM,EAAGgwF,EAAeM,cAErD,CAsBD,OApBAp3E,EAAOvZ,KAAKgwF,EAAQ3vF,MAAM,EAAG8vF,IAE7B52E,EAAOvZ,KACN1B,EACC4xF,EACAxmE,EACAmmE,GACCa,EAAY9+F,QAAO,SAACgE,GAAD,MAAa,KAANA,CAAP,IACnB8zB,EACAprB,KAKHgnB,EAAQzW,OACPwhF,EAAeG,aAAe,EAC9B,EACAC,EAA4BpwF,MAAMgwF,EAAeO,WAAa,IAGxD,CACNC,kBAAkB,EAClBC,gBAAiBT,EAAeG,aAChCJ,OAAO,EAER,EAID,OAFAW,GAAoBzrE,EAAS,EAAG,EAAG/L,EAAQw2E,GAEpCx2E,EAAO3nB,QAAO,SAACgE,GAAD,MAAa,KAANA,CAAP,IAAiBlD,KAAI,SAACkD,EAAG7D,GAAJ,OAAU+9F,EAAoB9qC,SAASjzD,GAAK6D,EAAIo7F,GAAap7F,EAA7D,GAC1C,CAYD,SAAS06F,GAAehrE,EAASpO,EAAK+5E,EAAYC,GACjD,IAAI9jG,EACAzC,EAAQ,EAkCZ,OAFAomG,GAAoBzrE,EAAS2rE,EAAYC,EAAmB,IA9BzC,SAClBlB,EACAC,EACAC,EACAn+F,EACAmB,EACAi9F,GAEA,OAAID,IAAYh5E,IACX+4E,EACHtlG,IAGAA,IAGa,IAAVA,IACHyC,EAAW,CACVojG,aAAcz+F,EACd4+F,aAAcR,EACdS,WAAY19F,GAGN,CAAEi+F,MAAM,IAIV,CAAEA,MAAM,EACf,IAIM/jG,CACP,CAED,SAAS2jG,GAAoBzrE,EAAS8rE,EAAQC,EAAQ93E,EAAQw2E,GAE7D,IADA,IAAuBv8E,EACdzhB,EAAIq/F,EAAQr/F,EAAIuzB,EAAQ/1B,OAAQwC,IAAK,CAC7C,IAAMi+F,EAAU1qE,EAAQvzB,GAExB,GAAuB,iBAAZi+F,EAAX,CAUA,IALA,IAAIC,GAAmB,EACnBE,EAAe,KACfmB,GAAQ,EAERT,GAAmB,EACd39F,EAAInB,IAAMq/F,EAASC,EAAS,EAAGn+F,EAAI88F,EAAQzgG,OAAQ2D,IAE3D,GAAKo+F,GAAwB,MAAftB,EAAQ98F,GAWjB,GAAIo+F,GAAwB,MAAftB,EAAQ98F,GAAY,CACrC,IAAMg9F,EAAUF,EAAQ3vF,MAAM8vF,EAAe,EAAIF,EAAkB/8F,GAE7Dq+F,EAAexB,EACpBC,EACAC,EACAC,EACAn+F,EACAmB,EACAi9F,GAGD,GAAIoB,EAAaJ,KAChB,OAQD,GANII,EAAaT,kBAChB/+F,EAAIw/F,EAAaT,iBAEdS,EAAaV,mBAChBA,GAAmB,GAEhBU,EAAY,MACf,MAGDtB,GAAmB,EACnBE,EAAe,KACfmB,GAAQ,CACR,MAGQA,IA1DY99E,EA0DYw8E,EAAQ98F,IA1Db,aAAa7D,KAAKmkB,MA2D7Cy8E,GAAmB,EACnBE,EAAe,KACfmB,GAAQ,QA5CRnB,EAAej9F,EACfo+F,GAAQ,EAEe,MAAnBtB,EAAQ98F,EAAI,KACf+8F,GAAmB,EACnB/8F,KA2CE29F,GACJt3E,EAAOvZ,KAAKgwF,EA3DZ,MAFAz2E,EAAOvZ,KAAKgwF,EA+Db,CACD,CAQM,SAASwB,GAAe9nE,GAC9B,OAAOnd,OAAOvB,KAAK0e,GAAQ9+B,QAAO,SAACG,EAAK6M,GAGvC,OAFA7M,EAAI6M,GAAO65F,GAAe/nE,EAAO9xB,IAE1B7M,CACP,GAAE,GACH,CAQM,SAASimG,GAAa1mC,GAC5B,MAAmB,iBAARA,EACHA,EAGDA,EACL77D,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,UAAW,KACnBA,QAAQ,UAAW,KACnBA,QAAQ,SAAU,IACpB,CAQM,SAASgjG,GAAer6E,GAC9B,MAAqB,iBAAVA,GAAsBA,aAAiBnU,OAC1CmU,EACL3oB,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,UAERjE,MAAMU,QAAQksB,GACfA,EAAM1kB,IAAI++F,IAGXr6E,CACP,CElQc,SAASs6E,GAAmBx6E,EAAKwS,EAAQrJ,GACvD,MAAO,IAAP,OAAWnJ,EAAX,YAAkB85E,GAAa3wE,GAA/B,aAA6CnJ,EAA7C,IACA,KCEoBy6E,GAAAA,SAAAA,obACpB,WAAYrtF,GAA+C,MAAvCstF,EAAuC,uDAAxB,CAAC,EAAGC,EAAoB,uDAAN,KAAM,OAAAC,KAAAA,KAAAA,IAC1DC,EAAAA,EAAAA,KAAAA,KAAMztF,EAAQstF,IACTC,YAAcA,GAA4BH,GAFW,CAG1D,kCAED,SAAKpsE,GAAsB,IAAboE,EAAa,uDAAJ,CAAC,EACjBsoE,EAAgBR,GAAe9nE,GAE/BuoE,EAAYjQ,GAAQl3F,KAAKu5B,QAAQiB,EAAS0sE,IAK5CE,EAAMnkG,KAAK0O,SAAS4J,SAAS,IAAMtY,KAAK0O,SAAS4J,SAAS,IAAMtY,KAAK0O,SAAS4J,SAAS,IACrF8rF,EAAa5lF,OAAO6lF,YAAY7lF,OAAO8jC,QAAQ3mB,GAAQh3B,KAAI,4BAAEkF,EAAF,YAAAy6F,EAAAA,GAAmB,CAACz6F,EAAKs6F,EAAzB,KAC3DI,EAAgBtQ,GAAQl3F,KAAKu5B,QAAQiB,EAAS6sE,IAC9CI,EAAc1C,GAAgByC,EAAeH,GAAY,kBAAMD,CAAN,IACzDM,EAAiCD,EAAY7/F,KAAI,SAACyQ,EAAGpR,GAAJ,OAAUoR,IAAM+uF,EAAM,KAAMngG,CAA5B,IAA+BH,QAAO,SAAAG,GAAC,OAAU,OAANA,CAAJ,IAE9F,OAAO89F,GAAgBoC,EAAWD,EAAelnG,KAAK+mG,YAAaW,EACnE,OArBmBb,CCoBAc,WAYpB,WAAYnuF,GAA2B,WAAnBstF,EAAmB,uDAAJ,CAAC,EAAGE,KAAAA,KAAAA,GAAAY,KAAAA,KAAAA,SAc9B7E,IAAQ,SAACvoE,GAAyB,IAAhBoE,EAAgB,uDAAP,CAAC,EAEpC,OAAOs4D,GAAQ+P,EAAK1tE,QAAQiB,EAASoE,IAASxmB,KAAK,GACnD,KAfApY,KAAKwZ,OAASA,EACdxZ,KAAK8mG,aAAeA,CACpB,qCA8BD,SAAQtsE,GAAsB,IAAboE,EAAa,uDAAJ,CAAC,EAE1B,IAAKpE,EACJ,MAAO,GAGR,IAAIqtE,EAAkBrtE,EAAQtZ,QAAQ,KACtC,IAAyB,IAArB2mF,EAAwB,CAC3B,IAAIC,EAAgBtE,GAAmBhpE,EAASqtE,GAChD,IAAuB,IAAnBC,EAyBH,MAAM,IAAIj8F,MAAJ,8CAAiD2uB,EAAjD,MAxBN,IAAIopE,EAAQppE,EAAQrgB,UAAU0tF,EAAiBC,EAAgB,GAC/D,GAAIlE,EAAO,CACV,IAAIn1E,EAAS,GACT5L,EAAO2X,EAAQrgB,UAAU,EAAG0tF,GAC5BhlF,GACH4L,EAAOvZ,KAAK2N,GAEb,MAA0B8gF,GAAuBC,GAAjDmE,EAAAA,KAAAA,EAAAA,GAAKj7F,EAAL,KAAU9H,EAAV,KAAgB0X,EAAhB,KACIvZ,EAAOy7B,EAAO9xB,GACd3J,UACHA,EAAO,IAER,IAAI6kG,EAAchjG,GAAQhF,KAAK8mG,aAAa9hG,GAC5CypB,EAAOvZ,KAAK8yF,EACXA,EAAY7kG,EAAMuZ,EAAQ1c,KAAKwZ,OAAQolB,EAAQ5+B,KAAKu5B,QAAQmW,KAAK1vC,OACjEmD,GACD,IAAI4gG,EAAOvpE,EAAQrgB,UAAU2tF,EAAgB,GAI7C,OAHI/D,GACHt1E,EAAOvZ,KAAKlV,KAAKu5B,QAAQwqE,EAAMnlE,IAEzBnQ,CACP,CAKF,CACD,MAAO,CAAC+L,EACR,OApFmBmtE,0kBCxBN,SAASM,GAAmB77E,EAAKwS,EAAQrJ,GACvD,IAAM6sB,EAAQxjB,EAAOxS,IAAQpX,EAAEoX,GAC3BkJ,EAAW4wE,GAAalxF,EAAEwrB,SAASjL,GAAUD,UACjD,OAAO,SAAK8sB,GAAZ,IAAmB9sB,SAAAA,GACnB,CCFqC,IAKjB4yE,GAAU,6BAI7BC,aAA6B,CAAC,EAAC,KAKrBC,UAAY,IAAIvB,GAAqB,KAAM7mG,KAAKqoG,wBAAyBJ,GAAmB,mBA8DrG,OA5DD,EAGAK,UAAA,SAAU9uF,GACRxZ,KAAKooG,UAAU5uF,OAASA,CAC1B,EAEA,EAGA+uF,UAAA,WACE,OAAOvoG,KAAKooG,UAAU5uF,MACxB,EAAC,EAEDgvF,gBAAA,SAAgBL,GACd1mF,OAAOs+B,OAAO//C,KAAKmoG,aAAcA,EACnC,EAEA,EAGUE,sBAAV,WACE,MAAO,CACLI,OAAQnE,GACRz+E,OAAQi/E,GAEZ,EAEA,EAOU4D,qBAAV,SAA+BC,GAO7B,GAAI,SAAUA,EAAY,CACxB,IAAM77C,EAAOF,EAAQ+7C,EAAY,QAE5BA,EAAWntD,WAAUmtD,EAAWntD,SAAWA,GAASsR,GAC3D,CAEA,OAAO67C,CACT,EAAC,EAEDjoC,MAAA,SAAM/2C,EAAYg/E,QAAgC,IAAhCA,IAAAA,EAAmC,CAAC,GACpD,IAAMC,EAAc5oG,KAAKmoG,aAAax+E,GAEtC,OAAIi/E,GACFD,EAAa3oG,KAAK0oG,qBAAqBC,GAChC3oG,KAAKooG,UAAUS,KAAKD,EAAaD,IAGnCh/E,CACT,EAAC,EAvE4B,GCyDxB,SAASm/E,GAAgBjnD,GAC9B,OAAOniD,MAAMU,QAASyhD,EAA6BlgD,KACrD,CAEA,IAIqBonG,GAAK,WAaxB,WAAYC,GAA2C,KAR7CrnG,KAAkB,CAAC,EAAC,KAM9BqnG,YAAM,EAGJhpG,KAAKgpG,OAASA,CAChB,CAEA,kBAyJC,OAzJD,EAQA3sB,YAAA,SAAuCx6B,GAAmD,WACpFA,EAAQm5B,UAAUn5B,EAAQm5B,SAASpzE,IAAI5H,KAAKipG,WAAWv5D,KAAK1vC,OAEhE,IACMyuB,EADSozB,EAAQlgD,gBAAgBjC,MAAQmiD,EAAQlgD,KAAKiG,KAAI,SAAC6J,GAAC,OAAK,EAAKw3F,WAAWx3F,GAAG,EAAM,IAAIzR,KAAKipG,WAAWpnD,EAAQlgD,MAAM,GAQlI,OAFA8sB,EAAOozB,QAAUA,EAEVpzB,CACT,EAEA,EAUAw6E,WAAA,SAA4BtnG,EAAsBunG,GAChD,QADiE,IAAjBA,IAAAA,GAAoB,IAC/DlpG,KAAKgpG,OAAOrnG,EAAKqD,MAOpB,OANKkkG,GACHpmG,YAAW,kBACTugE,GAAuB,2BAA4B1hE,EAAKqD,KAAI,0DAA4D,OAAO,IAI5H,KAGT,IAAMA,EAAQhF,KAAK2B,KAAKA,EAAKqD,MAAQhF,KAAK2B,KAAKA,EAAKqD,OAAS,CAAC,EAGxDmkG,EAAOnkG,EAAKrD,EAAKgoB,IACjB26B,EAAW6kD,EAAOA,EAAK18B,SAAS9qE,GAAQ3B,KAAKopG,aAAgBznG,EAAKqD,KAAMrD,GAK9E,OAHAqD,EAAKrD,EAAKgoB,IAAM26B,EAChBA,EAASs3B,QAAS,EAEXt3B,CACT,EAEA,EAiBMzjD,KAAI,+BAAV,WACEmE,EACAqkG,EACA/lD,EACA9iD,GAAgG,iFAW/F,YAZoB,IAArB8iD,IAAAA,EAAwB,CAAC,QACuE,IAAhG9iD,IAAAA,EAAmG,CAAC,GAEhGy8C,EAASqG,EACTzM,EAAM2iB,EAAI2J,MAAMC,UAAU,UAAY,IAAMp+D,EAE5CqkG,aAAsB3pG,MACxBm3C,GAAO,eAAiBwyD,EAAWjxF,KAAK,KACT,iBAAfixF,EAChBpsD,EAASosD,EACAA,IACTxyD,GAAO,IAAMwyD,GACd,kBAEM7vC,EAAAA,QACG,GACN1iC,OAAQ,MACR+f,IAAAA,EACAoG,OAAAA,GACGz8C,IAEJy2B,MAAK,SAAC4qB,GACL,OAAIinD,GAAgBjnD,GACX,EAAKw6B,YAA+Bx6B,EAI/C,KAAE,2CACL,yDA/BS,GAiCV,EAGA71B,QAAA,SAAyBhnB,EAAc2kB,GAA2B,QAChE,OAAgB,OAAhB,EAAO3pB,KAAK2B,OAAY,OAAR,EAAT,EAAYqD,SAAH,EAAT,EAAoB2kB,EAC7B,EAEA,EAOA2/E,MAAA,SAAoCtkG,EAAc8H,EAAc/F,GAE9D,OAAO/G,KAAKilD,IAAIjgD,GAAM8B,QAAO,SAACk1E,GAAK,OAAKA,EAAMlvE,OAAW/F,CAAK,IAAE,EAClE,EAEA,EAGAk+C,IAAA,SAAqBjgD,GACnB,IAAMukG,EAAUvpG,KAAK2B,KAAKqD,GAE1B,OAAOukG,EAAW9nF,OAAOmd,OAAO2qE,GAAmB,EACrD,EAEA,EAGA1kG,OAAA,SAAOm3E,UACEh8E,KAAK2B,KAAKq6E,EAAMr6E,KAAKqD,MAAgBg3E,EAAMryD,KACpD,EAEA,EAMAy/E,aAAA,SAA8BpkG,EAAcrD,GAM1C,YANyD,IAAfA,IAAAA,EAAkB,CAAC,GAC7DA,EAAKqD,KAAOrD,EAAKqD,MAAQA,EAKlB,IAAIhF,KAAKgpG,OAAOhkG,GAAMrD,EAAM3B,KACrC,EAAC,EA1KuB,GCzDLwpG,GAAO,WAW1B,WAAY18C,EAAmB28C,GAAmB,KAPlD38C,UAAI,OAKJ28C,eAAS,EAGPzpG,KAAK8sD,KAAOA,EACZ9sD,KAAKypG,UAAYA,CACnB,CAEA,kBAiBC,OAjBD,EAGAC,MAAA,SAAMvmG,EAAmB3C,GACvB,YAD0F,IAAnEA,IAAAA,EAAsE,CAAC,GACvFg5D,EAAI1W,QAAQ,GACjBhsB,OAAQ,OACR+f,IAAQ2iB,EAAI2J,MAAMC,UAAU,WAAU,SACtCjgE,KAAAA,GACG3C,GAEP,EAEA,EAGAmpG,OAAA,WACE5nG,OAAOkuB,SAASG,KAAUopC,EAAI2J,MAAMC,UAAU,WAAU,iBAAiBpjE,KAAKypG,SAChF,EAAC,EAjCyB,GCVPG,GAAM,WAWzB,aAAc,gBAPdtJ,eAAS,OAKTuJ,gBAAU,OAkCVC,cAAiB,SAACvmG,IACXA,EAAEyhB,SAAW,EAAK+kF,UAErB,EAAKp9F,MAET,EAAG+iC,KAAK1vC,MAAK,KAMbgqG,+BAAyB,EAxCvBppG,SAASgR,eAAe,WAAWga,iBAAiB,SAAS,SAACroB,GACxD,EAAKwmG,WACPxmG,EAAEmC,iBACF,EAAKiH,OAET,IAEA3M,KAAK6pG,WAAajpG,SAASgR,eAAe,OAI1C5R,KAAKsgG,UAAY1F,GAAgB,UAAW,CAAEqC,mBAAmB,EAAMH,yBAAyB,IAChG98F,KAAKgqG,0BAA4BjoG,OAAOkoG,WAAW,eAClCzhE,iBAAiB5nC,SAASwE,iBAAiB6jC,iBAAiB,sBAAqB,IAEpG,CAEA,kBA4EC,OAnDD,EAKA8gE,OAAA,WACE,OAAO/pG,KAAK6pG,WAAW7rC,UAAU94D,SAAS,aAC5C,EAEA,EAGAyH,KAAA,WAAO,MAYL,GAHA3M,KAAKsgG,UAAUvD,aACf/8F,KAAKgqG,0BAA0BE,eAAelqG,KAAK8pG,eAE9C9pG,KAAK+pG,SAAV,CAEA,IAAMI,EAAU9pG,EAAE,WAGlB8pG,EAAQ9mG,IAAI,aAAc,WAAW+L,IAAI,iBAAiB,kBAAM+6F,EAAQ9mG,IAAI,aAAc,GAAG,IAE7FrD,KAAK6pG,WAAW7rC,UAAUn5D,OAAO,cAEnB,OAAd,EAAA7E,KAAKwmF,YAAiB,MAAtB,EAAgB3hF,QAAhB,EAAgBA,QATU,CAU5B,EAEA,EAGA6H,KAAA,WAAO,WACL1M,KAAK6pG,WAAW7rC,UAAUllD,IAAI,cAE9B9Y,KAAKgqG,0BAA0BI,YAAYpqG,KAAK8pG,eAEhD9pG,KAAKwmF,UAAYnmF,EAAE,UAAUwC,SAAS,wBAAwBqL,SAAS,QAAQnN,GAAG,QAASf,KAAK2M,KAAK+iC,KAAK1vC,OAE1GquC,uBAAsB,WACpB,EAAKm4C,UAAU3jF,SAAS,MAExB,EAAKy9F,UAAU5yB,UACjB,GACF,EAAC,EA3GwB,GCIZ,SAAS28B,GAAUtpD,EAA4CupD,QAAgB,IAAhBA,IAAAA,EAAmB,IAC/F,IAAM1iG,EAGF,CAAC,EAEL,IAAK,IAAMo0D,KAAajb,EAAQ,CAC9B,IAAMP,EAAQO,EAAOib,GAErB,GAAI,aAAcxb,EAChB54C,EAAI0iG,EAAW9pD,EAAMH,MAAQG,EAAM+pD,aAC9B,MAAI,cAAe/pD,GAIxB,MAAM,IAAI30C,MAAM,oEAAoEmwD,EAAS,KAH7F,IAAMk6B,EAAgB,kBAAmB11C,EAAQA,EAAM01C,cAAiBvD,GACxE/qF,EAAI0iG,EAAW9pD,EAAMH,MAAQ,IAAI61C,EAAc11C,EAAMd,UAAWsc,EAGlE,CACF,CAEA,OAAOp0D,CACT,KCxBqB4iG,GAiBnB,SAAYxxD,EAAgBgD,EAA6Bx7C,EAAqDy6C,GAAqB,KAhBnIjC,YAAM,OACNx4C,aAAO,OACPy6C,SAAG,OAEHe,kBAAY,OACZlC,cAAQ,OASRuuB,WAAK,EAGHroE,KAAKg5C,OAASA,EACdh5C,KAAKg8C,aAAeA,EACpBh8C,KAAKQ,QAAUA,EACfR,KAAKi7C,IAAMA,EAEX,IACEj7C,KAAK85C,SAAWpd,KAAK3iB,MAAkB,MAAZiiC,EAAAA,EAAgB,OAG7C,CAFE,MAAOz4C,GACPvD,KAAK85C,SAAW,IAClB,CAEA95C,KAAKqoE,MAAQ,IACf,ECnCF,SAASoiC,KACPpqG,EAAE,oBAAoBoB,MAAK,WACzB,IAAMC,EAAQrB,EAAEL,MACVgiE,EAAM5B,GAAU1+D,EAAM4C,KAAK,aAEjC5C,EAAM2H,KAAK24D,EACb,GACF,CAMe,SAAS0oC,KACtBv4B,YAAYs4B,GAAkB,IAChC,CCQO,SAAShqG,GACd02B,EACAm6D,EACA9gF,IAEmB9Q,MAAMU,QAAQkxF,GAAWA,EAAU,CAACA,IAE5C36E,SAAQ,SAACmgB,GAClB,IAAMoR,EAAiC/Q,EAAOL,GAE9CK,EAAOL,GAAU,WAA8C,2BAAxBxd,EAAI,yBAAJA,EAAI,gBACzC,IAAMvS,EAAQmhC,EAAWA,EAASz0B,MAAMzT,KAAMsZ,QAAQxG,EAItD,OAFAtC,EAASiD,MAAMzT,KAAM,CAAC+G,GAAK,OAAKuS,IAEzBvS,CACT,EAEA0a,OAAOs+B,OAAO5oB,EAAOL,GAASoR,EAChC,GACF,CA6BO,SAASyiE,GACdxzE,EACAm6D,EACAsZ,IAEmBlrG,MAAMU,QAAQkxF,GAAWA,EAAU,CAACA,IAE5C36E,SAAQ,SAACmgB,GAClB,IAAMoR,EAAqB/Q,EAAOL,GAElCK,EAAOL,GAAU,WAA8C,2BAAxBxd,EAAI,yBAAJA,EAAI,gBACzC,OAAOsxF,EAAUn3F,MAAMzT,KAAM,CAACkoC,EAASwH,KAAK1vC,OAAK,OAAKsZ,GACxD,EAEAmI,OAAOs+B,OAAO5oB,EAAOL,GAASoR,EAChC,GACF,CC1F6B,IAER2iE,GAAK,8DAGvB,OAHuB,mBACxBzuB,YAAA,WACE,MAAO,GACT,EAAC,EAHuB,CAASV,0BCsDpB,SAASovB,GAAcjvE,GAKpC,IAJA,IAAI3Y,EAAM,EAIDjc,EAAI,EAAGA,EAAI40B,EAAOp3B,OAAQwC,IACjCic,GAAO2Y,EAAOjT,WAAW3hB,GAK3B,IACM8jG,EAlER,SAAkBh1F,EAAWjL,EAAWuN,GACtC,IAAIT,EACA9C,EACAlL,EAEE3C,EAAIhE,KAAKwV,MAAU,EAAJ1C,GACflB,EAAQ,EAAJkB,EAAQ9O,EACZ2D,EAAIyN,IACJ24C,EAAI34C,GAAK,EA0DiB,GA1DbxD,GACbqD,EAAIG,GAAK,EAyDiB,IAzDZ,EAAIxD,IAExB,OAAQ5N,EAAI,GACV,KAAK,EACH2Q,EAAIS,EACJvD,EAAIoD,EACJtO,EAAIgB,EACJ,MACF,KAAK,EACHgN,EAAIo5C,EACJl8C,EAAIuD,EACJzO,EAAIgB,EACJ,MACF,KAAK,EACHgN,EAAIhN,EACJkK,EAAIuD,EACJzO,EAAIsO,EACJ,MACF,KAAK,EACHN,EAAIhN,EACJkK,EAAIk8C,EACJpnD,EAAIyO,EACJ,MACF,KAAK,EACHT,EAAIM,EACJpD,EAAIlK,EACJhB,EAAIyO,EACJ,MACF,KAAK,EACHT,EAAIS,EACJvD,EAAIlK,EACJhB,EAAIonD,EAIR,MAAO,CACLp5C,EAAG3U,KAAKwV,MAAU,IAAJb,GACd9C,EAAG7R,KAAKwV,MAAU,IAAJ3D,GACdlL,EAAG3G,KAAKwV,MAAU,IAAJ7O,GAElB,CAiBcohG,CADA9nF,EAAM,IACS,IAAK,EAAK,IAErC,MAAO,GAAK6nF,EAAInzF,EAAE2D,SAAS,IAAMwvF,EAAIj2F,EAAEyG,SAAS,IAAMwvF,EAAInhG,EAAE2R,SAAS,GACvE,CCjEkD,IAI7B0vF,GAAI,mGA8FmB,OA9FnB,0CA8FbrgB,YAA4B,KAAI,EA9FnB,OA8FmB,kBA8DzC,OA9DyC,EA7F1CpvC,SAAA,WACE,OAAOkgC,GAAAA,UAAwB,YAAY37E,KAAKC,KAClD,EAAC,EACD8+D,KAAA,WACE,OAAO4c,GAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAAC,EACD22D,YAAA,WACE,OAAO+kB,GAAAA,UAAwB,eAAe37E,KAAKC,KACrD,EAAC,EAED6pE,MAAA,WACE,OAAO6R,GAAAA,UAAoC,SAAS37E,KAAKC,KAC3D,EAAC,EACDooF,iBAAA,WACE,OAAO1M,GAAAA,UAAqC,oBAAoB37E,KAAKC,KACvE,EAAC,EAED6wB,SAAA,WACE,OAAO6qD,GAAAA,UAAoC,YAAY37E,KAAKC,KAC9D,EAAC,EAED4+D,UAAA,WACE,OAAO8c,GAAAA,UAA+B,aAAa37E,KAAKC,KAC1D,EAAC,EAEDyxF,YAAA,WACE,OAAO/V,GAAAA,UAAwD,eAAe37E,KAAKC,KACrF,EAAC,EAEDupB,OAAA,WACE,OAAOmyD,GAAAA,QAAqB,UAAU37E,KAAKC,KAC7C,EAAC,EAEDkrG,QAAA,WACE,OAAOxvB,GAAAA,UAAqC,WAAW37E,KAAKC,KAC9D,EAAC,EAEDupF,SAAA,WACE,OAAO7N,GAAAA,UAAgB,WAAYA,GAAAA,eAAqB37E,KAAKC,KAC/D,EAAC,EAED8qF,WAAA,WACE,OAAOpP,GAAAA,UAAgB,aAAcA,GAAAA,eAAqB37E,KAAKC,KACjE,EAAC,EAEDg+E,kBAAA,WACE,OAAOtC,GAAAA,UAAgB,oBAAqBA,GAAAA,eAAqB37E,KAAKC,KACxE,EAAC,EAED+mF,wBAAA,WACE,OAAOrL,GAAAA,UAAoC,2BAA2B37E,KAAKC,KAC7E,EAAC,EACDmrG,qBAAA,WACE,OAAOzvB,GAAAA,UAAoC,wBAAwB37E,KAAKC,KAC1E,EAAC,EAED0pF,gBAAA,WACE,OAAOhO,GAAAA,UAAoC,mBAAmB37E,KAAKC,KACrE,EAAC,EACD49E,aAAA,WACE,OAAOlC,GAAAA,UAAoC,gBAAgB37E,KAAKC,KAClE,EAAC,EAEDq6E,QAAA,WACE,OAAOqB,GAAAA,UAAqC,WAAW37E,KAAKC,KAC9D,EAAC,EACDuoF,mBAAA,WACE,OAAO7M,GAAAA,UAAqC,sBAAsB37E,KAAKC,KACzE,EAAC,EACD0oF,cAAA,WACE,OAAOhN,GAAAA,UAAqC,iBAAiB37E,KAAKC,KACpE,EAAC,EACDosE,UAAA,WACE,OAAOsP,GAAAA,UAAqC,aAAa37E,KAAKC,KAChE,EAAC,EAEDqX,MAAA,WAAQ,WACN,OAAOwxB,GAAuB,cAAe,YAAa,eAAe,SAAC8tB,EAAaiI,EAAWgsB,GAKhG,OAAIA,EACK,OAAQA,EAAsBxyE,KAAK,MAAK,IACtCwmD,GACT,EAAKwsC,uBACE,IAGF,IAAMN,GAAcn0C,EAC7B,IAAG52D,KAAKC,KACV,EAIA,EAGAgrF,SAAA,WACE,OAAOvxB,QAAQh9C,SAAS,EAAG,WAAWb,SAAS5b,KAAK8qF,aACtD,EAEA,EAGA3sB,OAAA,WACE,IAAMR,EAAQ,IAAIlB,EACZlzC,EAASvpB,KAAKupB,SAQpB,OANIA,GACFA,EAAO5S,SAAQ,SAAC8nE,GACd9gB,EAAM7kD,IAAI,SAAa,MAAL2lE,OAAK,EAALA,EAAO90D,MAAQ,EAACi+D,GAAU,CAACnJ,MAAOA,IACtD,IAGK9gB,CACT,EAEA,EAIUytC,qBAAV,WAAiC,MACzBt6E,EAAQ,IAAIu6E,MACZv+C,EAAO9sD,KAEb8wB,EAAMlF,iBAAiB,QAAQ,WAC7B,IACE,IAAM0/E,EAAa,IAAI92F,MACvBs4C,EAAK89B,YAAc0gB,EAAW72F,SAASzU,KASzC,CARE,MAAOuD,GAGP,KAAIA,aAAa61B,WAGf,MAAM71B,EAFNupD,EAAK89B,YAAc,CAAC,IAAK,IAAK,IAIlC,CACA99B,EAAKkhB,UAAY,IAAI/zD,KACrBjF,EAAEwqC,QACJ,IACA1uB,EAAMy6E,YAAc,YACpBz6E,EAAM1O,IAAsB,OAAnB,EAAGpiB,KAAK4+D,aAAW,EAAI,EAClC,EAEA,EAGA6zB,gBAAA,SAAgB+Y,GACd,IAAM/Z,EAAczxF,KAAKyxF,cAIzB,OAFAhwE,OAAOs+B,OAAkB,MAAX0xC,EAAAA,EAAe,CAAC,EAAG+Z,GAE1BxrG,KAAKkoE,KAAK,CAAEupB,YAAAA,GACrB,EAAC,EA5JsB,CAAS/V,ICJb2L,GAAI,uFAiEtB,OAjEsB,EACvB7mB,OAAA,WACE,OAAOkb,GAAAA,UAAwB,UAAU37E,KAAKC,KAChD,EAAC,EACDk+D,WAAA,WACE,OAAOwd,GAAAA,OAAyB,cAAc37E,KAAKC,KACrD,EAAC,EAEDgvE,UAAA,WACE,OAAO0M,GAAAA,UAA8B,YAAaA,GAAAA,eAAqB37E,KAAKC,KAC9E,EAAC,EACD8sD,KAAA,WACE,OAAO4uB,GAAAA,OAAmB,QAAQ37E,KAAKC,KACzC,EAAC,EAEDk3C,YAAA,WACE,OAAOwkC,GAAAA,UAA+B,eAAe37E,KAAKC,KAC5D,EAAC,EACDo2B,QAAA,WACE,OAAOslD,GAAAA,UAA2C,WAAW37E,KAAKC,KACpE,EAAC,EACDqsF,YAAA,WACE,OAAO3Q,GAAAA,UAA2C,eAAe37E,KAAKC,KACxE,EAAC,EACDusF,aAAA,WACE,OAAO7Q,GAAAA,UAAqC,gBAAgB37E,KAAKC,KACnE,EAAC,EACD4vE,aAAA,WACE,OAAO/mC,GAAoC,eAAe,SAACzS,GACzD,MAAuB,iBAAZA,EACF8oC,EAAgB9oC,GAGlBA,CACT,IAAGr2B,KAAKC,KACV,EAAC,EAEDisF,SAAA,WACE,OAAOvQ,GAAAA,UAAgB,WAAYA,GAAAA,eAAqB37E,KAAKC,KAC/D,EAAC,EACD+rF,WAAA,WACE,OAAOrQ,GAAAA,OAA0B,cAAc37E,KAAKC,KACtD,EAAC,EACDwsF,SAAA,WACE,OAAO3jD,GAAkB,YAAY,SAACojD,GAAQ,QAAOA,CAAQ,IAAElsF,KAAKC,KACtE,EAAC,EAED0sE,SAAA,WACE,OAAOgP,GAAAA,UAAgB,WAAYA,GAAAA,eAAqB37E,KAAKC,KAC/D,EAAC,EACD2sE,WAAA,WACE,OAAO+O,GAAAA,OAA0B,cAAc37E,KAAKC,KACtD,EAAC,EACDisE,SAAA,WACE,OAAOpjC,GAAkB,YAAY,SAAC6jC,GAAQ,QAAOA,CAAQ,IAAE3sE,KAAKC,KACtE,EAAC,EAEDq6E,QAAA,WACE,OAAOqB,GAAAA,UAAqC,WAAW37E,KAAKC,KAC9D,EAAC,EACDksE,QAAA,WACE,OAAOwP,GAAAA,UAAqC,WAAW37E,KAAKC,KAC9D,EAAC,EACDosE,UAAA,WACE,OAAOsP,GAAAA,UAAqC,aAAa37E,KAAKC,KAChE,EAAC,EAjEsB,CAAS07E,ICHbmL,GAAY,uFAuB9B,OAvB8B,EAC/B3vC,YAAA,WACE,OAAOwkC,GAAAA,UAAwB,eAAe37E,KAAKC,KACrD,EAAC,EACDo2B,QAAA,WACE,OAAOslD,GAAAA,UAAmB,WAAW37E,KAAKC,KAC5C,EAAC,EACDgvE,UAAA,WACE,OAAO0M,GAAAA,UAA8B,YAAaA,GAAAA,eAAqB37E,KAAKC,KAC9E,EAAC,EAEDyuE,OAAA,WACE,OAAOiN,GAAAA,UAAyB,UAAU37E,KAAKC,KACjD,EAAC,EAED8sD,KAAA,WACE,OAAO4uB,GAAAA,OAAmB,QAAQ37E,KAAKC,KACzC,EAAC,EACD8mF,SAAA,WACE,OAAOpL,GAAAA,OAA0B,YAAY37E,KAAKC,KACpD,EAAC,EACDu+E,QAAA,WACE,OAAO7C,GAAAA,OAA2B,WAAW37E,KAAKC,KACpD,EAAC,EAvB8B,CAAS07E,ICoBrB+vB,GAAiB,6BAIpCvvC,MAA0B,KAAI,KAK9BwkC,UAAyB,GAAE,KAK3BE,eAAyB,EAAK,KAMtB9zF,IAAM,CAAC,mBAmFd,OAjFD,EAkBAJ,KAAA,SAAKw3E,EAAkCx5D,EAAqCghF,GAAmC,WAC7G,QADmE,IAA9BhhF,IAAAA,EAAiC,CAAC,QAAsB,IAAnBghF,IAAAA,GAAsB,KAC1FxnB,EAAevkF,qBAAqBkpE,IAAQ,CAEhD,IAAM8iC,EAAsB,yCAE5B,MADArxE,QAAQjW,MAAMsnF,GACR,IAAI9/F,MAAM8/F,EAClB,CAEA3rG,KAAK4gG,eAAgB,EACrB5rF,EAAEwqC,OAAOD,OAQTlR,uBAAsB,WAEpB,EAAK6tB,MAAQ,CAAEgoB,eAAAA,EAAgBx5D,MAAAA,EAAO5d,IAAK,EAAKA,OAG5C4+F,EAEF,EAAKhL,UAAUxrF,KAAK,EAAKgnD,OAGzB,EAAKwkC,UAAY,CAAC,EAAKxkC,OAGzBlnD,EAAEwqC,QACJ,GACF,EAEA,EAGA2c,MAAA,WACOn8D,KAAKk8D,QAGNl8D,KAAK0gG,UAAUj8F,OAAS,GAE1BzE,KAAK0gG,UAAU9qF,MAGf5V,KAAKk8D,MAAQl8D,KAAK0gG,UAAU1gG,KAAK0gG,UAAUj8F,OAAS,KAGpDzE,KAAKk8D,MAAQ,KACbl8D,KAAK0gG,UAAY,IAGnB1rF,EAAEwqC,SACJ,EAEA,EAKAwhD,YAAA,WACE,QAAShhG,KAAKk8D,KAChB,EAAC,EAvGmC,GCPjB0vC,GAAiB,6BAC1BpJ,aAA2B,CAAC,EAAC,KAC7BqJ,QAA2B,CAAC,mBAsDrC,OAtDqC,EAEtCpJ,gBAAA,WACE,OAAOziG,KAAKwiG,YACd,EAEA,EASA91F,KAAA,SAAKo/F,EAAWC,EAAYC,GAE1B,IAEI12E,EAFA4uD,EAAiB1b,GACjB99C,EAAoB,CAAC,EAiBzB,OAdwB,GAApBhX,UAAUjP,OACZ6wB,EAAWw2E,EACkB,GAApBp4F,UAAUjP,QACnBimB,EAAQohF,EACRx2E,EAAWy2E,GACkB,GAApBr4F,UAAUjP,SACnBy/E,EAAiB4nB,EACjBphF,EAAQqhF,EACRz2E,EAAW02E,GAGbhsG,KAAKwiG,eAAexiG,KAAK6rG,SAAW,CAAEv2E,SAAAA,EAAU5K,MAAAA,EAAOw5D,eAAAA,GACvDlvE,EAAEwqC,SAEKx/C,KAAK6rG,OACd,EAEA,EAGAlJ,QAAA,SAAQ71F,GACDA,GAASA,KAAO9M,KAAKwiG,sBAEnBxiG,KAAKwiG,aAAa11F,GACzBkI,EAAEwqC,SACJ,EAEA,EAGAvrC,MAAA,WACEjU,KAAKwiG,aAAe,CAAC,EACrBxtF,EAAEwqC,QACJ,EAAC,EAxDmC,GCdjBysD,GAAW,uFA8B7B,OA9B6B,EAC9Bj4E,MAAA,WACE,OAAO0nD,GAAAA,UAAoC,SAAS37E,KAAKC,KAC3D,EAAC,EACDksG,OAAA,WACE,OAAOxwB,GAAAA,UAAwB,UAAU37E,KAAKC,KAChD,EAAC,EACDmJ,MAAA,WACE,OAAOuyE,GAAAA,UAA+B,SAAS37E,KAAKC,KACtD,EAAC,EACDgF,KAAA,WACE,OAAO02E,GAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAAC,EACDgvE,UAAA,WACE,OAAO0M,GAAAA,UAA8B,YAAaA,GAAAA,eAAqB37E,KAAKC,KAC9E,EAAC,EACD4zF,eAAA,WACE,OAAOlY,GAAAA,UAA8B,iBAAkBA,GAAAA,eAAqB37E,KAAKC,KACnF,EAAC,EACD6zF,cAAA,WACE,OAAOnY,GAAAA,UAAwB,iBAAiB37E,KAAKC,KACvD,EAAC,EACD0zF,OAAA,WACE,OAAOhY,GAAAA,UAAwB,UAAU37E,KAAKC,KAChD,EAAC,EACDszF,UAAA,WACE,OAAO5X,GAAAA,UAAyB,aAAa37E,KAAKC,KACpD,EAAC,EACDo1F,eAAA,WACE,OAAO1Z,GAAAA,UAAyB,kBAAkB37E,KAAKC,KACzD,EAAC,EA9B6B,CAAS07E,sKCwIzC,IAIqBywB,GAAW,6BAI9BhpC,WAAK,OAYLpiB,OAA6C,CAAC,EAAC,KAK/CqrD,aAA8C,IAAI3vC,EAAU,KAO5DqhB,aAAO,OAKPrd,WAAyB,IAAIynC,GAAY,KAKzCvsB,MAAe,IAAIotB,GAAM,CACvB,gBAAiBkD,GACjBI,OAAQxB,GACRyB,MAAOrB,GACP5sB,YAAaZ,GACb5K,MAAOwU,GACP99D,OAAQu+D,GACRtJ,cAAeqI,KACf,KAMFz8D,MAAiC,CAAC,EAAC,KAKnCmiF,QAAkB,EAAK,KASvBlyD,QAAqB,IAAIqhB,EAAU,MAAK,KASxCK,SAAsB,IAAIL,EAAU,MAAK,KAKzCQ,MAA2B,IAAIuvC,GAAmB,KAKlDe,OAA4B,IAAIZ,GAAmB,KAKnD3vC,YAAM,OAEN3b,QAA2B,KAAI,KAC/B2wB,KAAY,KAAI,KAEhBtvE,UAAI,OAEI8qG,OAAiB,GAAE,KACnBC,YAAsB,EAAC,KAsBvBC,kBAAmC,KAAI,KAE/CC,kBAAY,oBAZX,OAYW,EAELlpE,KAAP,SAAYme,GACV7hD,KAAK2B,KAAOkgD,EACZ7hD,KAAKygE,WAAW6nC,UAAUzmD,EAAQroC,OACpC,EAAC,EAEMqzF,KAAP,WAAc,aACNC,EAAiD,GAEvD9sG,KAAKosG,aAAanpF,UAAUtM,SAAQ,SAACo2F,GACnC,IACEA,EAAY,EAad,CAZE,MAAOxpG,GACP,IAAMypG,EAAYD,EAAY9vC,SAAS/C,SAAS,KAC5C6yC,EAAY9vC,SAASt5D,QAAQ,+BAAgC,KAC7DopG,EAAY9vC,SAEhB6vC,EAA2B53F,MAAK,kBCjRK+3F,EDmRjC5sC,GAAY7G,EAAIiH,WAAWC,MAAM,wDAAyD,CAAEssC,UAAAA,KCnRxCE,EDoRjDF,EAAS,wBCpR8D3oF,EDqR1E9gB,ECpRV+2B,QAAQmkD,MAAM,KAAKyuB,EAAgB,iEACnC5yE,QAAQjW,MAAMA,GACdiW,QAAQ6yE,gBAEO,OAAf,EAAI3zC,EAAIskB,UAAa,OAAN,EAAX,EAAahxB,OAAb,EAAmBo+C,WACrB1xC,EAAIgzC,OAAO9/F,KAAK,CAAE1H,KAAM,SAAW,GAAGioG,IAN3B,IAA8BA,EAAmBC,EAAsB7oF,EAAY,GDsRvF,GAEL,CACF,IAEArkB,KAAK27E,MAAMU,YAAY,CAAE16E,KAAM3B,KAAK2B,KAAKyrG,YAEzCptG,KAAKmjE,MAAQnjE,KAAK27E,MAAM3vD,QAAQ,SAAU,KAE1ChsB,KAAK89E,QAAU,IAAI0rB,GAA2E,OAApE,EAACxpG,KAAK27E,MAAM3vD,QAAc,QAAS7T,OAAOnY,KAAK2B,KAAKm8E,QAAQouB,UAAQ,EAAI,KAAMlsG,KAAK2B,KAAKm8E,QAAQ2rB,WAE1HzpG,KAAKy/C,QAELz/C,KAAK4sG,aAAe7qG,OAAOkuB,SAASG,KAEpC08E,EAA2Bn2F,SAAQ,SAACnD,GAAO,OAAKA,GAAS,GAC3D,EAAC,EAEM65F,eAAP,SAAsBC,GAAsD,WAC1E7rF,OAAOvB,KAAKotF,GAAY32F,SAAQ,SAAC9D,GAC/B,IAAMm6F,EAAYM,EAAWz6F,GAG7B,GAAKm6F,EAAUvsG,OAIf,IAFA,IAEgC,EAAhC,+sBAFkBusG,EAAUvsG,OAAOb,KAAK2tG,QAER,aAAb,QACR9sG,OAAO,EAAM,CAAEoS,KAAAA,EAAM8E,QAASq1F,GAE3C,GACF,EAAC,EAESvtD,MAAV,SAAgB6qD,GAAuB,gBAAP,IAAhBA,IAAAA,EAAmB,IAEjCt1F,EAAEyqC,MAAM7+C,SAASgR,eAAe,SAAW,CAAE+yB,KAAM,kBAAM,EAAC07D,GAAY,CAAChoE,MAAO,EAAK6jC,OAAS,IAC5FlnD,EAAEyqC,MAAM7+C,SAASgR,eAAe,UAAY,CAAE+yB,KAAM,kBAAM,EAAC49D,GAAY,CAAClqE,MAAO,EAAKm0E,QAAU,IAE9FxsG,KAAKi8D,OAAS,IAAI2tC,GAElB50F,EAAEwrC,MAAM5/C,SAASgR,eAAe,WAAa04F,EAAW,IAAKD,GAAUrqG,KAAK+gD,OAAQupD,IAEpF,IAAMkD,EAAQ5sG,SAASgR,eAAe,OAChC67F,EAAc7sG,SAAS4wD,cAAc,eAMrCihB,EAAiB,IAAIjB,IAAe,SAAChvE,GACzC,IAAMV,EAAS0rG,EAAM38F,wBAAwBrO,IAAM5B,SAASuC,KAAKd,UAEjEmrG,EAAMxvC,UAAU95D,OAAO,QAAS1B,GAAOV,GACvC0rG,EAAMxvC,UAAU95D,OAAO,WAAY1B,EAAMV,GAEzC2rG,EAAYzvC,UAAU95D,OAAO,mBAAoB1B,GAAOV,EAC1D,IAEA2wE,EAAerjD,QACfqjD,EAAet+D,SAEfvT,SAASuC,KAAK66D,UAAUllD,IAAI,iBAAkB/W,OAAS,QAAU,YAEjE2oG,IACF,EAEA,EAKAgD,qBAAA,WAEE,GAAI1tG,KAAK2B,KAAKgsG,aAAe5rG,OAAOkuB,SAASG,OAASpwB,KAAK4sG,aAAc,CACvE,IAAM/nF,GAAUikF,GAAgB9oG,KAAK2B,KAAKgsG,aACtC3tG,KAAK27E,MAAMU,YAA+Br8E,KAAK2B,KAAKgsG,cAKxD,OAFA3tG,KAAK2B,KAAKgsG,YAAc,KAEjB9oF,CACT,CAEA,OAAO,IACT,EAEA,EAGA+oF,OAAA,WAEE,OADeplE,iBAAiB5nC,SAASwE,iBAC3B6jC,iBAAiB,kBACjC,EAEA,EAKA0kD,SAAA,SAASxkF,GACPnJ,KAAKmJ,MAAQA,EACbnJ,KAAK6tG,aACP,EAEA,EAKAC,cAAA,SAAcr3F,GACZzW,KAAK+tG,WAAat3F,EAClBzW,KAAK6tG,aACP,EAAC,EAEDA,YAAA,WACE,IAAMp3F,EAAQzW,KAAK+tG,WAAa,IAAI/tG,KAAK+tG,WAAU,KAAO,GACpDC,EAAah5F,EAAEwrC,MAAMjkC,QAAUvc,KAAKmjE,MAAMC,UAAU,YAAc,IAElEnmB,EAAS,CACbgxD,UAAWjuG,KAAKmJ,MAChB+kG,UAAWluG,KAAKmjE,MAAMC,UAAU,SAGhC+qC,WAAY,GAGVhlG,EACF6kG,IAAehuG,KAAKmJ,MAChBk3D,GAAY7G,EAAIiH,WAAWC,MAAM,0CAA2CzjB,IAC5EojB,GAAY7G,EAAIiH,WAAWC,MAAM,uCAAwCzjB,IAE/E9zC,EAAQsN,EAAQtN,EAUhB,IAAMilG,EAAS,IAAI/5D,UACnBzzC,SAASuI,MAAQilG,EAAO95D,gBAAgBnrC,EAAO,aAAahG,KAAKi8D,SACnE,EAAC,EAESivC,wBAAV,SAAgDC,GAA+F,WAC7I,OAA6EA,GAArEhiD,EAAU,EAAVA,WAAYS,EAAW,EAAXA,YAAaH,EAAO,EAAPA,QAAS2hD,EAAU,EAAVA,WAAeC,EAAU,QAe7DC,EAAkBF,GAAc3hD,EAEhCpsD,EAAsD,GAC1D8rD,WAAsB,MAAVA,GAAAA,EACZS,YAAwB,MAAXA,EAAAA,EATY,SAACjT,GAAgB,OAAKA,CAAQ,GAUpD00D,GAUL,GAPA/tG,GAAOD,EAAS,UAAU,SAAC4Y,EAAc6hC,GACvCA,EAAIpC,iBAAiB,eAAgB,EAAKilC,QAAQ2rB,UACpD,IAKIjpG,EAAQs2B,SAAW,CAAC,MAAO,QAAQojC,SAAS15D,EAAQs2B,QAAS,CAC/D,IAAMA,EAASt2B,EAAQs2B,OAEvBr2B,GAAOD,EAAS,UAAU,SAAC4Y,EAAc6hC,GACvCA,EAAIpC,iBAAiB,yBAA0B/hB,EACjD,IAEAt2B,EAAQs2B,OAAS,MACnB,CAiCA,OA/BAt2B,EAAQosD,QAAU,SAAC3R,GACjB,IAAIe,EAGFA,EADEyyD,EACaA,EAAgBxzD,EAAIe,cAEpBf,EAAIe,aAGrB,IAAMhD,EAASiC,EAAIjC,OAEnB,GAAIA,EAAS,KAAOA,EAAS,IAC3B,MAAM,IAAIwxD,GAA2BxxD,EAAQ,GAAGgD,EAAgBx7C,EAASy6C,GAG3E,GAAIA,EAAItC,kBAAmB,CACzB,IAAM8wD,EAAYxuD,EAAItC,kBAAkB,gBACpC8wD,IAAWjwC,EAAIskB,QAAQ2rB,UAAYA,EACzC,CAEA,IACE,MAAqB,KAAjBztD,EACK,KAGFtf,KAAK3iB,MAAMiiC,EAGpB,CAFE,MAAOz4C,GACP,MAAM,IAAIinG,GAA2B,IAAK,GAAGxuD,EAAgBx7C,EAASy6C,EACxE,CACF,EAEOz6C,CACT,EAEA,EAKAsiD,QAAA,SAAsBvT,GAA4E,WAC1F/uC,EAAUR,KAAKquG,wBAAwB9+D,GAI7C,OAFIvvC,KAAK2sG,mBAAmB3sG,KAAKwsG,OAAO7J,QAAQ3iG,KAAK2sG,mBAE9C33F,EAAE8tC,QAAQtiD,GAAQ,OAAO,SAAC+C,GAAC,OAAK,EAAKmrG,kBAAkBnrG,EAAGgsC,EAAgBy6B,aAAa,GAChG,EAEA,EAGU0kC,kBAAV,SAA0CrqF,EAAqBsqF,GAAwE,UAIjIv4E,EAFEw4E,EAA+E,OAAhE,EAAiB,OAAjB,EAAGvqF,EAAMy1B,WAAgB,OAAR,EAAd,EAAgBqV,aAAF,EAAd,EAAwBvnD,KAAI,SAACrE,GAAC,aAAKsrG,UAAkB,OAAT,EAACtrG,EAAE+gC,QAAM,EAAI,GAAG,KAAC,EAAI,GAGzF,OAAQjgB,EAAM20B,QACZ,KAAK,IACH5iB,EAAUw4E,EACPhnG,KAAI,SAAC08B,GAAM,MAAK,CAACA,EAAQ,aAAO,IAChC1kC,OACA2V,MAAM,GAAI,GACb,MAEF,KAAK,IACL,KAAK,IACH6gB,EAAUojC,EAAIiH,WAAWC,MAAM,4CAC/B,MAEF,KAAK,IACL,KAAK,IACHtqC,EAAUojC,EAAIiH,WAAWC,MAAM,oCAC/B,MAEF,KAAK,IACHtqC,EAAUojC,EAAIiH,WAAWC,MAAM,4CAC/B,MAEF,KAAK,IACHtqC,EAAUojC,EAAIiH,WAAWC,MAAM,8CAC/B,MAEF,QAEItqC,EADEp2B,KAAK8uG,sBAAsBzqF,GACnBm1C,EAAIiH,WAAWC,MAAM,+CAErBlH,EAAIiH,WAAWC,MAAM,kCAIrC,IAAMquC,EAAmBv1C,EAAI2J,MAAMC,UAAU,SAkB7C,OAhBA/+C,EAAMgkD,MAAQ,CACZrjE,KAAM,QACNoxB,QAAAA,EACAmyC,SAAUwmC,GAAW,CACnB,EAACtrC,GAAM,CAAC33C,UAAU,sBAAsBw2B,QAAStiD,KAAKgvG,UAAUt/D,KAAK1vC,KAAMqkB,EAAOuqF,IAC/Ep1C,EAAIiH,WAAWC,MAAM,4BAKxBiuC,EACFA,EAAmBtqF,GAEnBrkB,KAAKivG,2BAA2B5qF,EAAO0qF,EAASH,GAG3CjvD,QAAQ/oB,OAAOvS,EACxB,EAEA,EAQUyqF,sBAAV,SAAgCzqF,GAC9B,OAAO,IAAI6qF,IAAI7qF,EAAM7jB,QAAQq2C,IAAKj2C,SAASuuG,SAAS3hD,SAAWzrD,OAAOkuB,SAASu9B,MACjF,EAAC,EAESyhD,2BAAV,SAAqC1rG,EAAYwrG,EAAkBH,GACjE,KAAIrrG,aAAainG,IAoBf,MAAMjnG,EAnBN,GAAIwrG,GAAWxrG,EAAE03C,IAAK,CACpB,IAK4B,EAL5B,EAAwB13C,EAAE/C,QAAlBs2B,EAAM,EAANA,OAAQ+f,EAAG,EAAHA,IAChB,EAAwBtzC,EAAE03C,IAAlBjC,OAAAA,OAAM,IAAG,KAAE,EAEnB1e,QAAQmkD,MAAS3nD,EAAM,IAAI+f,EAAG,IAAImC,GAE9B41D,EAAgBnqG,QAClB,EAAA61B,SAAQjW,MAAK,QAAIuqF,GAEjBt0E,QAAQjW,MAAM9gB,GAGhB+2B,QAAQ6yE,UACV,CAEI5pG,EAAE8kE,QACJroE,KAAK2sG,kBAAoB3sG,KAAKwsG,OAAO9/F,KAAKnJ,EAAE8kE,MAAO9kE,EAAE8kE,MAAMjyC,SAKjE,EAAC,EAEO44E,UAAR,SAAkB3qF,EAAqBw+E,GACN,OAA3B7iG,KAAK2sG,mBAA4B3sG,KAAKwsG,OAAO7J,QAAQ3iG,KAAK2sG,mBAE9D3sG,KAAKk8D,MAAMxvD,KAAKk2F,GAAmB,CAAEv+E,MAAAA,EAAOw+E,eAAAA,GAC9C,EAEA,EAGAriD,MAAA,SAAM3tC,EAAcoqC,QAA+B,IAA/BA,IAAAA,EAAkC,CAAC,GACrD,IAAMuD,EAAQxgD,KAAK+gD,OAAOluC,GAE1B,IAAK2tC,EAAO,MAAM,IAAI30C,MAAM,UAAUgH,EAAI,oBAE1C,IAAMgkC,EAAM2J,EAAMH,KAAK18C,QAAQ,cAAc,SAACqR,EAAGlI,GAAG,SAAQ8/C,EAAQ3P,EAAQnwC,EAAI,IAGhF,IAAK,IAAMA,KAAOmwC,EACZA,EAAOxwC,eAAeK,KAASmwC,EAAOnwC,WAAamwC,EAAOnwC,GAGhE,IAAMsiG,EAAcp6F,EAAEguC,iBAAiB/F,GAGvC,OAFkC,KAAnBjoC,EAAEwrC,MAAM9uC,OAAgB1R,KAAKmjE,MAAMC,UAAU,YAAc,IAE1DvsB,GAAOu4D,EAAc,IAAMA,EAAc,GAC3D,EAAC,sBA/YD,WACE,OAAOpvG,KAAKysG,MACd,EAAC,IAND,SAAkBvsG,GAChBF,KAAKysG,OAASvsG,CAChB,GAAC,sBAUD,WACE,OAAOF,KAAK0sG,WACd,EAEA,IARA,SAAuBxsG,GACrBF,KAAK0sG,YAAcxsG,CACrB,KAAC,EA9G6B,GExHXmvG,GAAU,uFA0E5B,OA1E4B,EAC7B1qE,KAAA,WACE,IAAQ2b,EAAkBkZ,EAAAA,QAATyX,EAASzX,EAAAA,KAE1B,OACE,SACE1tC,UAAWkyC,EAAU,yBAA0Bh+D,KAAK0qB,MAAMoB,WAC1DwjF,aAAcr+B,GAAQA,EAAKvkE,KAAKgjC,KAAKuhC,GACrC/V,aAAc+V,GAAQA,EAAK/V,aAAaxrB,KAAKuhC,IAErC,MAAP3wB,GAAAA,EAASia,YAAc,CAACv6D,KAAKuvG,gBAAiBvvG,KAAKwvG,iBAAmBxvG,KAAKyvG,kBAGlF,EAEA,EAGUF,cAAV,WACE,IAAQjvD,EAAYkZ,EAAAA,QACduC,EAAkB,MAAPzb,OAAO,EAAPA,EAAS+Z,cAE1B,OACE,EAACghB,GAAU,CACTvvD,UAAU,sCACVsE,KAAa,MAAPkwB,OAAO,EAAPA,EAASoa,UACfwF,KAAK,sBACL,aAAoB,MAARnE,OAAQ,EAARA,EAAU5yD,MACtBm5C,QAAS,SAAC/+C,GACJA,EAAEmhC,UAAYnhC,EAAE0d,SAAW1d,EAAEyd,SAAuB,IAAZzd,EAAEqB,QAC9CrB,EAAEmC,iBACK,MAAP46C,GAAAA,EAASka,OACX,GAGN,EAEA,EAGUg1C,cAAV,WACE,IAAQv+B,EAASzX,EAAAA,KAEjB,OAAKyX,GAASA,EAAKv6B,OAGjB,EAAC+sB,GAAM,CACL33C,UAAWkyC,EAAU,qCAAsC,CAAEtnB,OAAQu6B,EAAKpW,SAC1EvY,QAAS2uB,EAAK9V,aAAazrB,KAAKuhC,GAChC/Q,KAAK,qBANyB,IASpC,EAEA,EAGUuvC,gBAAV,WACE,IAAKzvG,KAAK0qB,MAAMuxC,OAAQ,OAAO,KAE/B,IAAQA,EAAWzC,EAAAA,OACb1M,EAAO0M,EAAIskB,QAAQhxB,KAEzB,OACE,EAAC2W,GAAM,CACL33C,UAAWkyC,EAAU,wCAAyC,CAAEkvB,IAAS,MAAJpgC,OAAI,EAAJA,EAAMq+C,yBAC3E7oD,QAAS,SAAC/+C,GACRA,EAAEoC,kBACFs2D,EAAOvvD,MACT,EACAwzD,KAAK,cACL,aAAY1G,EAAIiH,WAAWC,MAAM,+BAGvC,EAAC,EA1E4B,CAASrF,GClBnBq0C,GAAqB,YACxC,aAAc,OACZ,YAAM,CAAC,EAAG,EAAG,KAAG,IAClB,CAHwC,OAGvC,kBAIA,OAED,EAGAhsE,KAAA,WAAsB,QAMpB,OALoB,OAApB,EAAI81B,GAAAA,QAAAA,OAAA,EAAkB2xC,yBACpBnrG,KAAKgvF,MAAQ,GACbhvF,KAAKiwB,SAAW,CAAE6pD,KAAM,IAGtB95E,KAAKgvF,MAAMvqF,OAAS,EACfk7C,QAAQhpB,WAGD,OAAhB,EAAA6iC,GAAAA,QAAAA,OAAA,EAAkBuiB,eAAe,CAAEovB,qBAAsB,IAElD,EAAP,UAAa96B,SAAQ,WACvB,EAEA,EAGA8N,cAAA,WAAgB,MACd,GAA0B,IAAtBn+E,KAAKgvF,MAAMvqF,OAQf,OANgB,OAAhB,EAAA+0D,GAAAA,QAAAA,OAAA,EAAkBuiB,eAAe,CAAEgL,wBAAyB,IAE5D/mF,KAAKgvF,MAAMr4E,SAAQ,SAACmjE,GAClBA,EAAKnc,MAAMhnD,SAAQ,SAAC2nE,GAAY,OAAKA,EAAavC,eAAe,CAAEtN,QAAQ,GAAO,GACpF,IAEOjV,GAAAA,QAAY,CACjB3iB,IAAK2iB,GAAAA,MAAAA,UAAoB,UAAY,sBACrC1iC,OAAQ,QAEZ,EAEA,EAGAsnD,UAAA,WAAY,MACV,GAA0B,IAAtBp+E,KAAKgvF,MAAMvqF,OAMf,OAJgB,OAAhB,EAAA+0D,GAAAA,QAAAA,OAAA,EAAkBuiB,eAAe,CAAEgL,wBAAyB,IAE5D/mF,KAAKgvF,MAAQ,GAENx1B,GAAAA,QAAY,CACjB3iB,IAAK2iB,GAAAA,MAAAA,UAAoB,UAAY,iBACrC1iC,OAAQ,UAEZ,EAAC,qBAtDD,WACE,MAAO,eACT,KAAC,EAPuC,CAASi4D,ICJ9B4gB,GAAW,WAI9B,WAAYC,QAAwB,IAAxBA,IAAAA,EAA2B,IAAE,KAH/BA,oBAAc,OACd7oG,MAAgB,GAGxB/G,KAAK4vG,eAAiB,IAAIC,IAAID,EAChC,CAEA,kBAyCC,OAzCD,EASA5tB,iBAAA,WACE,MAAO,EACT,EAAC,EAEDI,SAAA,WACE,OAAOpiF,KAAK+G,KACd,EAAC,EAEDw7E,SAAA,SAASx7E,GACP/G,KAAK+G,MAAQA,CACf,EAEA,EAGAkN,MAAA,WACEjU,KAAKuiF,SAAS,GAChB,EAEA,EAIAn4D,MAAA,SAAMk5B,GACJtjD,KAAK4vG,eAAe92F,IAAIwqC,EAC1B,EAEA,EAGA4/B,SAAA,SAAS5/B,GACP,OAAOtjD,KAAK4vG,eAAel6E,IAAI4tB,EACjC,EAAC,EAjD6B,YCMXwsD,GAAiB,YAGpC,WAAYF,GAAqB,MAFF,YAEL,IAAdA,IAAAA,EAAiB,KAC3B,cAAMA,IAAe,MAHfG,iBAAkB,EAAK,CAI/B,CALoC,OAKnC,kBAyFA,OAzFA,EAED3tB,SAAA,WASE,OAJKpiF,KAAK+vG,iBAAmB/vG,KAAKgwG,0BAChChwG,KAAKiwG,iBAGA,EAAP,UAAa7tB,SAAQ,UACvB,EAAC,EAES6tB,eAAV,WACEjwG,KAAKuiF,SAASviF,KAAKgiF,oBACnBhiF,KAAK+vG,iBAAkB,CACzB,EAAC,EAESC,uBAAV,WACE,OAAOx2C,GAAAA,QAAAA,MAAoBA,GAAAA,QAAAA,KAAAA,qBAC7B,EAEA,EAGAwoB,iBAAA,WACE,OAAOhiF,KAAKgwG,yBAA2BhwG,KAAKi9C,SAAS+T,EAAI,EAC3D,EAEA,EAGA/8C,MAAA,WACE,YAAMA,MAAK,WAEPjU,KAAKgiF,mBACPhiF,KAAKkwG,qBAELl7F,EAAEwqC,QAEN,EAEA,EAIU0wD,mBAAV,WACE,MAAyBlwG,KAAKi9C,SAAhBA,GAAL,EAAD+T,EAAY,SAEpB+I,EAA0BP,GAAAA,MAAUA,GAAAA,QAAAA,IAAgB,aAAcvc,GACpE,EAEA,EAKAkzD,aAAA,WACE,MAAO,CACLz6F,KAAMV,EAAEwrC,MAAM3L,MAAM,QACpBmc,EAAGh8C,EAAEwrC,MAAM3L,MAAM,KAErB,EAEA,EAGAoI,OAAA,WACE,IAAMA,EAASj9C,KAAKmwG,eAIpB,OAFAlzD,EAAOn2C,OAASkO,EAAEwrC,MAAM3L,MAAM,UAEvBoI,CACT,EAEA,EAGAmzD,WAAA,SAAW16F,GACT,IAAMunC,EAASj9C,KAAKi9C,SAEhBvnC,IAAS+L,OAAOvB,KAAKs5C,GAAAA,YAAAA,WAA2B,UAC3Cvc,EAAOvnC,KAEdunC,EAAOvnC,KAAOA,EAGhBqkD,EAA0BP,GAAAA,MAAUA,GAAAA,QAAAA,IAAgB,aAAcvc,GACpE,EAAC,EA9FmC,CAAS0yD,ICHhC,SAASU,KACtB,MACE,iBAAkBtuG,QACE,MAApB6/E,UAAU0uB,QACV1uB,UAAU0uB,OAAOp2C,SAAS,UACH,MAAvB0nB,UAAU2uB,YACT3uB,UAAU2uB,UAAUr2C,SAAS,WAC7B0nB,UAAU2uB,UAAUr2C,SAAS,QAElC,CCesD,IAIjCs2C,GAAgB,YAqDnC,aAAc,MAK6H,OAJzI,gBAAO,MAlDTC,uBAAiJ,CAC/IC,kBAAmB1pB,IACpB,EAKD2pB,eAAiG,CAC/FC,QAAS1kB,GACTwkB,kBAAmB3jB,IACpB,EAKD9b,KAAoB,KAAI,EAMxB3wB,QAAmB,IAAI6Z,EAAS,EAKhCqkB,cAAuC,IAAIkxB,GAAuB,EAMlEjuD,OAA4B,IAAIquD,GAAmB,EAKnD/oC,SAA0B,IAAIgd,GAAe,EAM7C1F,YAAmC,IAAI8R,GAAoB,CAAC,GAAE,EAE9D3vC,WAAK,IAEL7+C,UAAI,EAKFo/C,GAAO,MAEP,EAAKP,MAAQ/+B,OAAOs+B,OAAQt+B,OAAOC,eAAeD,OAAOC,eAAe,OAAuB8+B,MAAM9Q,KAAK,MzC/CvG,SAA0B8pB,GAC/B,MAAO,CAIL0E,WAAY,SAAF,sGAAE,WAACA,EAAwB6b,GACnC,OAAOvgB,EAAIhZ,MAAMu5B,GAAiB,IAATA,EAAa,kBAAoB,aAAc,CACtEpwD,GAAIu0C,EAAWY,OACfib,KAAMA,GAAiB,IAATA,EAAaA,OAAOjnE,GAEtC,IAKAq1D,KAAM,SAAF,oGAAE,WAACA,GACL,OAAO3O,EAAIhZ,MAAM0d,WAAWiK,EAAKjK,aAAciK,EAAK3H,SACtD,IAKA1T,KAAM,SAAF,oGAAE,WAACA,GACL,OAAO0M,EAAIhZ,MAAM,OAAQ,CACvBhF,SAAUsR,EAAKgS,QAEnB,IAEJ,CyCmBqH+xC,CAAiB,OAAO,CAC3I,CA3DmC,OA6DnC,kBA4EC,OA5ED,EAGApxD,MAAA,WAAQ,WAKAqB,EAAe9gD,KAAKmjE,MAAMC,UAAU,gBACtC0tC,EAAgB,QAEpB,IAAK,IAAM7pG,KAAKjH,KAAK+gD,OACf/gD,KAAK+gD,OAAO95C,GAAGo5C,OAASS,IAAcgwD,EAAgB7pG,GAG5DjH,KAAK+gD,OAAO+vD,GAAezwD,KAAO,IAClCrgD,KAAKsgD,QAAQprC,KAAK47F,EAAezwC,GAAYrgE,KAAKygE,WAAWC,MAAM,4CAA6C,KAEhH1gE,KAAKixE,KAAO,IAAItW,EAAK/5D,SAASgR,eAAe,QAE7CoD,EAAEwrC,MAAM9uC,OAAS,GACjB,YAAM+tC,MAAK,UAACz/C,KAAKmjE,MAAMC,UAAU,aAIjCpuD,EAAEyqC,MAAM7+C,SAASgR,eAAe,kBAAoB,CAAE+yB,KAAM,kBAAM,EAAC0qE,GAAU,CAACvjF,UAAU,kBAAkBmwC,QAAM,GAAG,IACnHjnD,EAAEyqC,MAAM7+C,SAASgR,eAAe,qBAAuBy9F,IACvDr6F,EAAEyqC,MAAM7+C,SAASgR,eAAe,kBAAoBwpE,IACpDpmE,EAAEyqC,MAAM7+C,SAASgR,eAAe,oBAAsB+xE,IACtD3uE,EAAEyqC,MAAM7+C,SAASgR,eAAe,YAAc,CAAE+yB,KAAM,kBAAM,EAACsgD,GAAQ,CAAC5sD,MAAO,EAAK0uC,UAAY,IAE9FovB,GAAuBn2F,MAIvBY,SAASgR,eAAe,aAAcga,iBAAiB,SAAS,SAACroB,GAAM,MACrE,IAAIA,EAAE0d,UAAW1d,EAAEyd,SAAwB,IAAbzd,EAAE6/B,OAAhC,CACA7/B,EAAEmC,iBACF8zD,GAAAA,QAAAA,OAGA,IAAM0yC,EAAyB,OAAnB,EAAG1yC,GAAAA,QAAAA,WAAgB,EAAhB,EAAkB7vC,KAC7BuiF,IACF1yC,GAAAA,MAAAA,KAAe,QAAS0yC,GACxBl3F,EAAEwqC,SARgD,CAUtD,IAEI6wD,MACFhwG,GAAE,WACAA,EAAE,QAAQwC,SAAS,gBACrB,GAEJ,EAEA,EAGOkuG,kBAAP,SAAyB7yC,GACvB,OAAOl+D,KAAKq6C,QAAQr1B,QAAQ0mD,GAAgB,CAAExN,WAAAA,GAChD,EAEA,EAQO8yC,uBAAP,SAA8BnvD,GACxBA,EAAQovD,SACVlvG,OAAOkuB,SAAS66C,SAEhB9qE,KAAKk8D,MAAMxvD,KAAKw9D,GAAaroB,EAEjC,EAAC,EAzIkC,CAASsqD,IC7BxC3yC,GAAM,IAAIqxC,GAGhB9oG,OAAOy3D,IAAMA,GAEb,uHCLmC,IAEdkiB,GAAK,WAIxB,WAAmBM,GAAgC,KAHlCA,WAAK,OACdzZ,UAA+B,GAGrCviE,KAAKg8E,MAAQA,CACf,CAAC,kBA8BA,OA9BA,EAEM5Y,UAAP,SAAiCvwD,EAAc0pE,GAAkD,WAK/F,YAL+E,IAAlCA,IAAAA,EAAqC,MAClFv8E,KAAKuiE,UAAUrtD,MAAK,WAClB,EAAK8mE,MAAMr8E,UAAUkT,GAAQ0pE,EAAY20B,GAAAA,UAA4Br+F,EAAM0pE,GAAa20B,GAAAA,UAAyBr+F,EACnH,IAEO7S,IACT,EAAC,EAEMw8E,OAAP,SAAqC3pE,GAAqB,WAKxD,OAJA7S,KAAKuiE,UAAUrtD,MAAK,WAClB,EAAK8mE,MAAMr8E,UAAUkT,GAAQq+F,GAAAA,OAAsBr+F,EACrD,IAEO7S,IACT,EAAC,EAEM08E,QAAP,SAAsC7pE,GAAqB,WAKzD,OAJA7S,KAAKuiE,UAAUrtD,MAAK,WAClB,EAAK8mE,MAAMr8E,UAAUkT,GAAQq+F,GAAAA,QAAuBr+F,EACtD,IAEO7S,IACT,EAAC,EAEDS,OAAA,SAAO+4D,EAAkBwzC,GACvB,IAAK,IAAgC,EAArC,+sBAAuBhtG,KAAKuiE,aAAS,aAAlB,QACRxiE,KAAKC,KAElB,EAAC,EApCuB,GCALmxG,GAAS,6BACpBR,eAAsC,CAAC,CAAC,mBAiB/C,OAfD,EAOA73F,IAAA,SAAIjG,EAAc6sC,GAGhB,OAFA1/C,KAAK2wG,eAAe99F,GAAQ6sC,EAErB1/C,IACT,EAAC,EAEDS,OAAA,SAAO+4D,EAAkBwzC,GACvBvrF,OAAOs+B,OAAQyZ,EAAoCm3C,eAAgB3wG,KAAK2wG,eAC1E,EAAC,EAlB2B,GCCTS,GAAM,6BACjBrwD,OAA6C,CAAC,EAAC,KAC/CswD,QAAuC,CAAC,CAAC,mBAwBhD,OAtBD,EAOAv4F,IAAA,SAAIjG,EAAcwtC,EAAoBX,GAGpC,OAFA1/C,KAAK+gD,OAAOluC,GAAQ,CAAEwtC,KAAAA,EAAMX,UAAAA,GAErB1/C,IACT,EAAC,EAEDsxG,OAAA,SAAOz+F,EAAcrC,GAGnB,OAFAxQ,KAAKqxG,QAAQx+F,GAAQrC,EAEdxQ,IACT,EAAC,EAEDS,OAAA,SAAO+4D,EAAkBwzC,GACvBvrF,OAAOs+B,OAAOyZ,EAAIzY,OAAQ/gD,KAAK+gD,QAC/Bt/B,OAAOs+B,OAAOyZ,EAAIhZ,MAAOxgD,KAAKqxG,QAChC,EAAC,EA1BwB,GCDNtI,GAAK,6BACPC,OAAgD,CAAC,CAAC,mBAgBlE,OAhBkE,EAE5DlwF,IAAP,SAAW9T,EAAcg3E,GAGvB,OAFAh8E,KAAKgpG,OAAOhkG,GAAQg3E,EAEbh8E,IACT,EAAC,EAEDS,OAAA,SAAO+4D,EAAkBwzC,GACvB,IAAK,IAAMhoG,KAAQhF,KAAKgpG,OAAQ,CAC9B,GAAIxvC,EAAImiB,MAAMqtB,OAAOhkG,GACnB,MAAM,IAAI6G,MAAM,mBAAmB7G,EAAI,iDAAiDw0D,EAAImiB,MAAMqtB,OAAOhkG,GAAM6N,KAAI,MAGrH2mD,EAAImiB,MAAMqtB,OAAOhkG,GAAQhF,KAAKgpG,OAAOhkG,EACvC,CACF,EAAC,EAjBuB,GCC1B,UACE02E,MAAAA,GACAy1B,UAAAA,GACAC,OAAAA,GACArI,MAAAA,ICPF,IAAMwI,GAAmB,4DACnBC,GAAqB,OAQ3B,UASE5vE,SAAU,KAWV6vE,YAAW,SAACx+F,GAOV,OANAowD,GAAuBkuC,GAAkBC,IAEzCxxG,KAAK4hC,SAAW5hC,KAAK4hC,UAAY,CAAC,EAElC5hC,KAAK4hC,SAAS3uB,GAASjT,KAAK4hC,SAAS3uB,IAAU,GAExCjT,KAAK4hC,SAAS3uB,EACvB,EAUAxP,QAAO,SAACwP,GAAgB,kCAANqG,EAAI,iCAAJA,EAAI,kBACpB+pD,GAAuBkuC,GAAkBC,IAEzCxxG,KAAKyxG,YAAYx+F,GAAO0D,SAAQ,SAACnD,GAAO,OAAKA,EAAQC,MAAM,EAAM6F,EAAK,GACxE,EAUAvY,GAAE,SAACkS,EAAOO,GACR6vD,GAAuBkuC,GAAkBC,IAEzCxxG,KAAKyxG,YAAYx+F,GAAOiC,KAAK1B,EAC/B,EAWApE,IAAG,SAAC6D,EAAOO,GACT6vD,GAAuBkuC,GAAkBC,IAQzCxxG,KAAKyxG,YAAYx+F,GAAOiC,MANR,SAAV0jE,IACJplE,EAAQC,MAAMzT,KAAM0T,WAEpB1T,KAAKkS,IAAIe,EAAO2lE,EAClB,GAGF,EAUA1mE,IAAG,SAACe,EAAOO,GACT6vD,GAAuBkuC,GAAkBC,IAEzC,IAAM5vE,EAAW5hC,KAAKyxG,YAAYx+F,GAC5BpN,EAAQ+7B,EAAS1gB,QAAQ1N,IAEhB,IAAX3N,GACF+7B,EAAS7d,OAAOle,EAAO,EAE3B,GCrFF,OAAMgH,GAAsB,CAC1B6E,OAAQ,GACRs7B,OAAQ,GACR0kE,YAAa,GACbC,YAAa,GACbC,WAAW,EACXC,YAAa,GACbC,aAAa,EACbC,QAAS,GACTC,sBAAsB,EACtBC,aAAa,EACbC,eAAe,EACfC,WAAW,GAsBb,SAASC,GAAgBv2E,GACvB,OAAOA,EAAOijB,OAAO/yC,MAAM,MAAMtH,OAAS,CAC5C,CAEA,SAAS4tG,GAAOx2E,EAAgB5mB,GAC9B,OAAOvV,MAAMuV,EAAI,GAAGmD,KAAKyjB,EAC3B,CAwDA,SAASy2E,GAA+BruC,GACtC,IAQIsuC,EACAC,EATEC,EAAkBxuC,EAASl9D,MAAMwO,MAAM,EAAG0uD,EAASC,gBACnDwuC,EAAiBzuC,EAASl9D,MAAMwO,MAAM0uD,EAASE,cAE/CwuC,EAAeF,EAAgB7rG,MAAM,QACrCgsG,EAAcF,EAAe9rG,MAAM,QACnCisG,EAA0BF,EAAeA,EAAa,GAAGluG,OAAS,EAClEquG,EAAyBF,EAAcA,EAAY,GAAGnuG,OAAS,EAqBrE,OAhBIguG,EAAgB7rG,MAAM,OAASisG,EAA0B,IAC3DN,EAAmBF,GAAO,KAAM,EAAIQ,IAGlCH,EAAe9rG,MAAM,OAASksG,EAAyB,IACzDN,EAAoBH,GAAO,KAAM,EAAIS,IAGf,MAApBP,IACFA,EAAmB,IAGI,MAArBC,IACFA,EAAoB,IAGf,CAAED,iBAAAA,EAAkBC,kBAAAA,EAC7B,CAyGA,SAASO,GAAqBxiG,GAC5B,IAAMyiG,EAAQziG,EAAKxE,MAAM,MACnBknG,EAAmB,YACnBC,EAAwBF,EAAMtkD,OAAM,SAACykD,GAAI,OAAKF,EAAiB1uG,KAAK4uG,EAAK,IAC3E1kF,EAASukF,EAKb,OAJIE,IACFzkF,EAASukF,EAAMprG,KAAI,SAACurG,GAAI,OAAKA,EAAKxvG,QAAQsvG,EAAkB,GAAG,KAG1D,CACL1iG,KAAMke,EAAOrW,KAAK,MAClBg7F,UAAWF,EAEf,CAEA,SAASG,GAAuB9iG,GAC9B,IAAMyiG,EAAQziG,EAAKxE,MAAM,MAEnBunG,EAA0BN,EAAMtkD,OAAM,SAACykD,GAAI,OAAKA,EAAK3O,WAD/B,KAC8D,IACtF/1E,EAASukF,EAKb,OAJIM,IACF7kF,EAASukF,EAAMprG,KAAI,SAACurG,GAAI,OAAKA,EAAK59F,MAJR,KAIkC9Q,OAAQ0uG,EAAK1uG,OAAO,KAG3E,CACL8L,KAAMke,EAAOrW,KAAK,MAClBg7F,UAAWE,EAEf,CAEA,SAASC,GAAW1tG,EAAeqsG,GACjC,OAAIA,EACK,KAEGrsG,EAAQ,EAAC,IAEvB,CChSe,SAAS2tG,GAAcC,EAAiCloF,GAKrE,ICLkDmoF,EAASt4E,EDKrDu4E,EAAQ,IAAI3sG,OAAOmR,OAAOijB,IAAG,KCLes4E,EDKf,yBCLwBt4E,EDKxB,iCCHjCA,EAAMs4E,EAAQn+F,MAAM,IAEtBm+F,EAAQt4E,IAAMA,EDCqB,GCA5Bs4E,GDAwCnoF,IACzCqoF,EAAU,iBAEhB,OAAO,IAAIt6C,MAAMm6C,EAAQ,CACvBl3F,IAAK,SAACxP,EAAKqvB,GAAY,OAAKrvB,EAAIqvB,IAASrvB,EAAIqvB,EAAKz4B,QAAQgwG,EAAO,MAAMhwG,QAAQiwG,EAAS,IAAI,GAEhG,8GEMqBC,GAAM,8DAiCxB,OAjCwB,mBACzBlvE,KAAA,WACE,MAaI3kC,KAAK0qB,MAZPlqB,EAAO,EAAPA,QACAu4D,EAAQ,EAARA,SACAhyD,EAAK,EAALA,MACAiiB,EAAQ,EAARA,SACA8C,EAAS,EAATA,UACO83C,EAAM,YAIbkwC,aAA2BC,GAV7B,aAUwF,CAAC,EAAC,GAAxEjoF,UAAoCkoF,EAAY,QAAKF,EAAY,QAE9EG,EAAQ,QAGb,OACE,wBAAMnoF,UAAWkyC,EAAU,SAAU+1C,EAAkBC,IAAmBF,GACxE,0BACEhoF,UAAWkyC,EAAU,2BAA4BlyC,EAAW83C,GAC5D7K,SAAUA,EAAWk4B,GAAS,QAASl4B,EAASrpB,KAAK1vC,YAAS8S,EAC9D/L,MAAOA,EACPiiB,SAAUA,GACNirF,GAEHxyF,OAAOvB,KAAK1f,GAASoH,KAAI,SAACkF,GAAG,OAC5B,YAAQ/F,MAAO+F,GAAMtM,EAAQsM,GAAc,KAG9CozD,GAAK,cAAe,CAAEp0C,UAAW,iBAGxC,EAAC,EAjCwB,CAASuvC,yBCXf64C,GAAiB,8DAsBnC,OAtBmC,mBACpCvvE,KAAA,SAAKyd,GACH,MAAoCpiD,KAAK0qB,MAAjCoB,EAAS,EAATA,UAAWnC,EAAE,EAAFA,GAAOe,EAAK,QAS/B,OAPAA,EAAM1lB,OAAN0lB,EAAM1lB,KAAS,QAGY,IAAvB0lB,EAAM3jB,MAAMtC,SACdimB,EAAM3jB,MAAQ2jB,EAAM3jB,MAAMpD,QAAQ,kCAAmC,kBAIrE,SAAKmoB,UAAU,cACb,yBAAOA,UAAWkyC,EAAU,cAAelyC,GAAYnC,GAAIA,GAAQe,IAEnE,UAAMoB,UAAU,kBAAkBg3C,KAAK,gBACpC5C,GAAK,8BAGR,yBAAOp0C,UAAU,sBAAyBpB,EAAK,CAAE1lB,KAAK,WAG5D,EAAC,EAtBmC,CAASq2D,GCO1B84C,GAAgB,8DAYlC,OAZkC,mBACnCxvE,KAAA,SAAKyd,GACH,IAAMgyD,EAAe,EAAH,UAASzvE,KAAI,UAACyd,GAEhC,OAAO,EAAC35C,GAAO,CAAC8H,KAAMvQ,KAAK0qB,MAAM2pF,aAAeh0C,GAAYje,EAAM9sB,WAAY8+E,EAChF,EAAC,EAEM74C,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhBA,EAAMoB,UAAYpB,EAAMoB,WAAa,mCACrCpB,EAAM2pF,YAAc3pF,EAAMvhB,KAC5B,EAAC,EAZkC,CAASs6D,ICiF9C,UACE6wC,UAAAA,GACA7zG,OAAQA,EACR+oG,QAASA,GACTT,MAAOA,GACP,0BAA2BrkC,GAC3B,gBAAiB6vC,GACjB,qBAAsBvkB,GACtB,4BAA6BvQ,GAC7B,uBAAwBirB,GACxB,iBAAkBjuC,EAClB,cC9Fa,SAAe+3C,GACF,IADqB,IACzCC,EAAK,+EAASD,GAAM,mBADaE,EAAM,iCAANA,EAAM,kBAO7C,OAJAA,EAAO/9F,SAAQ,SAACwgB,GACd1V,OAAOs+B,OAAO00D,EAAM90G,UAAWw3B,EACjC,IAEOs9E,CACT,EDuFE,kBAAmBr0C,GACnB,iBAAkBv3B,GAClB,mBAAoBm7B,GACpB,0BNxEa,SAA2BC,EAA+B0wC,GAEvE1wC,EAASt4D,QACTgpG,EAAYlzF,OAAOs+B,OAAO,CAAC,EAAGlzC,GAAU8nG,GAExC,IAEIlmF,EAFEle,EAAO0zD,EAASl9D,MAAMwO,MAAM0uD,EAASC,eAAgBD,EAASE,cAIlE11C,EADEkmF,EAAU1C,aAAe0C,EAAUzC,cAqQzC,SAAmBjuC,EAA+BlxD,GAChD,IAAM6hG,EAAqB3wC,EAASC,iBAAmBD,EAASE,aAC5DD,EAAiBD,EAASC,eAC1BC,EAAeF,EAASE,cApO9B,SAA+BF,GAG7B,IAFA,IAAM+uC,EAAQ/uC,EAASl9D,MAAMgF,MAAM,MAC/B2jD,EAAU,EACL7pD,EAAQ,EAAGA,EAAQmtG,EAAMvuG,OAAQoB,IAAS,CACjD,IAAMgvG,EAAa7B,EAAMntG,GAAOpB,OAAS,EACrCw/D,EAASC,gBAAkBxU,GAAWuU,EAASC,eAAiBxU,EAAUmlD,IAC5E5wC,EAASC,eAAiBxU,GAExBuU,EAASE,cAAgBzU,GAAWuU,EAASE,aAAezU,EAAUmlD,IACxE5wC,EAASE,aAAezU,EAAUmlD,EAAa,GAEjDnlD,GAAWmlD,CACb,CACF,CA0NEC,CAAsB7wC,GAEtB,IAAM8wC,EAAe9wC,EAASl9D,MAAMwO,MAAM0uD,EAASC,eAAgBD,EAASE,cAI5E,EA5BF,SAAgCpxD,EAAkBgiG,GAChD,IAAIC,EACAC,EACAC,EAUJ,OANEA,EAHEniG,EAAMk/F,aAER+C,EAAwB3B,IADxB4B,EAAalC,GAAqBgC,IACwBxkG,OACrBA,MAGrCykG,EAAwBjC,IADxBkC,EAAa5B,GAAuB0B,IACoBxkG,OACnBA,KAEhC,CAAC0kG,EAAYD,EAAuBE,EAC7C,CAc4DC,CAAuBpiG,EAAOgiG,GAAjFE,EAAU,KAAED,EAAqB,KAAEE,EAAY,KAEhDE,EAAgBF,EAAanpG,MAAM,MAAMnE,KAAI,SAACb,EAAOlB,GACzD,MAAO,GAAG0tG,GAAW1tG,EAAOkN,EAAMm/F,eAAiBnrG,CACrD,IAEMsuG,EAAoBD,EAAct1G,QAAO,SAACw1G,EAAeC,EAAeC,GAC5E,OAAOF,EAAgB/B,GAAWiC,EAAcziG,EAAMm/F,eAAeztG,MACvE,GAAG,GAEGgxG,EAA+BL,EAAct1G,QAAO,SAACw1G,EAAeC,EAAeC,GACvF,OAAOF,EAAgB/B,GAAWiC,GAAeziG,EAAMm/F,eAAeztG,MACxE,GAAG,GAEH,GAAIwwG,EAAW7B,UAQb,OAPIwB,EAEFzwC,EADAD,EAAiBjhE,KAAKC,IAAIghE,EAAiBqvC,GAAW,EAAGxgG,EAAMm/F,eAAeztG,OAAQ,IAGtFy/D,EAAiBD,EAASC,eAC1BC,EAAeF,EAASE,aAAekxC,GAElC,CAAE9kG,KAAM2kG,EAAchxC,eAAAA,EAAgBC,aAAAA,GAG/C,MAAgDmuC,GAA+BruC,GAAvEsuC,EAAgB,EAAhBA,iBAAkBC,EAAiB,EAAjBA,kBACpBjiG,EAAOgiG,EAAmB6C,EAAch9F,KAAK,MAAQo6F,EAe3D,OAbIoC,EAEFzwC,EADAD,EAAiBjhE,KAAKC,IAAIghE,EAAiBqvC,GAAW,EAAGxgG,EAAMm/F,eAAeztG,OAAS8tG,EAAiB9tG,OAAQ,GAG5GuwG,EAAsB5B,WACxBlvC,EAAiBjhE,KAAKC,IAAI+gE,EAASC,eAAiBquC,EAAiB9tG,OAAQ,GAC7E0/D,EAAeF,EAASE,aAAeouC,EAAiB9tG,OAAS4wG,EAAoBI,IAErFvxC,EAAiBjhE,KAAKC,IAAI+gE,EAASC,eAAiBquC,EAAiB9tG,OAAQ,GAC7E0/D,EAAeF,EAASE,aAAeouC,EAAiB9tG,OAAS4wG,GAI9D,CAAE9kG,KAAAA,EAAM2zD,eAAAA,EAAgBC,aAAAA,EACjC,CA1TauxC,CAAUzxC,EAAU0wC,GACpBA,EAAU/C,WAAaQ,GAAgB7hG,GA2KpD,SAAwB0zD,EAA+B/+C,GACrD,IAAQxT,EAAmEwT,EAAnExT,OAAQs7B,EAA2D9nB,EAA3D8nB,OAAQ0kE,EAAmDxsF,EAAnDwsF,YAAaC,EAAsCzsF,EAAtCysF,YAAaK,EAAyB9sF,EAAzB8sF,qBAC9CzhG,EAAO0zD,EAASl9D,MAAMwO,MAAM0uD,EAASC,eAAgBD,EAASE,cAC9DD,EAAiBD,EAASC,eAC1BC,EAAeF,EAASE,aACtB6uC,EAAQziG,EAAKxE,MAAM,MAErB4pG,EAAcjE,EAAYjtG,OAAS,EAAIitG,EAAchgG,EACrDkkG,EAAcjE,EAAYltG,OAAS,EAAIktG,EAAcgE,GAAejkG,EAASs7B,EAAS,GAI1F,GAHkBgmE,EAAMtkD,OAAM,SAACykD,GAAI,OAAKA,EAAK3O,WAAWmR,IAAgBxC,EAAK7uC,SAASsxC,EAAY,IAKhGzxC,EAAeD,GADf3zD,EAAOyiG,EAAMprG,KAAI,SAACurG,GAAI,OAAKA,EAAK59F,MAAMogG,EAAYlxG,OAAQ0uG,EAAK1uG,OAASmxG,EAAYnxG,OAAO,IAAE2T,KAAK,OAC7D3T,YAIrC,GADA8L,EAAOyiG,EAAMprG,KAAI,SAACurG,GAAI,OAAKwC,EAAcxC,EAAOyC,CAAW,IAAEx9F,KAAK,MAC9D45F,GAAwC,KAAhB4D,EAAoB,CAE9C,MAAgDtD,GAA+BruC,GAAvEsuC,EAAgB,EAAhBA,iBAAkBC,EAAiB,EAAjBA,kBAE1BruC,GADAD,GAAkBquC,EAAiB9tG,QACH8L,EAAK9L,OACrC8L,EAAOgiG,EAAmBhiG,EAAOiiG,CACnC,CAGF,MAAO,CAAEjiG,KAAAA,EAAM2zD,eAAAA,EAAgBC,aAAAA,EACjC,CAtMa0xC,CAAe5xC,EAAU0wC,GAqGtC,SAAoB1wC,EAA+B/+C,GACjD,IAGQxT,EAAsGwT,EAAtGxT,OAAQs7B,EAA8F9nB,EAA9F8nB,OAAQ0kE,EAAsFxsF,EAAtFwsF,YAAaC,EAAyEzsF,EAAzEysF,YAAaE,EAA4D3sF,EAA5D2sF,YAAaC,EAA+C5sF,EAA/C4sF,YAAaC,EAAkC7sF,EAAlC6sF,QAASC,EAAyB9sF,EAAzB8sF,qBAC/E5tC,EAAyBH,EAASC,eAClC4xC,EAAuB7xC,EAASE,aAElC4wC,EAAe9wC,EAASl9D,MAAMwO,MAAM0uD,EAASC,eAAgBD,EAASE,cACtEwxC,EAAcvD,GAAgB2C,IAAiBrD,EAAYjtG,OAAS,EAAOitG,EAAW,KAAOhgG,EAE7FkkG,EAAcxD,GAAgB2C,IAAiBpD,EAAYltG,OAAS,EAAI,KAAKktG,EAAgBgE,IAAgBjkG,EAASs7B,EAAS,GAGnI,GAAI8kE,EAAa,CACf,IAAMW,EAAkBxuC,EAASl9D,MAAMk9D,EAASC,eAAiB,GACjC,IAA5BD,EAASC,gBAA2C,MAAnBuuC,GAA4BA,EAAgB7rG,MAAM,QACrF+uG,EAAc,IAAIA,EAEtB,CACAZ,EAzEF,SAA4B9wC,EAA+B0xC,EAAqBC,EAAqBhE,GACnG,QAD4G,IAATA,IAAAA,GAAY,GAC3G3tC,EAASC,iBAAmBD,EAASE,aACvCF,EAASC,eAlCb,SAA4B3zD,EAActJ,GAExC,IADA,IAAIpB,EAAQoB,EACLsJ,EAAK1K,IAA6B,MAAnB0K,EAAK1K,EAAQ,KAAe0K,EAAK1K,EAAQ,GAAGe,MAAM,OACtEf,IAEF,OAAOA,CACT,CA4B8BkwG,CAAmB9xC,EAASl9D,MAAOk9D,EAASC,gBACtED,EAASE,aA3Bb,SAA0B5zD,EAActJ,EAAW2qG,GAGjD,IAFA,IAAI/rG,EAAQoB,EACN+uG,EAAapE,EAAY,KAAO,KAC/BrhG,EAAK1K,KAAW0K,EAAK1K,GAAOe,MAAMovG,IACvCnwG,IAEF,OAAOA,CACT,CAoB4BowG,CAAiBhyC,EAASl9D,MAAOk9D,EAASE,aAAcytC,OAC3E,CACL,IAAMsE,EAAyBjyC,EAASC,eAAiByxC,EAAYlxG,OAC/D0xG,EAAuBlyC,EAASE,aAAeyxC,EAAYnxG,OAC3D2xG,EAAmBnyC,EAASl9D,MAAMwO,MAAM2gG,EAAwBjyC,EAASC,kBAAoByxC,EAC7FU,EAAiBpyC,EAASl9D,MAAMwO,MAAM0uD,EAASE,aAAcgyC,KAA0BP,EACzFQ,GAAoBC,IACtBpyC,EAASC,eAAiBgyC,EAC1BjyC,EAASE,aAAegyC,EAE5B,CACA,OAAOlyC,EAASl9D,MAAMwO,MAAM0uD,EAASC,eAAgBD,EAASE,aAChE,CA0DiBmyC,CAAmBryC,EAAU0xC,EAAaC,EAAa1wF,EAAI0sF,WAC1E,IAAI1tC,EAAiBD,EAASC,eAC1BC,EAAeF,EAASE,aACtBoyC,EAAiB1E,EAAYptG,OAAS,GAAKmxG,EAAY10F,QAAQ2wF,IAAgB,GAAKkD,EAAatwG,OAAS,EAChH,GAAIutG,EAAsB,CACxB,IAAMwE,EAAMlE,GAA+BruC,GAG3C0xC,EAFmBa,EAAIjE,iBAEU7gG,EACjCkkG,GAFoBY,EAAIhE,iBAG1B,CAEA,GAAIuC,EAAavQ,WAAWmR,IAAgBZ,EAAazwC,SAASsxC,GAAc,CAC9E,IAAMa,EAAkB1B,EAAax/F,MAAMogG,EAAYlxG,OAAQswG,EAAatwG,OAASmxG,EAAYnxG,QACjG,GAAI2/D,IAA2B0xC,EAAsB,CACnD,IAAIxzG,EAAW8hE,EAAyBuxC,EAAYlxG,OACpDnC,EAAWW,KAAKC,IAAIZ,EAAU4hE,GAE9BA,EAAiBC,EADjB7hE,EAAWW,KAAK4T,IAAIvU,EAAU4hE,EAAiBuyC,EAAgBhyG,OAEjE,MACE0/D,EAAeD,EAAiBuyC,EAAgBhyG,OAElD,MAAO,CAAE8L,KAAMkmG,EAAiBvyC,eAAAA,EAAgBC,aAAAA,EAClD,CAAO,GAAKoyC,EAaL,OAAIxE,EAAQttG,OAAS,GAAKswG,EAAanuG,MAAMmrG,GAI3C,CAAExhG,KAFeolG,GADxBC,EAAcA,EAAYjyG,QAAQkuG,EAAakD,IAGf7wC,eADhCA,EAAiBC,EAAeD,EAAiByxC,EAAYlxG,OACb0/D,aAAAA,GAKzC,CAAE5zD,KAHeolG,EAAcZ,EAAea,EAGrB1xC,eAFhCA,EAAiBA,EAAiByxC,EAAYlxG,OAASswG,EAAatwG,OAASmxG,EAAY10F,QAAQ2wF,GAEjD1tC,aADhDA,EAAeD,EAAiB2tC,EAAYptG,QApB5C,IAAIgyG,EAAkBd,EAAcZ,EAAea,EACnD1xC,EAAiBE,EAAyBuxC,EAAYlxG,OACtD0/D,EAAe2xC,EAAuBH,EAAYlxG,OAClD,IAAMiyG,EAAkB3B,EAAanuG,MAAM,cAC3C,GAAIse,EAAIitF,WAAauE,EAAiB,CACpC,IAAMC,EAAoBD,EAAgB,IAAM,GAC1CE,EAAqBF,EAAgB,IAAM,GACjDD,EAAkBE,EAAoBhB,EAAcZ,EAAaj2D,OAAS82D,EAAcgB,EACxF1yC,GAAkByyC,EAAkBlyG,OACpC0/D,GAAgByyC,EAAmBnyG,MACrC,CACA,MAAO,CAAE8L,KAAMkmG,EAAiBvyC,eAAAA,EAAgBC,aAAAA,EAYpD,CAtKa0yC,CAAW5yC,EAAU0wC,GAGhC3wC,GAAWC,EAAUx1C,EACvB,EMwDE,eAAgBm7E,GAChB,qBAAsB1wB,GACtB,qBAAsBsxB,GACtB,yBAA0BjqC,GAC1B,eAAgB1kC,EAChB,wBAAyBymC,GACzB,qBAAsBsL,GACtB,gBAAiBhhB,EACjB,uBAAwB4kB,GACxB,sBAAuBs5B,GACvB,eAAgB19C,GAChB,mBAAoBoO,EACpB,kCAAmCzB,EACnC,qBAAsBZ,EACtB,sBAAuBq6C,GACvB,kBAAmBx1C,EACnB,oBAAqBqC,GACrB,qBAAsBsV,GACtB,kBAAmB00B,GACnB,iBAAkBpZ,GAClB,yBAA0B6lB,EAC1B,iBAAkBx6C,EAClB,kBAAmBy6C,EACnB,eAAgB/5B,GAChB,sBAAuB6J,GACvB,cAAeokB,GACf,cAAe5jB,GACf,oBAAqB5J,GACrB,eAAgBqK,GAChB,eAAgB+iB,GAChBxvC,UAAWA,EACX27C,SE5HoC,6BAI1Bz2G,aAAO,oBAgDjB,OA9CA,EAaOF,EAAC,+GAAR,SAASgE,GACP,IAAMlD,EAAWd,EAAEL,KAAKO,SAExB,OAAO8D,EAAWlD,EAASN,KAAKwD,GAAYlD,CAC9C,IAEA,EAYOg+C,OAAP,WAAyD,WACjDmhB,EAAOtgE,KAAK2kC,OAElB27B,EAAK51C,MAAQ41C,EAAK51C,OAAS,CAAC,EAE5B,IAAMusF,EAAmB32C,EAAK51C,MAAMy3B,SAOpC,OALAme,EAAK51C,MAAMy3B,SAAW,SAACC,GACrB,EAAK7hD,QAAU6hD,EAAMqF,IACjBwvD,GAAkBA,EAAiBxjG,MAAM,EAAM,CAAC2uC,GACtD,EAEOke,CACT,EAEA,EApDoC,GF6HpC4nC,WAAYA,GACZ,0BAA2B3F,GAC3B,kBAAmB5mC,EACnB,oBAAqBw1B,GACrB,mBAAoB9T,GACpB,8BAA+B3a,GAC/B,yBAA0BoN,GAC1B,uBAAwB1S,EACxB,sBAAuBj5D,GACvB,2BAA4Bi0E,GAC5B,+BAAgCwqB,GAChC,sBAAuBxR,GACvB,oBAAqByiB,GACrB,wBAAyBxE,GACzB,mBAAoB7mC,GACpB,kBAAmBnmB,EACnB,wBAAyBg5B,GACzB,sBAAuB2V,GACvB,+BAAgCkjB,GAChC,4BAA6B34B,GAC7B,0BAA2B8kB,GAC3B,oBAAqB58B,GACrB,mBAAoBoF,GACpB,wBAAyB+e,GACzB,wBAAyBhhB,GACzB,8BAA+ButC,GAC/B,qBAAsB1rG,GACtB,2BAA4B0/E,GAC5B,wBAAyB+K,GACzBxX,MAAOA,GACPywB,YAAaA,GACb,mBAAoB3gB,GACpB,iBAAkB/sB,EAClB,eAAgByB,GAChB,oBAAqBg3C,GACrB,0BGpKa,SAAyBv5C,GACtC,GAAqB,IAAjBA,EAAMl5D,OACR,OAAO+0D,EAAIiH,WAAWC,MAAM,2BAA4B,CACtDj9C,MAAOk6C,EAAM,GACb74C,OAAQ64C,EAAM,KAEX,GAAIA,EAAMl5D,QAAU,EAAG,CAI5B,IAAMqgB,EAAS64C,EACZpoD,MAAM,EAAGooD,EAAMl5D,OAAS,GACxB3E,QAAO,SAACknB,EAAM/E,GAAI,OAAK+E,EAAK7mB,OAAO,CAAC8hB,EAAMu3C,EAAIiH,WAAWC,MAAM,8BAA8B,GAAE,IAC/FnrD,MAAM,GAAI,GAEb,OAAOikD,EAAIiH,WAAWC,MAAM,6BAA8B,CACxDj9C,MAAOk6C,EAAM,GACb74C,OAAAA,EACAqyF,MAAOx5C,EAAMA,EAAMl5D,OAAS,IAEhC,CAEA,OAAOk5D,CACT,EH8IE,oBAAqBoC,GACrB,mBAAoBvkB,GACpB,qBAAsByvC,GACtB,oBAAqBztB,EACrB,4BAA6B2f,GAC7B,4BAA6BwV,GAC7B,4BAA6B5D,GAC7B,2BAA4B6c,GAC5B,2BAA4BH,GAC5B,mBAAoB/vC,GIvLtB,IAQqB07C,GAAW,8DAqB7B,OArB6B,SACvB77C,UAAP,SAAiB7wC,GACfA,EAAMoB,UAAYkyC,EAAUtzC,EAAMoB,UAAW,eAE7CpB,EAAM43B,QAAU,WACd,IAEMrC,EAAU5/C,EAAE0B,QAElBA,OAAOw5C,KACLie,GAAAA,MAAAA,UAAoB,WAAa9uC,EAAM21B,KACvC,aACA,6BAESJ,EAAQ/9C,SAAW,EAAIA,KAFhC,UAGU+9C,EAAQrxC,QAAU,EAAIA,KAHhC,yCAMJ,EAEA,EAAM2sD,UAAS,UAAC7wC,EAClB,EAAC,EArB6B,CAAS+4C,ICGpB4zC,GAAW,8DAe7B,OAf6B,mBAC9B1yE,KAAA,WACE,IAAMwjC,EAAOnoE,KAAK0qB,MAAMy9C,KAClBrb,EAAOqb,EAAKrb,OACZ12B,EAAiC,YAAvB+xC,EAAKjxB,eAA+BixB,EAAKyH,eACnDD,EAAUv5C,EAAU2pC,GAAU3pC,EAASp2B,KAAK0qB,MAAMq1C,UAAW,KAAO,GAE1E,OACE,EAAC1d,EAAI,CAACv2B,UAAU,cAAcsE,KAAMopC,GAAAA,MAAAA,KAAe2O,GAAO7lB,QAAStiD,KAAK0qB,MAAM43B,SAC5E,UAAMx2B,UAAU,uBACb2yC,EAAO3R,GACPtR,GAASsR,GAAK,IAAE,UAAMhhC,UAAU,uBAAuB6jD,IAIhE,EAAC,EAf6B,CAAStU,GCgEzC,SAAe55C,OAAOs+B,OAAO0zD,GAAQ,CACnC,qBAAsBnsB,GAEtB,4BAA6B7H,GAC7B,iBAAkB5S,GAClB,gBAAiB1S,EACjB,2BAA4BgU,GAC5B,+BAAgCgoB,GAChC,qBAAsBtL,GACtB,aAAclwB,EACd,0BAA2B+J,GAC3B,uBAAwB2rC,GACxB,uBAAwBtsB,GACxB,6BAA8BoM,GAC9B,2BAA4B2f,GAC5B,+BAAgCJ,GAChC,yBAA0Bt2B,GAC1B,qBAAsBu2B,GACtB,+BAAgChb,GAChC,4BAA6BhM,GAC7B,4BAA6Bjd,GAC7B,gCAAiCmF,GACjC,wBAAyBjG,GACzB,0BAA2BtD,GAC3B,iCAAkCsC,GAClC,0BAA2Bid,GAC3B,yBAA0BuwB,GAC1B,iCAAkCtmB,GAClC,sBAAuB7L,GACvB,6BAA8B3J,GAC9B,2BAA4BF,GAC5B,wBAAyB0Q,GACzB,wBAAyBtZ,GACzB,iCAAkCqf,GAClC,uBAAwBrE,GACxB,2CAA4CxG,GAC5C,qCAAsC7F,GACtC,6BAA8BwC,GAC9B,4BAA6BG,GAC7B,4BAA6B/T,GAC7B,8BAA+BsC,GAC/B,0BAA2BuX,GAC3B,kBAAmBvC,GACnB,0BAA2B4K,GAC3B,0BAA2B9vB,GAC3B,8BAA+B4vB,GAC/B,mCAAoC5S,GACpC,sBAAuB8J,GACvB,sBAAuBiC,GACvB,sBAAuBhC,GACvB,+BAAgC7F,GAChC,8BAA+BoS,GAC/B,8BAA+BpE,GAC/B,yBAA0BgmB,GAC1B,uBAAwB1qB,GACxB,4BAA6B1uB,EAC7B,sBAAuBwtB,GACvB,mCAAoCsB,GACpC,gCAAiCM,GACjC,0BAA2BpjB,GAC3B,8BAA+BiU,GAC/B,yBAA0BkP,GAC1B,yBAA0BljB,GAC1B,yBAA0BgiB,GAC1B,iCAAkCta,GAClC,2BAA4B5J,GAC5B,+BAAgC0qB,GAChC,gCAAiC5c,GACjC,8BAA+BoR,GAC/B,mCAAoC7b,GACpC,oBAAqBmW,GACrB,gCAAiC3T,GACjC,yBAA0B8D,GAC1B,2BAA4B4c,GAC5B,8BAA+B4E,GAC/B,mCAAoCJ,GACpChyC,OAAQA,GACRyvD,iBAAkBA,KC/IpB8G,GAAAA,IAAgB99C,GAET,IAAMi6C,GAASD,GAAc8D,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCd/C,IAAI9+C,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,sDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAnCgE,EAAa,WAChC,WAAYj+C,GACVx5D,KAAKw5D,IAAMA,EAOXx5D,KAAK0+D,SAAU,CACjB,CAyBC,OAvBD,YAIAh7B,KAAA,WAAO,WACD1jC,KAAKoqB,QAAUpqB,KAAKw5D,IAAIskB,QAAQhxB,KAAKsW,UAAU,kBAInDpjE,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEFx/C,KAAKw5D,IAAImiB,MACN96E,KAAK,SACLo2B,MAAK,SAACygF,GACL,EAAKl+C,IAAIskB,QAAQhxB,KAAKivB,eAAe,CAAE47B,aAAc,IACrD,EAAKvtF,MAAQstF,EAAMhiG,MAAK,SAAChM,EAAGE,GAAC,OAAKA,EAAEolE,YAActlE,EAAEslE,WAAW,GACjE,IAAE,OACK,WAAO,IACb/3C,MAAK,WACJ,EAAKynC,SAAU,EACf1pD,EAAEwqC,QACJ,IACJ,EAAC,EAnC+B,GCAlC,MAAM,EAA+B+3D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCQnCmE,EAAa,uFAyJ/B,OAzJ+B,EAChCr1D,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKy5C,SAAU,EAEfz5C,KAAKglD,OAASoI,IAAO,IACrBptD,KAAK63G,aAAezqD,IAAO,GAC7B,EAAC,EAEDthC,UAAA,WACE,MAAO,6BACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,qCAC9B,EAAC,EAEDpjC,QAAA,WACE,OAAIp2B,KAAKy5C,QAEL,SAAK3tB,UAAU,cACb,SAAKA,UAAU,uBACb,OAAGA,UAAU,YAAY0tC,IAAAA,WAAAA,MAAqB,sDAC9C,SAAK1tC,UAAU,cACb,EAAC,IAAM,CAACA,UAAU,uCAAuCw2B,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,OAC9Ew5D,IAAAA,WAAAA,MAAqB,mDAShC,SAAK1tC,UAAU,cACb,SAAKA,UAAU,uBACb,SAAKA,UAAU,cACb,aAAM9rB,KAAK83G,cAAc70F,YAG3B,SAAK6I,UAAU,cACb,EAAC,IAAM,CAACA,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,QAAS11C,UAAWhpB,KAAKglD,UAC3GwU,IAAAA,WAAAA,MAAqB,iDAMlC,EAAC,EAEDs+C,YAAA,WACE,IAAMn6C,EAAQ,IAAIlB,KACZs7C,EAAgBv+C,IAAAA,MAAAA,UAAoB,iBA4E1C,OA1EAmE,EAAM7kD,IACJ,YACA,WAAOgT,UAAU,YACf,WAAO9mB,KAAK,QAAQ6N,KAAK,SAASyd,QAA2B,cAAlBtwB,KAAKglD,SAA0Bj+C,MAAM,YAAYu7C,QAAS2uC,IAAS,QAASjxF,KAAKglD,UAC5H,gBAASwU,IAAAA,WAAAA,MAAqB,wDAC7BA,IAAAA,WAAAA,MAAqB,sDACH,cAAlBx5D,KAAKglD,UACJ,cACEl5B,UAAU,cACV84C,YAAapL,IAAAA,WAAAA,MAAqB,2DAClCzyD,MAAO/G,KAAK63G,eACZ5+C,QAASg4B,IAAS,QAASjxF,KAAK63G,iBAItC,IAGFl6C,EAAM7kD,IACJ,gBACA,WAAOgT,UAAU,YACf,WACE9mB,KAAK,QACL6N,KAAK,SACLyd,QAA2B,kBAAlBtwB,KAAKglD,SACdj+C,MAAM,gBACNu7C,QAAS2uC,IAAS,QAASjxF,KAAKglD,UAElC,gBAASwU,IAAAA,WAAAA,MAAqB,4DAC7BA,IAAAA,WAAAA,MAAqB,yDAA0D,CAC9E9vD,EAAGquG,EAAgB,OAAG3nF,KAAM2nF,EAAep3G,OAAO,gBAAcmS,IAE/C,kBAAlB9S,KAAKglD,UACJ,cACEl5B,UAAU,cACV84C,YAAapL,IAAAA,WAAAA,MAAqB,2DAClCzyD,MAAO/G,KAAK63G,eACZ5+C,QAASg4B,IAAS,QAASjxF,KAAK63G,iBAItC,IAGFl6C,EAAM7kD,IACJ,OACA,WAAOgT,UAAU,YACf,WAAO9mB,KAAK,QAAQ6N,KAAK,SAASyd,QAA2B,SAAlBtwB,KAAKglD,SAAqBj+C,MAAM,OAAOu7C,QAAS2uC,IAAS,QAASjxF,KAAKglD,UAClH,gBAASwU,IAAAA,WAAAA,MAAqB,mDAC7BA,IAAAA,WAAAA,MAAqB,iDACH,SAAlBx5D,KAAKglD,UACJ,cACEl5B,UAAU,cACV84C,YAAapL,IAAAA,WAAAA,MAAqB,2DAClCzyD,MAAO/G,KAAK63G,eACZ5+C,QAASg4B,IAAS,QAASjxF,KAAK63G,iBAItC,IAGFl6C,EAAM7kD,IACJ,QACA,WAAOgT,UAAU,YACf,WAAO9mB,KAAK,QAAQ6N,KAAK,SAASyd,QAA2B,UAAlBtwB,KAAKglD,SAAsBj+C,MAAM,QAAQu7C,QAAS2uC,IAAS,QAASjxF,KAAKglD,UACpH,gBAASwU,IAAAA,WAAAA,MAAqB,oDACX,UAAlBx5D,KAAKglD,UACJ,cAAUl5B,UAAU,cAAc/kB,MAAO/G,KAAK63G,eAAgB5+C,QAASg4B,IAAS,QAASjxF,KAAK63G,iBAGlG,IAGKl6C,CACT,EAAC,EAEDuH,SAAA,SAAS3hE,GAAG,WACVA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEflF,IAAAA,MAAAA,aACgB,SACb0O,KACC,CACEljB,OAA0B,UAAlBhlD,KAAKglD,SAAuB,KAAOhlD,KAAKglD,SAChD6yD,aAAc73G,KAAK63G,eACnB5vC,cAAe,CACbnb,KAAM0M,IAAAA,QAAAA,KACN2O,KAAMnoE,KAAK0qB,MAAMy9C,OAGrB,CAAE6B,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAEnCi3B,MAAK,kBAAO,EAAKwiB,SAAU,CAAI,IAAE,OAC3B,WAAO,IACbxiB,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,MAC3B,EAAC,EAzJ+B,CAAS6oE,KCD5B,SAAS,KACtBpoE,EAAAA,EAAAA,QAAO6mF,IAAc,gBAAgB,SAAU3pB,EAAOwK,IAChDA,EAAK8D,YAAqC,YAAvB9D,EAAKjxB,eAAgCixB,EAAK6vC,WAEjEr6C,EAAM7kD,IACJ,OACA,EAAC,IAAM,CAAConD,KAAK,cAAc5d,QAAS,kBAAMkX,IAAAA,MAAAA,KAAeo+C,EAAe,CAAEzvC,KAAAA,GAAO,GAC9E3O,IAAAA,WAAAA,MAAqB,iDAG5B,GACF,CClBA,MAAM,EAA+B+9C,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0C,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCSnCwE,EAAQ,uFAsD1B,OAtD0B,EAC3B11D,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GACbpiD,KAAKq4B,MAAQr4B,KAAK0qB,MAAM2N,KAC1B,EAAC,EAEDsM,KAAA,WACE,IAAM+yE,EAAQ13G,KAAKq4B,MAAMjO,OAAS,GAElC,OACE,SAAK0B,UAAU,6BACb,SAAKA,UAAU,2BACb,QAAIA,UAAU,2CAA2C0tC,IAAAA,WAAAA,MAAqB,4CAEhF,SAAK1tC,UAAU,4BACb,QAAIA,UAAU,6BACX4rF,EAAMjzG,OACLizG,EAAM9vG,KAAI,SAACwvB,GACT,IAAM+wC,EAAO/wC,EAAK+wC,OAElB,OACE,YACE,EAAC,IAAI,CACH/3C,KAAMopC,IAAAA,MAAAA,KAAe2O,GACrBr8C,UAAU,oBACVw2B,QAAS,SAAC/+C,GACRi2D,IAAAA,MAAAA,MAAkB2O,EAClB5kE,EAAEi8C,QAAS,CACb,GAECif,IAAO0J,EAAKrb,QACZoT,IAAK,cAAe,CAAEp0C,UAAW,sBAClC,UAAMA,UAAU,wBACb0tC,IAAAA,WAAAA,MAAqB,6CAA8C,CAClEhe,SAAUA,IAAS2sB,EAAKrb,QACxB7iD,GAAI,aACJi0D,WAAYiK,EAAKjK,aAAa/0D,WAGjCi3D,IAAUhpC,EAAK43C,aAChB,SAAKljD,UAAU,wBAAwBq8C,EAAKyH,iBAIpD,IACG5vE,KAAKq4B,MAAMqmC,QAGd,EAAC,IAAgB,CAAC5yC,UAAU,4BAF5B,SAAKA,UAAU,0BAA0B0tC,IAAAA,WAAAA,MAAqB,kDAQ1E,EAAC,EAtD0B,CAAS6B,KCJjB68C,EAAa,uEACzB38C,UAAP,SAAiB7wC,GACfA,EAAMo2C,MAAQp2C,EAAMo2C,OAAStH,IAAAA,WAAAA,MAAqB,4CAClD9uC,EAAMw1C,KAAOx1C,EAAMw1C,MAAQ,cAE3B,EAAM3E,UAAS,UAAC7wC,EAClB,EAAC,kBAoBA,OApBA,EAED02C,QAAA,WACE,OACE,SAAKt1C,UAAW,iBAAmB9rB,KAAK0qB,MAAMm2C,cAAeve,QAAStiD,KAAKu/E,UAAU7vC,KAAK1vC,OACvFA,KAAKg7D,SAAW,EAACi9C,EAAQ,CAAC5/E,MAAOr4B,KAAK0qB,MAAM2N,QAGnD,EAAC,EAEDmnD,UAAA,WACExqE,EAAEwrC,MAAM1kC,IAAI09C,IAAAA,MAAU,SACxB,EAAC,EAED8lB,eAAA,WACE,OAAO9lB,IAAAA,MAAAA,MAAkBA,IAAAA,MAAAA,MAAAA,OAAyBA,IAAAA,MAAAA,UAAoB,YACxE,EAAC,EAED6lB,YAAA,WACE,OAAO7lB,IAAAA,QAAAA,KAAAA,UAA2B,eACpC,EAAC,EA1B+B,CAAS2lB,KCA5B,SAAS,KACtB1+E,EAAAA,EAAAA,QAAOkjF,IAAAA,UAA2B,SAAS,SAAUhmB,GAC/CnE,IAAAA,MAAAA,UAAoB,iBACtBmE,EAAM7kD,IAAI,QAAS,EAACo/F,EAAa,CAAC7/E,MAAOmhC,IAAAA,QAAe,GAE5D,GACF,CCXA,MAAM,EAA+B+9C,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCQzC,SAAS,KACtBhzG,EAAAA,EAAAA,QAAO4mF,IAAAA,UAAgB,gBAAgB,SAAU38D,GAC3C1qB,KAAK0qB,MAAMy9C,KAAKuvC,QAAQjzG,SAC1BimB,EAAMoB,WAAa,iBAEvB,IAEAu7D,IAAAA,UAAAA,YAA6B,SAAUlkF,GACrC,IAAMglE,EAAOnoE,KAAK0qB,MAAMy9C,KA4BxB,cA1BOA,EAAKxmE,KAAKsmE,cAAcyvC,MAE/B13G,KAAK8tE,QAAQrL,aAETjJ,IAAAA,MAAAA,OACFA,IAAAA,MAAAA,MAAAA,MAAqB,SAACpiC,EAAMnwB,GAC1B,GAAImwB,EAAK+wC,SAAWA,EAAM,CAGxB,GAFA3O,IAAAA,MAAAA,MAAAA,OAAuBvyD,EAAG,GAEtBuyD,IAAAA,MAAAA,QAAoB2O,EAAM,CAC5B,IAAIj/C,EAAOswC,IAAAA,MAAAA,MAAgBvyD,GAI3B,GAFKiiB,IAAMA,EAAOswC,IAAAA,MAAAA,MAAAA,IAEdtwC,EAAM,CACR,IAAMivF,EAAWjvF,EAAKi/C,OACtB3O,IAAAA,MAAAA,MAAkB2+C,EAClBnjG,EAAEwrC,MAAM1kC,IAAI09C,IAAAA,MAAAA,KAAe2+C,GAC7B,CACF,CAEA,OAAO,CACT,CACF,IAGK3+C,IAAAA,QAAY,CACjB3iB,IAAK2iB,IAAAA,MAAAA,UAAoB,UAAY2O,EAAKiU,cAAgB,SAC1DtlD,OAAQ,SACR3zB,KAAAA,GAEJ,EAEAkkF,IAAAA,UAAAA,gBAAiC,WAAY,WACrC1pB,EAAQ,IAAIlB,KAEZ8L,EAAW+e,IAAAA,oBAAiCtnF,KAAK0qB,MAAMy9C,MAoB7D,OAlBA1mD,OAAOvB,KAAKqoD,EAAS5K,OAAOhnD,SAAQ,SAAC5B,GACnC,IAAM2V,EAAQ69C,EAAShsD,IAAIxH,GAAG2V,MAE9BA,EAAMoB,UAAY,UAElBrrB,EAAAA,EAAAA,QAAOiqB,EAAO,WAAW,kBAAM,EAAK0tF,aAAa,GACnD,IAEAz6C,EAAM7kD,IAAI,WAAY,SAAKgT,UAAU,eAAey8C,EAAStlD,YAE7D06C,EAAM7kD,IACJ,UACA,EAAC,IAAM,CAACgT,UAAU,SAASo0C,KAAK,mBAAmB5d,QAAStiD,KAAKo4G,YAAY1oE,KAAK1vC,OAC/Ew5D,IAAAA,WAAAA,MAAqB,iDAEvB,KAGImE,CACT,GAEAl9D,EAAAA,EAAAA,QAAO4mF,IAAAA,UAAgB,WAAW,SAAU/mB,GAAM,WAC1C6H,EAAOnoE,KAAK0qB,MAAMy9C,KAClBuvC,EAAQvvC,EAAKuvC,QAEdA,EAAMjzG,SAEP0jE,EAAK8D,aAAYjsE,KAAKmsF,eAAgB,GAE1C7rB,EAAKjzC,QACH,SAAKvB,UAAU,gBACb,SAAKA,UAAU,sBACZ4rF,EAAM9vG,KAAI,SAACwvB,GAAI,OACd,SAAKtL,UAAU,qBAAqB,EAAKusF,WAAWjhF,GAAY,KAGpE,SAAKtL,UAAU,wBAAwB9rB,KAAKs4G,kBAAkBr1F,aAGpE,IAEAokE,IAAAA,UAAAA,WAA4B,SAAUjwD,GACpC,GAAoB,SAAhBA,EAAKpyB,OAAmB,CAC1B,IAAM8nD,EAAO11B,EAAK01B,OACZ9H,EAAS5tB,EAAK4tB,SAAWwU,IAAAA,WAAAA,MAAqB,uCAAuCpiC,EAAK4tB,SAAQ,UAAY,KAC9G1gB,EAASlN,EAAKygF,eACdlmE,EAAOyuB,IAAUhpC,EAAK43C,aAE5B,MAAO,CACLxV,IAAAA,WAAAA,MAAqBxU,EAAS,sDAAwD,0CAA2C,CAC/HrT,KAAAA,EACAmb,KAAAA,EACA9H,OAAAA,MAEA1gB,GAAU,UAAMxY,UAAU,uBAAuBwY,GAEvD,CACF,CACF,CClHA,MAAM,EAA+BizE,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mB,ICSnC8E,GAAS,uFAiB3B,OAjB2B,EAC5Bh2D,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEboX,IAAAA,QAAAA,KAAiB,SAEjBA,IAAAA,MAAAA,OAEAx5D,KAAK47D,UAAY,YACnB,EAAC,EAEDj3B,KAAA,WACE,OACE,SAAK7Y,UAAU,aACb,EAACmsF,EAAQ,CAAC5/E,MAAOmhC,IAAAA,QAGvB,EAAC,EAjB2B,C,MAASmC,ICTvC,MAAM,GAA+B47C,OAAOC,KAAK/D,OAAO,gB,eCInC+E,GAAI,uFAmBtB,OAnBsB,EACvBxzG,KAAA,WACE,OAAO02E,KAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAAC,EACDglD,OAAA,WACE,OAAO02B,KAAAA,UAA+B,UAAU37E,KAAKC,KACvD,EAAC,EACD63G,aAAA,WACE,OAAOn8B,KAAAA,UAA+B,gBAAgB37E,KAAKC,KAC7D,EAAC,EACDgvE,UAAA,WACE,OAAO0M,KAAAA,UAAgB,YAAaA,KAAAA,eAAqB37E,KAAKC,KAChE,EAAC,EAEDmoE,KAAA,WACE,OAAOuT,KAAAA,OAAmB,QAAQ37E,KAAKC,KACzC,EAAC,EACD8sD,KAAA,WACE,OAAO4uB,KAAAA,OAA0B,QAAQ37E,KAAKC,KAChD,EAAC,EAnBsB,CAAS07E,MCClC,WACE,IAAI+8B,IAAAA,SACD3/F,IAAI,QAAS,SAAUy/F,KAE1B,IAAIE,IAAAA,QACD3/F,IAAI,QAAS0/F,IAEhB,IAAIC,IAAAA,OAAapxB,KACd3K,QAAc,SACdtZ,UAAmB,YCLxB,IACE,wBAAyBs1C,EACzB,uBAAwBC,EACxB,yBAA0BC,EAC1B,oBAAqBJ,GACrB,4BAA6BP,EAC7B,iCAAkCL,EAClC,6BAA8BW,GAC9B,iCAAkCL,GCjB9B,GAA+BX,OAAOC,KCS5Ch+C,IAAAA,aAAAA,IAAqB,gBAAgB,WACnCA,IAAAA,MAAY,IAAIi+C,EAAcj+C,KAE9Bm/C,IACAC,IACAF,GACF,IAMAj3F,OAAOs+B,OAAO0zD,GAAAA,OAAQoF,G;;;;;;;;qECrBtB,MAAM,EAA+BtB,OAAOC,KAAK/D,OAAO,0BCAxD,SAAS3yB,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KAInB,CAHE,MAAOsd,GAEP,YADAuS,EAAOvS,EAET,CACIuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEvC,CACe,SAASC,EAAkBr9E,GACxC,OAAO,WACL,IAAImJ,EAAOhN,KACTsZ,EAAO5F,UACT,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GACzB,SAAS0nE,EAAMj6E,GACb+5E,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EAClE,CACA,SAASk6E,EAAOjgD,GACd8/C,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EACnE,CACAggD,OAAMluE,EACR,GACF,CACF,uBC7BA,MAAM,EAA+BykG,OAAOC,KAAK/D,OAAO,2BCGnCqF,EAAY,6BAC/BC,oBAAc,oBAuBb,OAvBa,EAERr1E,KAAI,6BAAV,WAAWw2B,GAAkB,8EAAK,QAAL,IAAlBA,IAAAA,EAAqB,IACzBl6D,KAAK+4G,eAAgB,CAAF,wCACf/4G,KAAKsjD,MAAM4W,IAAS,OAG4D,GAEzD,KAF1B8+C,EAAmB9+C,EAASpzD,QAAO,SAACu6E,GAAO,OAAM,EAAK03B,eAAgBrjF,IAAI2rD,EAAQ,KAEnE58E,OAAY,yCACxBk7C,QAAQhpB,QAAQ6iC,IAAAA,MAAAA,IAAmB,UAAQ,gCAG7Cx5D,KAAKsjD,MAAM01D,IAAiB,gDACpC,mDAZS,GAYT,EAEK11D,MAAK,6BAAX,WAAY4W,GAAkB,4EACM,YADN,IAAlBA,IAAAA,EAAqB,IACZ,MAAnBl6D,KAAK+4G,iBAAL/4G,KAAK+4G,eAAmB,IAAIlJ,KAAM,kBAE3Br2C,IAAAA,MAAAA,KAAsB,OAAQ,CAAE6nB,QAASnnB,EAAS9hD,KAAK,OAAQ6e,MAAK,SAAC/2B,GAE1E,OADAg6D,EAASvjD,SAAQ,SAAC0qE,GAAO,OAAK,EAAK03B,eAAgBjgG,IAAIuoE,EAAQ,IACxDnhF,CACT,KAAE,gDACH,mDAPU,GAOV,EAxB8B,GCHjC,MAAM,EAA+Bq3G,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,2CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6CCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,uCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uCCEzC,SAASwF,EAAQ7sF,EAAK1B,EAAY8sB,QAAP,IAAL9sB,IAAAA,EAAQ,CAAC,QAAW,IAAR8sB,IAAAA,EAAW,CAAC,GAC3D,IAAMssB,EAAU13C,GAAOA,EAAI8zC,OACS,EAAR1oB,EAApB0hE,SAAAA,OAAQ,IAAG,GAAI,EAevB,OAbAxuF,EAAMoB,UAAYkyC,IAAU,CAACtzC,EAAMoB,UAAW,OAAQg4C,EAAU13C,EAAI8zC,OAAS,YAEzE9zC,GAAO8sF,GACTxuF,EAAM3X,MAAQ2X,EAAM3X,OAAS,CAAC,EAC9B2X,EAAM3X,MAAM,WAAaqZ,EAAI/U,QAEzBysD,IACFp5C,EAAM3X,MAAMsE,MAAQ+U,EAAI/U,UAEhB+U,IACV1B,EAAMoB,WAAa,aAGdg4C,EAAU,MAAOp5C,GAAY,SAAUA,EAChD,CCjBmD,IAE9ByuF,EAAa,8DAqB/B,OArB+B,mBAChCx0E,KAAA,SAAKyd,GACH,IAAMh2B,EAAMpsB,KAAK0qB,MAAMsxD,MACjBrH,EAAcvoD,GAAOA,EAAIuoD,cACzB7oD,EAAYkyC,IAAU,wBAAyB,CAAEtb,MAAOt2B,EAAIgtF,WAAap5G,KAAK0qB,MAAMoB,WAE1F,OACE,EAAC,IAAI,CAACA,UAAWA,EAAWsE,KAAMpwB,KAAK0qB,MAAM81B,MAAOztC,MAAOqZ,EAAM,CAAE,UAAWA,EAAI/U,cAAYvE,EAAW3J,MAAOwrE,QAAe7hE,GAC5HmmG,EAAQ7sF,EAAK,CAAEN,UAAW,gBAC3B,UAAMA,UAAU,gBAAgBM,EAAMA,EAAIvZ,OAAS2mD,IAAIiH,WAAWC,MAAM,0CAG9E,EAAC,EAEMnF,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhB,IAAM0B,EAAM1B,EAAMsxD,MAElBtxD,EAAMuyB,OAAOo8D,KAAOjtF,EAAMA,EAAI0yC,OAAS,WACvCp0C,EAAM81B,MAAQgZ,IAAIhZ,MAAM,MAAO91B,EAAMuyB,OACvC,EAAC,EArB+B,CAASo+B,KCL3C,MAAM,EAA+Bk8B,OAAOC,KAAK/D,OAAO,uCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qCCMzC,SAAS6F,EAASltF,EAAK1B,QAAK,IAALA,IAAAA,EAAQ,CAAC,GAC7CA,EAAM3X,MAAQ2X,EAAM3X,OAAS,CAAC,EAC9B2X,EAAMoB,UAAY,aAAepB,EAAMoB,WAAa,IAEpD,IAAMmyD,EAAOrxB,IAAQliC,EAAO,QACtB6uF,EAAUntF,EAAMA,EAAIvZ,OAAS2mD,IAAIiH,WAAWC,MAAM,oCAExD,GAAIt0C,EAAK,CACP,IAAM/U,EAAQ+U,EAAI/U,QACdA,IACFqT,EAAM3X,MAAM,YAAcsE,EAC1BqT,EAAMoB,UAAYkyC,IAAUtzC,EAAMoB,UAAW,UAAWqxD,IAAkB9lE,KAGxE4mE,IACFvzD,EAAMvhB,MAAQijB,EAAIuoD,eAAiB,GACnCjqD,EAAM0F,KAAOopC,IAAIhZ,MAAM,MAAO,CAAE64D,KAAMjtF,EAAI0yC,UAGxC1yC,EAAIgtF,YACN1uF,EAAMoB,WAAa,mBAEvB,MACEpB,EAAMoB,WAAa,YAGrB,OAAO9W,EACLipE,EAAO57B,IAAO,OACd33B,EACA,UAAMoB,UAAU,iBACbM,GAAOA,EAAI8zC,QAAU+4C,EAAQ7sF,EAAK,CAAEN,UAAW,iBAAmB,CAAEotF,UAAU,IAC/E,UAAMptF,UAAU,iBAAiBytF,IAGvC,CCtCe,SAASC,EAASH,GAC/B,OAAOA,EAAK9jG,MAAM,GAAGG,MAAK,SAAChM,EAAGE,GAC5B,IAAM6vG,EAAO/vG,EAAEpH,WACTo3G,EAAO9vG,EAAEtH,WAIf,GAAa,OAATm3G,GAA0B,OAATC,EAAe,OAAO9vG,EAAE8/E,kBAAoBhgF,EAAEggF,kBAInE,GAAa,OAATgwB,EAAe,OAAQ,EAC3B,GAAa,OAATD,EAAe,OAAO,EAI1B,IAAME,EAAUjwG,EAAEhF,SACZk1G,EAAUhwG,EAAElF,SAIlB,OAAIi1G,IAAYC,EAAgBH,EAAOC,EAG9BC,GAAWC,EAAgBD,EAAQr3G,WAAcs3G,EAAQt3G,WAIzDq3G,EAAgBA,IAAY/vG,EAAI,EAAI+vG,EAAQr3G,WAAco3G,EAC1DE,EAAgBA,IAAYlwG,GAAK,EAAI+vG,EAAOG,EAAQt3G,WAEtD,CACT,GACF,CCvBmD,IAE9Bu3G,EAAQ,uFA8H1B,OA9H0B,EAC3Bt3D,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAM,UAACH,GAEboX,IAAIlZ,QAAQprC,KAAK,OAAQskD,IAAIiH,WAAWC,MAAM,kDAE9C1gE,KAAKq5G,KAAO,GAEZ,IAAMS,EAAYtgD,IAAIk0C,uBAElBoM,EACF95G,KAAKq5G,KAAOG,EAASM,EAAUhzG,QAAO,SAACslB,GAAG,OAAMA,EAAIgtF,SAAS,MAI/Dp5G,KAAK0+D,SAAU,EAEflF,IAAIugD,QAAQr2E,KAAK,CAAC,WAAY,uBAAwB,WAAWzM,MAAK,WACpE,EAAKoiF,KAAOG,EAAShgD,IAAImiB,MAAM12B,IAAI,QAAQn+C,QAAO,SAACslB,GAAG,OAAMA,EAAIgtF,SAAS,KAEzE,EAAK16C,SAAU,EAEf1pD,EAAEwqC,QACJ,IACF,EAAC,EAED2C,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,GAEfoX,IAAIm0B,SAASn0B,IAAIiH,WAAWC,MAAM,+CAClClH,IAAIs0C,cAAc,EACpB,EAAC,EAEDnpE,KAAA,WACE,OAAO,SAAK7Y,UAAU,YAAY9rB,KAAKu6E,cAAct3D,UACvD,EAAC,EAEDs3D,YAAA,WACE,IAAM5c,EAAQ,IAAIlB,KAKlB,OAHAkB,EAAM7kD,IAAI,OAAQ9Y,KAAK26E,OAAQ,KAC/Bhd,EAAM7kD,IAAI,OAAQ,SAAKgT,UAAU,aAAa9rB,KAAK46E,cAAc33D,WAAkB,IAE5E06C,CACT,EAAC,EAEDid,YAAA,WACE,IAAMjd,EAAQ,IAAIlB,KAKlB,OAHAkB,EAAM7kD,IAAI,UAAW9Y,KAAKy6E,UAAW,KACrC9c,EAAM7kD,IAAI,UAAW9Y,KAAKo2B,UAAW,IAE9BunC,CACT,EAAC,EAEDvnC,QAAA,WACE,OAAO,SAAKtK,UAAU,kCAAkC9rB,KAAKg6G,eAAe/2F,UAC9E,EAAC,EAED+2F,aAAA,WACE,IAAMr8C,EAAQ,IAAIlB,KAElB,GAAIz8D,KAAK0+D,QACPf,EAAM7kD,IAAI,UAAW,EAAC,IAAgB,WACjC,CACL,IAAM+hD,EAAS76D,KAAKq5G,KAAKvyG,QAAO,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,UAAmB,IAC1D23G,EAAQj6G,KAAKq5G,KAAKvyG,QAAO,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,UAAmB,IAE/Dq7D,EAAM7kD,IAAI,WAAY9Y,KAAKk6G,gBAAgBr/C,GAAS,KAEhDo/C,EAAMx1G,QACRk5D,EAAM7kD,IAAI,QAAS9Y,KAAKm6G,UAAUF,GAAQ,GAE9C,CAEA,OAAOt8C,CACT,EAAC,EAEDgd,KAAA,WACE,OAAO6S,IAAAA,UAAAA,MACT,EAAC,EAED/S,QAAA,WACE,OACE,SAAK3uD,UAAU,sCACb,YAAK0xC,IAAUx9D,KAAK06E,eAAez3D,YAGzC,EAAC,EAEDy3D,aAAA,WACE,OAAO8S,IAAAA,UAAAA,cACT,EAAC,EAED0sB,gBAAA,SAAgBr/C,GACd,OAAO,QAAI/uC,UAAU,YAAY+uC,EAAOjzD,IAAI5H,KAAKo6G,YAAY1qE,KAAK1vC,OACpE,EAAC,EAEDo6G,YAAA,SAAYhuF,GACV,IAAMiuF,EAAuBjuF,EAAIiuF,uBAC3B/kF,EAAWkkF,EAASptF,EAAIkJ,YAAc,IAE5C,OACE,QAAIxJ,UAAWkyC,IAAU,UAAW,CAAEs8C,QAASluF,EAAI/U,SAAW8lE,IAAkB/wD,EAAI/U,UAAWtE,MAAO,CAAE,WAAYqZ,EAAI/U,UACtH,EAAC,IAAI,CAACyU,UAAU,eAAesE,KAAMopC,IAAIhZ,MAAMp0B,IAAIA,IAChDA,EAAI8zC,QAAU+4C,EAAQ7sF,EAAK,CAAC,EAAG,CAAE8sF,UAAU,IAC5C,QAAIptF,UAAU,gBAAgBM,EAAIvZ,QAClC,OAAGiZ,UAAU,uBAAuBM,EAAIuoD,iBACrCr/C,GACD,SAAKxJ,UAAU,oBAAoBwJ,EAAS1tB,KAAI,SAAC86C,GAAK,MAAK,CAAC,EAAC,IAAI,CAACtyB,KAAMopC,IAAIhZ,MAAMp0B,IAAIs2B,IAASA,EAAM7vC,QAAgB,IAAI,MAG5HwnG,EACC,EAAC,IAAI,CAACvuF,UAAU,+BAA+BsE,KAAMopC,IAAIhZ,MAAM0d,WAAWm8C,EAAsBA,EAAqBhrC,mBACnH,UAAMvjD,UAAU,sCAAsCuuF,EAAqBlxG,SAC1Ei3D,IAAUi6C,EAAqB38B,iBAGlC,UAAM5xD,UAAU,iCAIxB,EAAC,EAEDquF,UAAA,SAAUF,GACR,OAAO,SAAKnuF,UAAU,YAAYmuF,EAAMryG,KAAI,SAACwkB,GAAG,MAAK,CAACktF,EAASltF,EAAK,CAAE6xD,MAAM,IAAS,IAAI,IAC3F,EAAC,EA9H0B,CAAStiB,KCJvB,SAAS,KAGtBl7D,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,SAAU7vB,GAShD,GARAA,EAAM7kD,IACJ,OACA,EAAC,IAAU,CAAConD,KAAK,kBAAkB9vC,KAAMopC,IAAAA,MAAU,SAChDA,IAAAA,WAAAA,MAAqB,uCAEvB,KAGCA,IAAAA,QAAAA,QAAoBqgD,GAAxB,CAEAl8C,EAAM7kD,IAAI,YAAa,EAAC,IAAS,OAAM,IAEvC,IAAMmkC,EAASuc,IAAAA,OAAAA,eACT6/C,EAAO7/C,IAAAA,MAAAA,IAAc,QACrB+gD,EAAav6G,KAAKu6G,aAElBC,EAAS,SAACpuF,GACd,IAAIsqB,EAAS6jE,IAAenuF,GAEvBsqB,GAAU6jE,IACb7jE,EAAS6jE,EAAW71G,WAAa0nB,GAQnCuxC,EAAM7kD,IACJ,MAAQsT,EAAIzC,KACZ,EAACwvF,EAAa,CAACn9B,MAAO5vD,EAAK6wB,OAAQA,EAAQvG,OAAQA,GAC7C,MAAHtqB,OAAG,EAAHA,EAAKvZ,SAEP,GAEL,EAEA2mG,EAASH,GACNvyG,QACC,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,cAAyB8pB,EAAIgtF,WAAcmB,IAAenuF,EAAI1nB,WAAa61G,GAAcnuF,EAAI1nB,WAAa61G,EAAW71G,UAAW,IAE9IiS,QAAQ6jG,GAEX,IAAMC,EAAOpB,EAAKvyG,QAAO,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,UAAmB,IAAEoT,MAAK,SAAChM,EAAGE,GAAC,OAAKA,EAAE8/E,kBAAoBhgF,EAAEggF,iBAAiB,IAEnH+wB,EAAK12F,OAAO,EAAG,GAAGpN,QAAQ6jG,GAEtBC,EAAKh2G,QACPk5D,EAAM7kD,IAAI,WAAY,EAAC,IAAU,CAACsX,KAAMopC,IAAAA,MAAU,SAAUA,IAAAA,WAAAA,MAAqB,uCAAqD,GAxC/F,CA0C3C,GACF,CCjEA,MAAM,EAA+B+9C,OAAOC,KAAK/D,OAAO,iDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iCCKnCiH,EAAO,8DAoBzB,OApByB,mBAC1B/1E,KAAA,WAAO,MACCvY,EAAMpsB,KAAK0qB,MAAMsxD,MACjB3kE,EAAQ+U,EAAI/U,QAElB,OACE,YACEyU,UAAWkyC,IAAU,OAAQ,WAAS,GAAI,mBAAoB3mD,GAAK,EAAG8lE,IAAkB9lE,IAASA,EAAK,IACtGtE,MAAOsE,EAAQ,CAAE,YAAaA,QAAUvE,GAExC,SAAKgZ,UAAU,aACb,SAAKA,UAAU,mBACb,QAAIA,UAAU,cACXM,EAAI8zC,QAAU+4C,EAAQ7sF,EAAK,CAAC,EAAG,CAAE8sF,UAAU,IAAQ,IAAG9sF,EAAIvZ,QAE7D,SAAKiZ,UAAU,iBAAiBM,EAAIuoD,iBAK9C,EAAC,EApByB,CAAStZ,KCQ/Bs/C,EAAU,SAAC77C,GAAY,OAAKtF,IAAAA,MAAAA,IAAmB,QAAQ34D,MAAK,SAACurB,GAAG,OAA4E,IAAvEA,EAAI0yC,OAAOyiB,cAAcziB,OAAMhsD,EAAW,CAAE8nG,YAAa,QAAe,GAAC,EAErI,SAAS,KACtBptB,IAAAA,UAAAA,WAAiC,WAAY,WAC3C,GAAIxtF,KAAK66G,iBACP,OAAO76G,KAAK66G,iBAGd,IAAM/7C,EAAOtF,IAAAA,OAAAA,SAAoB6/C,KAC7BjtF,EAAM,KAMV,GAJI0yC,IACF1yC,EAAMuuF,EAAQ77C,IAGXA,IAAS1yC,GAASA,IAAQA,EAAIgtF,YAAchtF,EAAIkJ,WAAa,CAChE,GAAIt1B,KAAK86G,kBACP,OAGF96G,KAAK86G,mBAAoB,EAMzBthD,IAAAA,MAAAA,KACQ,OAAQsF,EAAM,CAAEuiB,QAAS,0CAC9BpqD,MAAK,WACJ,EAAK4jF,iBAAmBF,EAAQ77C,GAEhC9pD,EAAEwqC,QACJ,IAAE,SACO,WACP,EAAKs7D,mBAAoB,CAC3B,GACJ,CAEA,OAAI1uF,GACFpsB,KAAK66G,iBAAmBzuF,EACjBpsB,KAAK66G,uBAFd,CAMF,GAGAlQ,EAAAA,EAAAA,UAASnd,IAAAA,UAAqB,QAAQ,SAAUtlD,GAC9C,IAAM9b,EAAMpsB,KAAKu6G,aAEjB,OAAInuF,EAAY,EAACsuF,EAAO,CAAC1+B,MAAO5vD,IAEzB8b,GACT,KAEAznC,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,QAAQ,SAAUltB,GAC5C,IAAMl0C,EAAMpsB,KAAKu6G,aAEbnuF,IAAKk0C,EAAK51C,MAAMoB,WAAa,kBAAoBM,EAAIzC,KAC3D,KAEAlpB,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,WACtC,IAAMphE,EAAMpsB,KAAKu6G,aAEbnuF,GACFotC,IAAAA,SAAaptC,EAAIvZ,OAErB,KAIApS,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,gBAAgB,SAAU7vB,GACpD,IAAMvxC,EAAMpsB,KAAKu6G,aAEjB,GAAInuF,EAAK,CACP,IAAM/U,EAAQ+U,EAAI/U,QACZ42E,EAAqB7hE,EAAI6hE,uBAAyBz0B,IAAAA,QAAAA,KAClDuhD,EAAgBp9C,EAAMphD,IAAI,iBAE5BlF,IACF0jG,EAAcrwF,MAAMoB,UAAYkyC,IAAU,CAAC+8C,EAAcrwF,MAAMoB,UAAW,qBAAsBqxD,IAAkB9lE,KAClH0jG,EAAcrwF,MAAM3X,MAAQ,CAAE,UAAWsE,IAG3C0jG,EAAcrwF,MAAM1B,UAAYilE,EAChC8sB,EAAczlF,SAAWkkC,IAAAA,WAAAA,MACvBy0B,EAAqB,2CAA6C,kDAEtE,CACF,KAIAxtF,EAAAA,EAAAA,QAAOqvG,IAAAA,UAA6B,UAAU,SAAU7yD,GACtDA,EAAOo8D,KAAOrkG,EAAEwrC,MAAM3L,MAAM,OAC9B,KAGAp0C,EAAAA,EAAAA,QAAO0vF,IAAAA,UAA+B,iBAAiB,SAAqClzC,GAGnF,MAIP,GAN8B,iBAAnBA,EAAOokC,QAChBpkC,EAAOokC,QAAU,CAACpkC,EAAOokC,SAEX,OAAd,EAAApkC,EAAOokC,UAAP,EAAgBnsE,KAAK,OAAQ,eAG3BlV,KAAKi9C,OAAOo8D,KAAM,OACdvyG,EAAsB,OAAhB,EAAGm2C,EAAOn2C,QAAM,EAAI,CAAC,EACjCA,EAAOslB,IAAMpsB,KAAKi9C,OAAOo8D,KAEzB,IAAMroD,EAAIlqD,EAAOkqD,EACbA,IACFlqD,EAAOkqD,EAAOA,EAAC,QAAQhxD,KAAKi9C,OAAOo8D,MAErCp8D,EAAOn2C,OAASA,CAClB,CACF,GACF,CCjIA,MAAM,GAA+BywG,OAAOC,KAAK/D,OAAO,sDCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,kDCAzC,SAASr1C,GAA8B7gC,EAAQ8gC,GAC5D,GAAc,MAAV9gC,EAAgB,MAAO,CAAC,EAC5B,IAEIzwB,EAAK7F,EAFLtG,EAAS,CAAC,EACV29D,EAAa78C,OAAOvB,KAAKqd,GAE7B,IAAKt2B,EAAI,EAAGA,EAAIq3D,EAAW75D,OAAQwC,IACjC6F,EAAMwxD,EAAWr3D,GACbo3D,EAASn9C,QAAQpU,IAAQ,IAC7BnM,EAAOmM,GAAOywB,EAAOzwB,IAEvB,OAAOnM,CACT,iBCNe,SAASq6G,GAAU3B,EAAM3uF,QAAK,IAALA,IAAAA,EAAQ,CAAC,GAC/C,IAAM4K,EAAW,GACjB,EAAgC5K,EAAxBuzD,EAAI,EAAJA,KAASg9B,EAAU,SAc3B,OAZAA,EAAWnvF,UAAYkyC,IAAU,YAAai9C,EAAWnvF,WAErDutF,EACFG,EAASH,GAAM1iG,SAAQ,SAACyV,IAClBA,GAAuB,IAAhBitF,EAAK50G,SACd6wB,EAASpgB,KAAKokG,EAASltF,EAAK,CAAE6xD,KAAAA,IAElC,IAEA3oD,EAASpgB,KAAKokG,KAGT,SAAU2B,EAAa3lF,EAChC,CCbe,SAAS,MAEtB70B,EAAAA,EAAAA,QAAOotE,KAAAA,UAA8B,aAAa,SAAUlQ,GAC1D,IAAM07C,EAAOr5G,KAAK0qB,MAAMwzC,WAAWm7C,OAE/BA,GAAQA,EAAK50G,QACfk5D,EAAM7kD,IAAI,OAAQkiG,GAAU3B,GAAO,GAEvC,KAGA54G,EAAAA,EAAAA,QAAOw9D,KAAAA,UAA0B,QAAQ,SAAUt5B,GACjD,IAAM00E,EAAOG,EAASx5G,KAAK0qB,MAAMwzC,WAAWm7C,QAE5C,GAAIA,GAAQA,EAAK50G,OAAQ,CACvB,IAAM4S,EAAQgiG,EAAK,GAAGhiG,QAClBA,IACFstB,EAAKja,MAAM3X,MAAQ,CAAE,YAAasE,GAClCstB,EAAKja,MAAMoB,UAAYkyC,IAAUr5B,EAAKja,MAAMoB,UAAW,0BAA2BqxD,IAAkB9lE,IAExG,CACF,KAIA5W,EAAAA,EAAAA,QAAOw9D,KAAAA,UAA0B,SAAS,SAAUN,GAClD,IAAM07C,EAAOr5G,KAAK0qB,MAAMwzC,WAAWm7C,OAE/BA,GAAQA,EAAK50G,QACfk5D,EAAM7kD,IAAI,OAAQkiG,GAAU3B,EAAM,CAAEp7B,MAAM,IAAS,EAEvD,GACF,CCzCA,MAAM,GAA+Bs5B,OAAOC,KAAK/D,OAAO,iDCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,2CCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,kDCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,2CCAzC,SAASyH,GAAkBh9C,GACxC,IAAIm7C,EAAO7/C,IAAImiB,MAAM12B,IAAI,QAQzB,OANIiZ,EACKm7C,EAAKvyG,QAAO,SAACslB,GAAG,OAAKA,EAAI+uF,uBAA4D,IAApCj9C,EAAWm7C,OAAOn4F,QAAQkL,EAAW,IAEtFitF,EAAKvyG,QAAO,SAACslB,GAAG,OAAKA,EAAI6hE,oBAAoB,GAIxD,CCVA,MAAM,GAA+BspB,OAAOC,KAAK/D,OAAO,2CCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,mDCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,0CCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,mECOnC2H,GAAY,8DAU9B,OAV8B,mBAC/Bz2E,KAAA,SAAKyd,GACH,MAA2CpiD,KAAK0qB,MAAxCoB,EAAS,EAATA,UAAWuvF,EAAS,EAATA,UAAc3wF,EAAK,SAChCw1C,EAAOm7C,EAAY,sBAAwB,gBAEjD,OACE,EAAC,KAAM,iBAAK3wF,EAAK,CAAEw1C,KAAMA,EAAMp0C,UAAWkyC,IAAU,CAAClyC,EAAWuvF,GAAa,sBAC1Ej5D,EAAM9sB,SAGb,EAAC,EAV8B,CAAS+lC,KCwDrBigD,GAAiB,mGAYlB,OAZkB,0CAI1B58C,SAAU,EAAI,EACd26C,UAAI,IACJ9oF,SAAkB,GAAE,EACpBgrF,YAAsB,EAAK,EAE3Bz0G,OAASsmD,KAAO,IAAG,EACnBk1B,SAAU,EAAK,EACfV,UAAY,IAAInC,MAAqB,EACrC+7B,cAAQ,IAZkB,OAYlB,EAEXjgD,UAAP,SAAiB7wC,GAAgC,wCAC/C,EAAM6wC,UAAS,UAAC7wC,GAGhBA,EAAMvhB,QAANuhB,EAAMvhB,MAAUk3D,KAAY7G,IAAAA,WAAAA,MAAqB,+CACjD9uC,EAAM+wF,YAAN/wF,EAAM+wF,UAAc,kBAAM,CAAI,GACV,MAApB/wF,EAAMgxF,iBAANhxF,EAAMgxF,gBAAmB,GACzBhxF,EAAMixF,OAAS,CACb9kG,IAAK,CACHquC,MAA+B,OAA1B,EAAc,OAAd,EAAEx6B,EAAMixF,SAAW,OAAL,EAAZ,EAAc9kG,UAAF,EAAZ,EAAmBquC,OAAK,GAAI,IACnChrB,QAAmC,OAA5B,EAAc,OAAd,EAAExP,EAAMixF,SAAW,OAAL,EAAZ,EAAc9kG,UAAF,EAAZ,EAAmBqjB,SAAO,GAAI,IACvC0hF,UAAuC,OAA9B,EAAc,OAAd,EAAElxF,EAAMixF,SAAW,OAAL,EAAZ,EAAc9kG,UAAF,EAAZ,EAAmB+kG,WAAS,GAAI,KAE7C14G,IAAK,CACHgiD,MAA+B,OAA1B,EAAc,OAAd,EAAEx6B,EAAMixF,SAAW,OAAL,EAAZ,EAAcz4G,UAAF,EAAZ,EAAmBgiD,OAAK,EAAIqoD,IACnCrzE,QAAmC,OAA5B,EAAc,OAAd,EAAExP,EAAMixF,SAAW,OAAL,EAAZ,EAAcz4G,UAAF,EAAZ,EAAmBg3B,SAAO,EAAIqzE,IACvCqO,UAAuC,OAA9B,EAAc,OAAd,EAAElxF,EAAMixF,SAAW,OAAL,EAAZ,EAAcz4G,UAAF,EAAZ,EAAmB04G,WAAS,EAAIrO,MAiXnD,SAA4BoO,GAC1B,GAAIA,EAAO9kG,IAAKqjB,QAAWyhF,EAAOz4G,IAAKg3B,QACrC,MAAM,IAAIruB,MAAM,8GAGlB,GAAI8vG,EAAO9kG,IAAK+kG,UAAaD,EAAOz4G,IAAK04G,UACvC,MAAM,IAAI/vG,MAAM,kHAGlB,GAAI8vG,EAAO9kG,IAAKquC,MAASy2D,EAAOz4G,IAAKg3B,QAAWyhF,EAAOz4G,IAAK04G,UAC1D,MAAM,IAAI/vG,MAAM,6HAGlB,GAAI8vG,EAAOz4G,IAAKgiD,MAASy2D,EAAO9kG,IAAKqjB,QAAWyhF,EAAO9kG,IAAK+kG,UAC1D,MAAM,IAAI/vG,MAAM,6HAGlB,GAAI8vG,EAAO9kG,IAAKquC,MAASy2D,EAAOz4G,IAAKgiD,MACnC,MAAM,IAAIr5C,MAAM,6FAEpB,CAhYIgwG,CAAmBnxF,EAAMixF,OAC3B,EAAC,kBAqWA,OArWA,EAEDp5D,OAAA,SAAOH,GAAyC,WAC9C,YAAMG,OAAM,UAACH,GAEbpiD,KAAK4hF,UACFhC,MAAK,kBAAM,EAAKiD,SAAS,EAAKC,yBAA2B,GAAG,EAAK,IACjEhD,QAAO,kBAAM,EAAK+C,SAAS,EAAKC,yBAA2B,GAAG,EAAK,IACnE9C,SAAShgF,KAAK6lB,OAAO6pB,KAAK1vC,OAC1BugF,UAAS,kBAAM,EAAKhwD,SAASxM,OAAO,EAAKwM,SAAS9rB,OAAS,EAAG,EAAE,IAEnE+0D,IAAAA,QAAAA,KAAiB,CAAC,WAAWviC,MAAK,SAACoiF,GACjC,EAAK36C,SAAU,EAEX,EAAKh0C,MAAMoxF,iBACbzC,EAAO,EAAK3uF,MAAMoxF,eAAezC,IAGnC,EAAKA,KAAOG,EAASH,GAEjB,EAAK3uF,MAAMqxF,cACb,EAAKrxF,MAAMqxF,aAAan0G,IAAI,EAAK4yG,OAAO9qE,KAAK,IAG/C,EAAK8rE,SAAWnC,EAAK,GAErBrkG,EAAEwqC,QACJ,GACF,EAAC,EAED1zB,UAAA,WACE,OAAOkyC,IAAU,oBAAqBh+D,KAAK0qB,MAAMoB,UACnD,EAAC,EAED3iB,MAAA,WACE,OAAOnJ,KAAK0qB,MAAMvhB,KACpB,EAAC,EAEDitB,QAAA,WAAU,WACR,GAAIp2B,KAAK0+D,UAAY1+D,KAAKq5G,KACxB,OAAO,EAAC,IAAgB,MAG1B,IAAMvyG,EAAS9G,KAAK8G,SAASN,cACvBw1G,EAAeh8G,KAAKg8G,eACpBC,EAAiBj8G,KAAKi8G,iBACtB5C,EAAOr5G,KAAKk8G,kBAEZC,EAAal5G,KAAKC,IAAIm9D,KAAYrgE,KAAKo8G,eAAeJ,EAAcC,IAAiBx3G,OAAQzE,KAAK8G,SAASrC,QAEjH,MAAO,CACL,SAAKqnB,UAAU,cACb,SAAKA,UAAU,0BACb,SAAKA,UAAU,gCACb,SAAKA,UAAW,0BAA4B9rB,KAAKsiF,QAAU,QAAU,IAAKhgC,QAAS,kBAAM,EAAKjiD,EAAE,oBAAoBsL,OAAO,GACzH,UAAMmgB,UAAU,sBACb9rB,KAAKuwB,SAAS3oB,KAAI,SAACwkB,GAAG,OACrB,UACEN,UAAU,gBACVw2B,QAAS,WACP,EAAK+5D,UAAUjwF,GACf,EAAK68C,SACP,GAECqwC,EAASltF,GACL,KAGX,WACEN,UAAU,cACV84C,YAAavE,KAAYrgE,KAAKo8G,eAAeJ,EAAcC,IAC3DpjD,KAAM74D,KAAK8G,OACXiM,MAAO,CAAEnE,MAAOutG,EAAa,MAC7B5uB,UAAWvtF,KAAK4hF,UAAUhB,SAASlxC,KAAK1vC,KAAK4hF,WAC7CY,QAAS,kBAAO,EAAKF,SAAU,CAAI,EACnCG,OAAQ,kBAAO,EAAKH,SAAU,CAAK,MAIzC,SAAKx2D,UAAU,oDACb,EAAC,KAAM,CACL9mB,KAAK,SACL8mB,UAAU,yBACV9C,UAAWhpB,KAAKs8G,kBAAkBN,EAAcC,GAChD/7C,KAAK,gBAEJ1G,IAAAA,WAAAA,MAAqB,yDAM9B,SAAK1tC,UAAU,gBACb,QAAIA,UAAU,wCACXutF,EAAKzxG,KAAI,SAACwkB,GAAG,OACZ,QACE,aAAYA,EAAIzC,KAChBmC,UAAWkyC,IAAU,CACnBnD,OAA2B,OAAnBzuC,EAAI9pB,WACZogD,QAASt2B,EAAI1nB,SACb41G,UAAWluF,EAAI/U,QACfkZ,SAAU,EAAKA,SAAS2pC,SAAS9tC,GACjCsqB,OAAQ,EAAK8kE,WAAapvF,IAE5BrZ,MAAO,CAAEsE,MAAO+U,EAAI/U,SACpBklG,YAAa,kBAAO,EAAKf,SAAWpvF,CAAG,EACvCk2B,QAAS,EAAKk6D,UAAU9sE,KAAK,EAAMtjB,IAElC6sF,EAAQ7sF,GACT,UAAMN,UAAU,0BAA0Bi0C,KAAU3zC,EAAIvZ,OAAQ/L,IAC/DslB,EAAIuoD,cAAgB,UAAM7oD,UAAU,iCAAiCM,EAAIuoD,eAAwB,GAC/F,KAGR30E,KAAK0qB,MAAMixF,OAAQc,gBAClB,SAAK3wF,UAAU,8BACb,EAACsvF,GAAY,CAACtvF,UAAU,SAASw2B,QAAS,kBAAO,EAAKi5D,YAAc,EAAKA,UAAU,EAAGF,UAAWr7G,KAAKu7G,YACnG/hD,IAAAA,WAAAA,MAAqB,8DAMlC,EAEA,EAGQ0iD,gBAAR,WAAiC,WACzBp1G,EAAS9G,KAAK8G,SAASN,cACvBw1G,EAAeh8G,KAAKg8G,eACpBC,EAAiBj8G,KAAKi8G,iBACxB5C,EAAOr5G,KAAKq5G,KAoChB,OAlCIr5G,KAAK0qB,MAAMgyF,mBAGbrD,EAAOA,EAAKvyG,QAAO,SAACslB,GAClB,IAAM1nB,EAAS0nB,EAAI1nB,SACnB,OAAkB,OAAXA,KAA+B,IAAXA,GAAoB,EAAK6rB,SAAS2pC,SAASx1D,GACxE,KAGG1E,KAAKu7G,aAEJv7G,KAAKuwB,SAAS9rB,QAAUzE,KAAK0qB,MAAMixF,OAAQz4G,IAAKgiD,MAClDm0D,EAAOA,EAAKvyG,QAAO,SAACslB,GAAG,OAAK,EAAKmE,SAAS2pC,SAAS9tC,EAAI,KAKnD4vF,GAAgBh8G,KAAK0qB,MAAMixF,OAAQz4G,IAAKg3B,UAC1Cm/E,EAAOA,EAAKvyG,QAAO,SAACslB,GAAG,OAAMA,EAAIuwF,aAAe,EAAKpsF,SAAS2pC,SAAS9tC,EAAI,KAEzE6vF,GAAkBj8G,KAAK0qB,MAAMixF,OAAQz4G,IAAK04G,YAC5CvC,EAAOA,EAAKvyG,QAAO,SAACslB,GAAG,OAAKA,EAAIuwF,aAAe,EAAKpsF,SAAS2pC,SAAS9tC,EAAI,OAO5EtlB,IACFuyG,EAAOA,EAAKvyG,QAAO,SAACslB,GAAG,OAAKA,EAAIvZ,OAAOrM,cAAc0zD,SAASpzD,EAAO,KAGlE9G,KAAKw7G,UAAanC,EAAKn/C,SAASl6D,KAAKw7G,YAAWx7G,KAAKw7G,SAAWnC,EAAK,IAEnEA,CACT,EAEA,EAGU2C,aAAV,WACE,OAAOh8G,KAAKuwB,SAASzpB,QAAO,SAACslB,GAAG,OAAKA,EAAIuwF,WAAW,IAAEl4G,MACxD,EAEA,EAGUw3G,eAAV,WACE,OAAOj8G,KAAKuwB,SAASzpB,QAAO,SAACslB,GAAG,OAAMA,EAAIuwF,WAAW,IAAEl4G,MACzD,EAEA,EAGU63G,kBAAV,SAA4BN,EAAsBC,GAChD,SAAIj8G,KAAKu7G,YAAev7G,KAAK0qB,MAAMgxF,gBAA2C,IAAzB17G,KAAKuwB,SAAS9rB,WAI/DzE,KAAKuwB,SAAS9rB,OAASzE,KAAK0qB,MAAMixF,OAAQ9kG,IAAKquC,QAI5C82D,GAAgBh8G,KAAK0qB,MAAMixF,OAAQ9kG,IAAKqjB,SAAY+hF,GAAkBj8G,KAAK0qB,MAAMixF,OAAQ9kG,IAAK+kG,SACvG,EAEA,EAGUpB,OAAV,SAAiBpuF,GACf,GAAKA,GAAQpsB,KAAK0qB,MAAM+wF,UAAUrvF,GAAlC,CAQA,GANIpsB,KAAK0qB,MAAMs1D,UACbhgF,KAAK0qB,MAAMs1D,SAAS5zD,EAAKpsB,KAAKuwB,UAK5BvwB,KAAK0qB,MAAMgyF,iBAAkB,CAC/B,IAAMh4G,EAAS0nB,EAAI1nB,SACfA,IAAW1E,KAAKuwB,SAAS2pC,SAASx1D,IACpC1E,KAAKuwB,SAASrb,KAAKxQ,EAEvB,CAEK1E,KAAKuwB,SAAS2pC,SAAS9tC,IAC1BpsB,KAAKuwB,SAASrb,KAAKkX,EAhByB,CAkBhD,EAEA,EAGUiwF,UAAV,SAAoBjwF,GAClB,IAAMvmB,EAAQ7F,KAAKuwB,SAASrP,QAAQkL,IAErB,IAAXvmB,IACF7F,KAAKuwB,SAASxM,OAAOle,EAAO,GAIxB7F,KAAK0qB,MAAMgyF,kBACb18G,KAAKuwB,SAASzpB,QAAO,SAACoR,GAAC,OAAKA,EAAExT,WAAa0nB,CAAG,IAAEzV,QAAQ3W,KAAKq8G,UAAU3sE,KAAK1vC,OAG1EA,KAAK0qB,MAAMkyF,YACb58G,KAAK0qB,MAAMkyF,WAAWxwF,EAAKpsB,KAAKuwB,UAGtC,EAAC,EAESisF,UAAV,SAAoBpwF,GAEbpsB,KAAKq5G,OAENr5G,KAAKuwB,SAAS2pC,SAAS9tC,GACzBpsB,KAAKq8G,UAAUjwF,GAEfpsB,KAAKw6G,OAAOpuF,GAGVpsB,KAAK8G,WACP9G,KAAK8G,OAAO,IACZ9G,KAAKw7G,SAAWx7G,KAAKq5G,KAAK,IAG5Br5G,KAAKipE,UACP,EAEA,EAGUmzC,eAAV,SAAyBJ,EAAsBC,GAC7C,GAAIj8G,KAAKu7G,WACP,MAAO,GAGT,GAAIS,EAAeh8G,KAAK0qB,MAAMixF,OAAQ9kG,IAAKqjB,QAAU,CACnD,IAAMH,EAAY/5B,KAAK0qB,MAAMixF,OAAQ9kG,IAAKqjB,QAAW8hF,EACrD,OAAO37C,KAAY7G,IAAAA,WAAAA,MAAqB,iEAAkE,CAAE/iD,MAAOsjB,IACrH,CAAO,GAAIkiF,EAAiBj8G,KAAK0qB,MAAMixF,OAAQ9kG,IAAK+kG,UAAY,CAC9D,IAAM7hF,EAAY/5B,KAAK0qB,MAAMixF,OAAQ9kG,IAAK+kG,UAAaK,EACvD,OAAO57C,KAAY7G,IAAAA,WAAAA,MAAqB,mEAAoE,CAAE/iD,MAAOsjB,IACvH,CAAO,GAAI/5B,KAAKuwB,SAAS9rB,OAASzE,KAAK0qB,MAAMixF,OAAQ9kG,IAAKquC,MAAQ,CAChE,IAAMnrB,EAAY/5B,KAAK0qB,MAAMixF,OAAQ9kG,IAAKquC,MAASllD,KAAKuwB,SAAS9rB,OACjE,OAAO47D,KAAY7G,IAAAA,WAAAA,MAAqB,8DAA+D,CAAE/iD,MAAOsjB,IAClH,CAEA,MAAO,EACT,EAEA,EAGAmrC,SAAA,SAAS3hE,GACPA,EAAEmC,iBAEE1F,KAAK0qB,MAAMw6C,UAAUllE,KAAK0qB,MAAMw6C,SAASllE,KAAKuwB,UAElDvwB,KAAK2M,MACP,EAAC,EAESkZ,OAAV,SAAiBtiB,GAEXA,EAAEyd,SAAWzd,EAAE0d,SAAYjhB,KAAKw7G,UAAYx7G,KAAKuwB,SAAS2pC,SAASl6D,KAAKw7G,UACtEx7G,KAAKuwB,SAAS9rB,QAGhBzE,KAAKK,EAAE,yBAAyBoL,QAEzBzL,KAAKw7G,UACdx7G,KAAK+6D,QAAQ/6D,KAAKw7G,UAAU,GAAGj3C,cAAc,IAAI/gE,MAAM,SAE3D,EAAC,EAESu/E,gBAAV,WACE,OAAO/iF,KAAKK,EAAE,+BAChB,EAAC,EAESyiF,uBAAV,WACE,OAAK9iF,KAAKw7G,SAEHx7G,KAAK+iF,kBAAkBl9E,MAAM7F,KAAK+6D,QAAQ/6D,KAAKw7G,YAF1B,CAG9B,EAAC,EAESzgD,QAAV,SAAkB8hD,GAChB,OAAO78G,KAAK+iF,kBAAkBj8E,OAAO,gBAAgB+1G,EAAYlzF,KAAI,KACvE,EAAC,EAESk5D,SAAV,SAAmBh9E,EAAemvE,GAChC,IAAMpvE,EAAS5F,KAAK+iF,kBACdO,EAAY19E,EAAOlB,SAErBmB,EAAQ,EACVA,EAAQD,EAAOnB,OAAS,EACfoB,GAASD,EAAOnB,SACzBoB,EAAQ,GAGV,IAAMyuE,EAAQ1uE,EAAOE,GAAGD,GAMxB,GAJA7F,KAAKw7G,SAAWhiD,IAAAA,MAAAA,QAAkB,OAAQ8a,EAAMhwE,KAAK,eAErD0Q,EAAEwqC,SAEEw1B,GAAgBh1E,KAAKw7G,SAAU,CACjC,IAMIn5G,EANEmhF,EAAiBF,EAAUjhF,YAC3BohF,EAAcH,EAAUxhF,SAAUU,IAClCkhF,EAAiBD,EAAcH,EAAUjS,cACzC8D,EAAUb,EAAMxyE,SAAUU,IAC1B4yE,EAAaD,EAAUb,EAAMjD,cAG/B8D,EAAUsO,EACZphF,EAAYmhF,EAAiBC,EAActO,EAAU5lE,SAAS+zE,EAAUjgF,IAAI,eAAgB,IACnF+xE,EAAasO,IACtBrhF,EAAYmhF,EAAiBE,EAAiBtO,EAAa7lE,SAAS+zE,EAAUjgF,IAAI,kBAAmB,UAG9E,IAAdhB,GACTihF,EAAUpmD,MAAK,GAAM0T,QAAQ,CAAEvuC,UAAAA,GAAa,IAEhD,CACF,EAAC,EAzYmC,CAG5BwmE,MCnDWi0C,GAAkB,8DA6CpC,OA7CoC,SAC9BvhD,UAAP,SAAiB7wC,GAAgC,MAC/C,EAAM6wC,UAAS,UAAC7wC,GAEhB,IAAMvhB,EAAQuhB,EAAMwzC,WAChB1E,IAAAA,WAAAA,MAAqB,2CAA4C,CAAErwD,MAAO,YAAKuhB,EAAMwzC,WAAW/0D,WAChGqwD,IAAAA,WAAAA,MAAqB,uCAEzB9uC,EAAMoB,UAAYkyC,IAAUtzC,EAAMoB,UAAW,sBAC7CpB,EAAMvhB,MAAQk3D,KAAYl3D,GAC1BuhB,EAAMgxF,iBAAmBliD,IAAAA,MAAAA,UAAoB,sBAC7C9uC,EAAMixF,OAAS,CACbc,eAAgB/xF,EAAMgxF,eACtBx4G,IAAK,CACHg3B,QAASs/B,IAAAA,MAAAA,UAA4B,kBACrCoiD,UAAWpiD,IAAAA,MAAAA,UAA4B,qBAEzC3iD,IAAK,CACHqjB,QAASs/B,IAAAA,MAAAA,UAA4B,kBACrCoiD,UAAWpiD,IAAAA,MAAAA,UAA4B,sBAG3C9uC,EAAMgyF,kBAAmB,EACzBhyF,EAAMoxF,eAAiB,kBAAMZ,GAAkBxwF,EAAMwzC,WAAW,EAC9C,MAAlBxzC,EAAMqxF,eAANrxF,EAAMqxF,cAAkC,OAAjB,EAACrxF,EAAMwzC,iBAAU,EAAhB,EAAkBm7C,SAAoB,IAC9D3uF,EAAM+wF,UAAY,SAACrvF,GAAG,OAAKA,EAAI6hE,oBAAoB,EAEnD,IAAM8uB,EAAmBryF,EAAMw6C,UAAY,KAG3Cx6C,EAAMw6C,SAAW,SAAUm0C,GACzB,IAAMn7C,EAAaxzC,EAAMwzC,WAErBA,GACFA,EAAWgK,KAAK,CAAED,cAAe,CAAEoxC,KAAAA,KAAUpiF,MAAK,WAC5CuiC,IAAAA,QAAAA,QAAoBkS,OACtBlS,IAAAA,QAAAA,IAAgB,UAAUrlD,SAG5Ba,EAAEwqC,QACJ,IAGEu9D,GAAkBA,EAAiB1D,EACzC,CACF,EAAC,EA7CoC,CAASiC,ICTjC,SAAS,MAEtB76G,EAAAA,EAAAA,QAAO0tE,KAAoB,sBAAsB,SAAUxQ,EAAOO,GAC5DA,EAAW8+C,UACbr/C,EAAM7kD,IACJ,OACA,EAAC,KAAM,CAAConD,KAAK,aAAa5d,QAAS,kBAAMkX,IAAI0C,MAAMxvD,KAAKowG,GAAoB,CAAE5+C,WAAAA,GAAa,GACxF1E,IAAIiH,WAAWC,MAAM,2DAI9B,GACF,CClBA,MAAM,GAA+B62C,OAAOC,KAAK/D,OAAO,sDCSzC,SAAS,MACtBhzG,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,uBAAuB,SAAUz2D,GAE3D,IAAM3K,EAAMpsB,KAAKu6G,aAEjB,GAAInuF,EAAK,CACP,IAAM1nB,EAAS0nB,EAAI1nB,SACb20G,EAAO30G,EAAS,CAACA,EAAQ0nB,GAAO,CAACA,GACvC2K,EAAQE,MAAK,SAAC8vC,GAAQ,OAAMA,EAASW,OAAO2xC,KAAOA,CAAI,GACzD,MACE7/C,IAAIuN,SAASW,OAAO2xC,KAAO,EAE/B,KAEA54G,EAAAA,EAAAA,QAAO4sF,KAAAA,UAA8B,UAAU,WAC7C7zB,IAAIugD,QAAQr2E,KAAK,CAAC,WAAWzM,MAAK,kBAAMjiB,EAAEwqC,QAAQ,GACpD,IAGA6tC,KAAAA,UAAAA,WAA0C,WAAY,WAC7B6tB,KAEHz2G,QAEpB+0D,IAAI0C,MAAMxvD,KAAKowG,GAAoB,CACjCf,cAAe/7G,KAAK+mE,SAASW,OAAO2xC,MAAQ,IAAI9jG,MAAM,GACtD2vD,SAAU,SAACm0C,GACT,EAAKtyC,SAASW,OAAO2xC,KAAOA,EAC5B,EAAKh5G,EAAE,YAAYsL,OACrB,GAEJ,GAIAlL,EAAAA,EAAAA,QAAO4sF,KAAAA,UAA8B,eAAe,SAAU1vB,GAC5D,IAAM07C,EAAOr5G,KAAK+mE,SAASW,OAAO2xC,MAAQ,GACpCyC,EAAiBZ,KAEvBv9C,EAAM7kD,IACJ,OACA,OAAGgT,UAAWkyC,IAAU,CAAC,iCAAkC89C,EAAer3G,QAAU,aAAc69C,QAAStiD,KAAKi9G,WAAWvtE,KAAK1vC,OAC7Hq5G,EAAK50G,OACJu2G,GAAU3B,GAEV,UAAMvtF,UAAU,qBAAqB0tC,IAAIiH,WAAWC,MAAM,4DAG9D,GAEJ,KAEAiqC,EAAAA,EAAAA,UAAStd,KAAAA,UAA8B,YAAY,SAAUnlD,GAAU,WAC/Dg1E,EAAal9G,KAAK+mE,SAASW,OAAO2xC,MAAQ,GAC1C8D,EAAoBD,EAAWp2G,QAAO,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,aAAwB8pB,EAAIgtF,SAAS,IACxFgE,EAAsBF,EAAWp2G,QAAO,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,UAAmB,IACxEw5G,EAAiBZ,KAEjBmC,EAAiB9tG,SAASiqD,IAAI2J,MAAMC,UAAU,mBAC9Ck6C,EAAmB/tG,SAASiqD,IAAI2J,MAAMC,UAAU,qBAChDm6C,EAAiBhuG,SAASiqD,IAAI2J,MAAMC,UAAU,mBAC9Co6C,EAAmBjuG,SAASiqD,IAAI2J,MAAMC,UAAU,uBAGjD85C,EAAWz4G,QAA6B,IAAnB84G,GAA6C,IAArBC,GAC9CL,EAAkB14G,OAAS44G,GAC3BD,EAAoB34G,OAAS64G,IAC/BxB,EAAer3G,OAEf+0D,IAAI0C,MAAMxvD,KAAKowG,GAAoB,CACjCf,aAAcmB,EACdh4C,SAAU,SAACm0C,GACT,EAAKtyC,SAASW,OAAO2xC,KAAOA,EAC5BnxE,GACF,IAGFA,GAEJ,KAGAznC,EAAAA,EAAAA,QAAO4sF,KAAAA,UAA8B,QAAQ,SAAU1rF,GACrDA,EAAKsmE,cAAgBtmE,EAAKsmE,eAAiB,CAAC,EAC5CtmE,EAAKsmE,cAAcoxC,KAAOr5G,KAAK+mE,SAASW,OAAO2xC,IACjD,GACF,CC/FA,MAAM,GAA+B9B,OAAOC,KAAK/D,OAAO,mCCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,2CCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,kCCGnCgK,GAAoB,uEAChCliD,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAS,UAAC7wC,GAEhB,IAAMgzF,EAAUhzF,EAAMy9C,KAAK/xC,UAAU,GAC/BunF,EAAUjzF,EAAMy9C,KAAK/xC,UAAU,GAErC,SAASwnF,EAASC,EAAOC,GACvB,OAAOD,EAAM/2G,QAAO,SAACslB,GAAG,OAA6B,IAAxB0xF,EAAM58F,QAAQkL,EAAW,IAAExkB,KAAI,SAAC+hB,GAAE,OAAK6vC,IAAImiB,MAAM3vD,QAAQ,OAAQrC,EAAG,GACnG,CAEAe,EAAMqzF,UAAYH,EAASD,EAASD,GACpChzF,EAAMszF,YAAcJ,EAASF,EAASC,EACxC,EAAC,kBAoCA,OApCA,EAEDz9C,KAAA,WACE,MAAO,YACT,EAAC,EAED4sB,eAAA,WACE,OAAI9sF,KAAK0qB,MAAMqzF,UAAUt5G,OACnBzE,KAAK0qB,MAAMszF,YAAYv5G,OAClB,4DAGF,gDAGF,iDACT,EAAC,EAEDooF,gBAAA,WACE,IAAMlrF,EAAO,CAAC,EAgBd,OAdI3B,KAAK0qB,MAAMqzF,UAAUt5G,SACvB9C,EAAKo8G,UAAYvkD,IAAIiH,WAAWC,MAAM,0CAA2C,CAC/E24C,KAAM2B,GAAUh7G,KAAK0qB,MAAMqzF,UAAW,CAAE9/B,MAAM,IAC9CxnE,MAAOzW,KAAK0qB,MAAMqzF,UAAUt5G,UAI5BzE,KAAK0qB,MAAMszF,YAAYv5G,SACzB9C,EAAKq8G,YAAcxkD,IAAIiH,WAAWC,MAAM,0CAA2C,CACjF24C,KAAM2B,GAAUh7G,KAAK0qB,MAAMszF,YAAa,CAAE//B,MAAM,IAChDxnE,MAAOzW,KAAK0qB,MAAMszF,YAAYv5G,UAI3B9C,CACT,EAAC,EAjDsC,QAASgrF,ICHlD,MAAM,GAA+B4qB,OAAOC,KAAK/D,OAAO,wCCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,+BCInC31C,GAAG,uFAiErB,OAjEqB,EACtBjrD,KAAA,WACE,OAAO6oE,KAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAAC,EACD8+D,KAAA,WACE,OAAO4c,KAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAAC,EACD20E,YAAA,WACE,OAAO+G,KAAAA,UAA+B,eAAe37E,KAAKC,KAC5D,EAAC,EAEDqX,MAAA,WACE,OAAOqkE,KAAAA,UAA+B,SAAS37E,KAAKC,KACtD,EAAC,EACDi+G,cAAA,WACE,OAAOviC,KAAAA,UAA+B,iBAAiB37E,KAAKC,KAC9D,EAAC,EACDk+G,eAAA,WACE,OAAOxiC,KAAAA,UAA+B,kBAAkB37E,KAAKC,KAC/D,EAAC,EACDkgE,KAAA,WACE,OAAOwb,KAAAA,UAA+B,QAAQ37E,KAAKC,KACrD,EAAC,EAEDsC,SAAA,WACE,OAAOo5E,KAAAA,UAA+B,YAAY37E,KAAKC,KACzD,EAAC,EACD0E,OAAA,WACE,OAAOg3E,KAAAA,OAAyB,UAAU37E,KAAKC,KACjD,EAAC,EACDs1B,SAAA,WACE,OAAOomD,KAAAA,QAAmB,YAAY37E,KAAKC,KAC7C,EAAC,EACDm+G,YAAA,WACE,OAAOziC,KAAAA,UAA+B,eAAe37E,KAAKC,KAC5D,EAAC,EACDo5G,QAAA,WACE,OAAO19B,KAAAA,UAAyB,WAAW37E,KAAKC,KAClD,EAAC,EACDisE,SAAA,WACE,OAAOyP,KAAAA,UAAyB,YAAY37E,KAAKC,KACnD,EAAC,EAED0pF,gBAAA,WACE,OAAOhO,KAAAA,UAAwB,mBAAmB37E,KAAKC,KACzD,EAAC,EACD09E,aAAA,WACE,OAAOhC,KAAAA,UAAgB,eAAgBA,KAAAA,eAAqB37E,KAAKC,KACnE,EAAC,EACDq6G,qBAAA,WACE,OAAO3+B,KAAAA,OAAgC,wBAAwB37E,KAAKC,KACtE,EAAC,EAEDo+G,aAAA,WACE,OAAO1iC,KAAAA,UAAyB,gBAAgB37E,KAAKC,KACvD,EAAC,EACDiuF,mBAAA,WACE,OAAOvS,KAAAA,UAAyB,sBAAsB37E,KAAKC,KAC7D,EAAC,EACDm7G,mBAAA,WACE,OAAOz/B,KAAAA,UAAyB,sBAAsB37E,KAAKC,KAC7D,EAAC,EAED28G,UAAA,WACE,OAAO9zE,KAAwB,WAAY,UAAU,SAACvmC,EAAUoC,GAAM,OAAkB,OAAbpC,IAAgC,IAAXoC,CAAgB,IAAE3E,KAAKC,KACzH,EAAC,EAjEqB,CAAS07E,MCDjC,WACE,IAAI+8B,KAAAA,QACD3/F,IAAI,OAAQglD,KCKjB,GAAe,UACVugD,GAAY,EAEf,IAAI5F,KAAAA,SACD3/F,IAAI,OAAQ,QAAS+gG,GACrB/gG,IAAI,MAAO,WAAY00E,KACvB8jB,OAAO,OAAO,SAACllF,GAAG,OAAKotC,IAAAA,MAAU,MAAO,CAAE6/C,KAAMjtF,EAAI0yC,QAAS,KAEhE,IAAI25C,KAAAA,YACD3/F,IAAI,mBAAoB2kG,IAE3B,IAAIhF,KAAAA,OAAah7B,MACdf,QAAa,QACbtZ,UAAmB,YCfxB,IACE,sBAAuBo2C,EACvB,kBAAmB17C,GACnB,yBAA0Bk9C,GAC1B,uBAAwB/B,EACxB,wBAAyBK,EACzB,oCAAqCgC,GACrC,2BAA4BxC,GCD9B,GAAer3F,OAAOs+B,OAAO0zD,GAAQ,CACnC,oBAAqB6K,GACrB,qBAAsBC,GACtB,0BAA2B7D,EAC3B,qCAAsCoC,GACtC,2BAA4BjD,EAC5B,uCAAwC4D,GACxC,gCAAiCtE,EACjC,kBAAmBqF,EACnB,oBAAqBC,GACrB,sBAAuBC,GACvB,+BAAgCxD,KCzB5B,GAA+B3D,OAAOC,KCY5Ch+C,IAAAA,aAAAA,IAAqB,eAAe,WAClCA,IAAAA,QAAc,IAAIs/C,EAElB0F,IACAF,KACAG,KACAF,KACAG,IACF,IAMAj9F,OAAOs+B,OAAO0zD,GAAAA,OAAQkL,mBC1BtB,IAAIzrD,EAAUhU,EAAAA,IAAAA,QACd,SAASkU,IACP,aACA17C,EAAOC,QAAUy7C,EAAsB,WACrC,OAAOz7C,CACT,EAAGD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACb07C,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eACZyvB,EAAiBza,OAAOya,gBAAkB,SAAUnvB,EAAKD,EAAKi5C,GAC5Dh5C,EAAID,GAAOi5C,EAAKh/C,KAClB,EACAusD,EAAU,mBAAqBluC,OAASA,OAAS,CAAC,EAClDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAC7C,SAASC,EAAO7mD,EAAKD,EAAK/F,GACxB,OAAO0a,OAAOya,eAAenvB,EAAKD,EAAK,CACrC/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IACR12B,EAAID,EACV,CACA,IACE8mD,EAAO,CAAC,EAAG,GAKb,CAJE,MAAO5yB,GACP4yB,EAAS,SAAgB7mD,EAAKD,EAAK/F,GACjC,OAAOgG,EAAID,GAAO/F,CACpB,CACF,CACA,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GACpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EACjFC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IACvC,OAAO73B,EAAeg4B,EAAW,UAAW,CAC1CntD,MAAOqtD,EAAiBP,EAAS7mD,EAAM6G,KACrCqgD,CACN,CACA,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CACLlgB,KAAM,SACNkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAOtB,CALE,MAAO8b,GACP,MAAO,CACLh8B,KAAM,QACNkgB,IAAK8b,EAET,CACF,CACArpB,EAAQ2oB,KAAOA,EACf,IAAIg0B,EAAmB,CAAC,EACxB,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBb,EAAOa,EAAmBlB,GAAgB,WACxC,OAAOvzD,IACT,IACA,IAAIwhB,EAAWC,OAAOC,eACpBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MACjE81B,GAA2BA,IAA4BrB,GAAMxxC,EAAO9hB,KAAK20D,EAAyBnB,KAAoBkB,EAAoBC,GAC1I,IAAIC,EAAKH,EAA2B70D,UAAYs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GACpF,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAAUmgB,GAC5C88B,EAAOj0D,EAAWm3B,GAAQ,SAAU5R,GAClC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC9B,GACF,GACF,CACA,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAI,UAAY+vC,EAAOjwD,KAAM,CAC3B,IAAIypB,EAASwmC,EAAO/vC,IAClBne,EAAQ0nB,EAAO1nB,MACjB,OAAOA,GAAS,UAAYmsD,EAAQnsD,IAAU8a,EAAO9hB,KAAKgH,EAAO,WAAaguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAAUlwB,GAC9HiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EACjC,IAAG,SAAUoK,GACXg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAChC,IAAKm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAAUk+B,GAC7C1mC,EAAO1nB,MAAQouD,EAAWx+B,EAAQlI,EACpC,IAAG,SAAUpK,GACX,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACzC,GACF,CACAA,EAAOq+B,EAAO/vC,IAChB,CACA,IAAIkwC,EACJl5B,EAAel8B,KAAM,UAAW,CAC9B+G,MAAO,SAAe+vB,EAAQ5R,GAC5B,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAAUp+B,EAASC,GACxCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC/B,GACF,CACA,OAAOw+B,EAAkBA,EAAkBA,EAAgBn+B,KAAKo+B,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASjB,EAAiBP,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQ,iBACZ,OAAO,SAAUvB,EAAQ5R,GACvB,GAAI,cAAgBmT,EAAO,MAAM,IAAIxsB,MAAM,gCAC3C,GAAI,cAAgBwsB,EAAO,CACzB,GAAI,UAAYvB,EAAQ,MAAM5R,EAC9B,MA8EG,CACLne,WAAO+L,EACP0T,MAAM,EA/EN,CACA,IAAK3S,EAAQijB,OAASA,EAAQjjB,EAAQqR,IAAMA,IAAO,CACjD,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CACA,GAAI,SAAWzhD,EAAQijB,OAAQjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAAS,GAAI,UAAYrR,EAAQijB,OAAQ,CAC7G,GAAI,mBAAqBuB,EAAO,MAAMA,EAAQ,YAAaxkB,EAAQqR,IACnErR,EAAQ6hD,kBAAkB7hD,EAAQqR,IACpC,KAAO,WAAarR,EAAQijB,QAAUjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KACvEmT,EAAQ,YACR,IAAI48B,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAI,WAAaohD,EAAOjwD,KAAM,CAC5B,GAAIqzB,EAAQxkB,EAAQ2S,KAAO,YAAc,iBAAkByuC,EAAO/vC,MAAQovC,EAAkB,SAC5F,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAElB,CACA,UAAYyuC,EAAOjwD,OAASqzB,EAAQ,YAAaxkB,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAClG,CACF,CACF,CACA,SAASqwC,EAAoBjX,EAAUzqC,GACrC,IAAIijB,EAASwnB,EAASj5B,SAASxR,EAAQijB,QACvC,QAAIhkB,IAAcgkB,EAAQ,CACxB,GAAIjjB,EAAQyqC,SAAW,KAAM,UAAYzqC,EAAQijB,OAAQ,CACvD,GAAIwnB,EAASj5B,SAAiB,SAAMxR,EAAQijB,OAAS,SAAUjjB,EAAQqR,SAAMpS,EAAWyiD,EAAoBjX,EAAUzqC,GAAU,UAAYA,EAAQijB,QAAS,OAAOw9B,EACpKzgD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,iDACxD,CACA,OAAOk7B,CACT,CACA,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KACzD,GAAI,UAAY+vC,EAAOjwD,KAAM,OAAO6O,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAAKrR,EAAQyqC,SAAW,KAAMgW,EACjH,IAAIsB,EAAOX,EAAO/vC,IAClB,OAAO0wC,EAAOA,EAAKpvC,MAAQ3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAAO8M,EAAQqV,KAAOo1B,EAASwX,QAAS,WAAajiD,EAAQijB,SAAWjjB,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,GAAYe,EAAQyqC,SAAW,KAAMgW,GAAoBsB,GAAQ/hD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAAqCvlB,EAAQyqC,SAAW,KAAMgW,EACrW,CACA,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CACVwQ,OAAQD,EAAK,IAEf,KAAKA,IAASvQ,EAAMyQ,SAAWF,EAAK,IAAK,KAAKA,IAASvQ,EAAM0Q,WAAaH,EAAK,GAAIvQ,EAAM2Q,SAAWJ,EAAK,IAAKh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACrI,CACA,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBAAiBiwD,EAAO/vC,IAAKugC,EAAM8Q,WAAatB,CAChE,CACA,SAASd,EAAQJ,GACf/zD,KAAKq2D,WAAa,CAAC,CACjBJ,OAAQ,SACNlC,EAAYp9C,QAAQo/C,EAAc/1D,MAAOA,KAAKgxB,OAAM,EAC1D,CACA,SAAS4N,EAAO43B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EAAgB,OAAOA,EAAe12D,KAAKy2D,GAC/C,GAAI,mBAAqBA,EAASttC,KAAM,OAAOstC,EAC/C,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EACPiiB,EAAO,SAASA,IACd,OAASjiB,EAAIuvD,EAAS/xD,QACpB,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAAI,OAAOiiB,EAAKniB,MAAQyvD,EAASvvD,GAAIiiB,EAAK1C,MAAO,EAAI0C,EAEjF,OAAOA,EAAKniB,WAAQ+L,EAAWoW,EAAK1C,MAAO,EAAI0C,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMwtC,EAEV,CACA,SAASA,IACP,MAAO,CACL3vD,WAAO+L,EACP0T,MAAM,EAEV,CACA,OAAO+tC,EAAkB50D,UAAY60D,EAA4Bt4B,EAAey4B,EAAI,cAAe,CACjG5tD,MAAOytD,EACPr4B,cAAc,IACZD,EAAes4B,EAA4B,cAAe,CAC5DztD,MAAOwtD,EACPp4B,cAAc,IACZo4B,EAAkBoC,YAAc/C,EAAOY,EAA4Bd,EAAmB,qBAAsB/7C,EAAQi/C,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOjrD,YACjD,QAASkrD,IAASA,IAASvC,GAAqB,uBAAyBuC,EAAKH,aAAeG,EAAKjkD,MACpG,EAAG8E,EAAQo/C,KAAO,SAAUF,GAC1B,OAAOp1C,OAAOixC,eAAiBjxC,OAAOixC,eAAemE,EAAQrC,IAA+BqC,EAAOrK,UAAYgI,EAA4BZ,EAAOiD,EAAQnD,EAAmB,sBAAuBmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAAKkC,CAC5O,EAAGl/C,EAAQq/C,MAAQ,SAAU9xC,GAC3B,MAAO,CACLgwC,QAAShwC,EAEb,EAAG0vC,EAAsBE,EAAcn1D,WAAYi0D,EAAOkB,EAAcn1D,UAAW6zD,GAAqB,WACtG,OAAOxzD,IACT,IAAI2X,EAAQm9C,cAAgBA,EAAen9C,EAAQs/B,MAAQ,SAAU4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxG,IAAWA,IAAgBA,EAAcpV,SACzC,IAAIsX,EAAO,IAAInC,EAAcx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAAcgB,GACxE,OAAOp9C,EAAQi/C,oBAAoB9C,GAAWmD,EAAOA,EAAK/tC,OAAO+N,MAAK,SAAUxI,GAC9E,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC3C,GACF,EAAG0rC,EAAsBD,GAAKf,EAAOe,EAAIjB,EAAmB,aAAcE,EAAOe,EAAIpB,GAAgB,WACnG,OAAOvzD,IACT,IAAI4zD,EAAOe,EAAI,YAAY,WACzB,MAAO,oBACT,IAAIh9C,EAAQuI,KAAO,SAAUhgB,GAC3B,IAAIi3B,EAAS1V,OAAOvhB,GAClBggB,EAAO,GACT,IAAK,IAAIpT,KAAOqqB,EACdjX,EAAKhL,KAAKpI,GAEZ,OAAOoT,EAAKmW,UAAW,SAASnN,IAC9B,KAAOhJ,EAAKzb,QAAS,CACnB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAAQ,OAAOjO,EAAKniB,MAAQ+F,EAAKoc,EAAK1C,MAAO,EAAI0C,CAC9D,CACA,OAAOA,EAAK1C,MAAO,EAAI0C,CACzB,CACF,EAAGvR,EAAQinB,OAASA,EAAQu1B,EAAQx0D,UAAY,CAC9CiM,YAAauoD,EACbnjC,MAAO,SAAekmC,GACpB,GAAIl3D,KAAKw1B,KAAO,EAAGx1B,KAAKkpB,KAAO,EAAGlpB,KAAKw1D,KAAOx1D,KAAKy1D,WAAQ3iD,EAAW9S,KAAKwmB,MAAO,EAAIxmB,KAAKs+C,SAAW,KAAMt+C,KAAK82B,OAAS,OAAQ92B,KAAKklB,SAAMpS,EAAW9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAAiBY,EAAe,IAAK,IAAIrkD,KAAQ7S,KAC/N,MAAQ6S,EAAKyyC,OAAO,IAAMzjC,EAAO9hB,KAAKC,KAAM6S,KAAUpD,OAAOoD,EAAK0C,MAAM,MAAQvV,KAAK6S,QAAQC,EAEjG,EACAoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EACZ,IAAI2wC,EAAan3D,KAAKq2D,WAAW,GAAGE,WACpC,GAAI,UAAYY,EAAWnyD,KAAM,MAAMmyD,EAAWjyC,IAClD,OAAOllB,KAAKo3D,IACd,EACA1B,kBAAmB,SAA2B2B,GAC5C,GAAIr3D,KAAKwmB,KAAM,MAAM6wC,EACrB,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GACnB,OAAOtC,EAAOjwD,KAAO,QAASiwD,EAAO/vC,IAAMmyC,EAAWxjD,EAAQqV,KAAOouC,EAAKC,IAAW1jD,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,KAAcykD,CAC5I,CACA,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC1BguD,EAASxP,EAAM8Q,WACjB,GAAI,SAAW9Q,EAAMwQ,OAAQ,OAAO3iD,EAAO,OAC3C,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAChCgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAClC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GAC9D,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,MAAO,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OACzD,CACL,IAAKuB,EAAY,MAAM,IAAI5rD,MAAM,0CACjC,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,CACF,CACF,CACF,EACAR,OAAQ,SAAgB3wD,EAAMkgB,GAC5B,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MAAQ3T,EAAO9hB,KAAK0lD,EAAO,eAAiBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CACjG,IAAIuB,EAAejS,EACnB,KACF,CACF,CACAiS,IAAiB,UAAY1yD,GAAQ,aAAeA,IAAS0yD,EAAazB,QAAU/wC,GAAOA,GAAOwyC,EAAavB,aAAeuB,EAAe,MAC7I,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EACvD,OAAOtB,EAAOjwD,KAAOA,EAAMiwD,EAAO/vC,IAAMA,EAAKwyC,GAAgB13D,KAAK82B,OAAS,OAAQ92B,KAAKkpB,KAAOwuC,EAAavB,WAAY7B,GAAoBt0D,KAAKgP,SAASimD,EAC5J,EACAjmD,SAAU,SAAkBimD,EAAQmB,GAClC,GAAI,UAAYnB,EAAOjwD,KAAM,MAAMiwD,EAAO/vC,IAC1C,MAAO,UAAY+vC,EAAOjwD,MAAQ,aAAeiwD,EAAOjwD,KAAOhF,KAAKkpB,KAAO+rC,EAAO/vC,IAAM,WAAa+vC,EAAOjwD,MAAQhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAAKllB,KAAK82B,OAAS,SAAU92B,KAAKkpB,KAAO,OAAS,WAAa+rC,EAAOjwD,MAAQoxD,IAAap2D,KAAKkpB,KAAOktC,GAAW9B,CACtQ,EACAvjB,OAAQ,SAAgBolB,GACtB,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAAY,OAAOn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UAAWE,EAAc7Q,GAAQ6O,CACrH,CACF,EACA,MAAS,SAAgB2B,GACvB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAI,UAAYtB,EAAOjwD,KAAM,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EAChB,CACA,OAAOkS,CACT,CACF,CACA,MAAM,IAAI9rD,MAAM,wBAClB,EACA+rD,cAAe,SAAuBpB,EAAUX,EAAYC,GAC1D,OAAO91D,KAAKs+C,SAAW,CACrBj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GACR,SAAW91D,KAAK82B,SAAW92B,KAAKklB,SAAMpS,GAAYwhD,CACvD,GACC38C,CACL,CACAD,EAAOC,QAAUy7C,EAAqB17C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,gBC1T3G,SAASu7C,EAAQnmD,GAGf,OAAQ2K,EAAOC,QAAUu7C,EAAU,mBAAqB9tC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUtY,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBqY,QAAUrY,EAAInB,cAAgBwZ,QAAUrY,IAAQqY,OAAOzlB,UAAY,gBAAkBoN,CAC1H,EAAG2K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QAAUu7C,EAAQnmD,EAC5F,CACA2K,EAAOC,QAAUu7C,EAASx7C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,uBCP/F,IAAIygD,EAAUlZ,EAAQ,IAARA,GACdxnC,EAAOC,QAAUygD,EAGjB,IACEC,mBAAqBD,CAOvB,CANE,MAAOE,GACmB,iBAAfx4C,WACTA,WAAWu4C,mBAAqBD,EAEhCr4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAE5C,ICbIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU/gD,EAAQA,EAAOC,QAAS6gD,GAG/C9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO;;;;;;;MCJ9D,IAAIyxD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCWxDj6C,IAAAA,aAAAA,IACE,mBACA,WACEikB,IAAAA,UAAAA,WAAkCA,IAAAA,UAAqB,eAEvDh9E,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAU9f,GAC1C39D,KAAK4+G,cAAiBjhD,EAAMjoC,IAAI,WACnCioC,EAAM7kD,IACJ,mBACA,EAAC,IAAK,CAAC9T,KAAK,mBAAmBk7D,KAAK,eAAeY,MAAOtH,IAAAA,WAAAA,MAAqB,2DAGrF,IAEA6tB,IAAAA,UAAAA,WAA4BA,IAAAA,UAAe,cAC3CA,IAAAA,UAAAA,WAA4BA,IAAAA,UAAe,eAE3C5mF,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,gBAAgB,SAAUnjD,GACxD1qB,KAAK0qB,MAAMwzC,WAAW0gD,eACzBl0F,EAAMoB,WAAa,kCAEvB,KAEArrB,EAAAA,EAAAA,QAAOwyE,IAAAA,UAAyB,gBAAgB,SAAUvoD,GACnD1qB,KAAK0qB,MAAMy9C,KAAKy2C,eACnBl0F,EAAMoB,WAAa,oBAEvB,KAEArrB,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAAUvuB,GAChD39D,KAAK0qB,MAAMy9C,KAAKy2C,cAAiB5+G,KAAK0qB,MAAMy9C,KAAK8D,YACpDtO,EAAM7kD,IAAI,aAAc0gD,IAAAA,WAAAA,MAAqB,qDAEjD,KAEAmxC,EAAAA,EAAAA,UAAS13B,IAAAA,UAAyB,cAAc,SAAU/qC,EAAU9Q,GAClE,MAAoB,aAAhBA,EAAKpyB,OACAw0D,IAAAA,WAAAA,MAAqB,qDAGvBtxB,EAAS9Q,EAClB,KAEA32B,EAAAA,EAAAA,QAAO6mF,IAAc,uBAAuB,SAAU3pB,EAAOwK,IACtDA,EAAKy2C,cAAgBz2C,EAAK02C,cAC7BlhD,EAAM7kD,IACJ,UACA,EAAC,IAAM,CAAConD,KAAK,eAAe5d,QAASglC,IAAAA,cAAAA,KAAgCnf,IAClE3O,IAAAA,WAAAA,MAAqB,uDAExB,GAGN,IAEA8tB,IAAAA,cAA6B,WAC3BtnF,KAAKkoE,KAAK,CAAE02C,YAAY,IAEF,IAAlB5+G,KAAKwgE,UACPxgE,KAAKk+D,aAAa6d,eAAe,CAAE6iC,YAAY,GAEnD,CACF,IACC,G;;;;;;;6BC1EiElnG,EAAOC,QAAmI,WAAW,aAAa,IAAUpU,EAAE,IAAI0R,EAAE,KAAK2C,EAAE,cAAc3Q,EAAE,SAAS6D,EAAE,SAASM,EAAE,OAAO1B,EAAE,MAAM+H,EAAE,OAAOoD,EAAE,QAAQkB,EAAE,UAAUpB,EAAE,OAAOC,EAAE,OAAO1N,EAAE,eAAe7G,EAAE,6FAA6FwX,EAAE,sFAAsFC,EAAE,CAACjF,KAAK,KAAKkF,SAAS,2DAA2DhM,MAAM,KAAKiM,OAAO,wFAAwFjM,MAAM,KAAKkM,QAAQ,SAASC,GAAG,IAAI3U,EAAE,CAAC,KAAK,KAAK,KAAK,MAAM0R,EAAEiD,EAAE,IAAI,MAAM,IAAIA,GAAG3U,GAAG0R,EAAE,IAAI,KAAK1R,EAAE0R,IAAI1R,EAAE,IAAI,GAAG,GAAGyR,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEO,OAAOD,GAAG,OAAON,GAAGA,EAAEnT,QAAQlB,EAAE2U,EAAE,GAAGxY,MAAM6D,EAAE,EAAEqU,EAAEnT,QAAQ2T,KAAKnD,GAAGiD,CAAC,EAAEG,EAAE,CAACvN,EAAEkK,EAAEsD,EAAE,SAASJ,GAAG,IAAI3U,GAAG2U,EAAEK,YAAYtD,EAAEhS,KAAKuV,IAAIjV,GAAGqU,EAAE3U,KAAKwV,MAAMxD,EAAE,IAAIhO,EAAEgO,EAAE,GAAG,OAAO1R,GAAG,EAAE,IAAI,KAAKyR,EAAE4C,EAAE,EAAE,KAAK,IAAI5C,EAAE/N,EAAE,EAAE,IAAI,EAAE+N,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,GAAG1R,EAAEmV,OAAOzD,EAAEyD,OAAO,OAAOR,EAAEjD,EAAE1R,GAAG,IAAIqU,EAAE,IAAI3C,EAAE0D,OAAOpV,EAAEoV,SAAS1D,EAAE2D,QAAQrV,EAAEqV,SAAS3R,EAAE1D,EAAEsV,QAAQC,IAAIlB,EAAE/C,GAAG/J,EAAEmK,EAAEhO,EAAE,EAAEmE,EAAE7H,EAAEsV,QAAQC,IAAIlB,GAAG9M,GAAG,EAAE,GAAG+J,GAAG,UAAU+C,GAAG3C,EAAEhO,IAAI6D,EAAE7D,EAAEmE,EAAEA,EAAEnE,KAAK,EAAE,EAAEyC,EAAE,SAASwO,GAAG,OAAOA,EAAE,EAAEjV,KAAK8V,KAAKb,IAAI,EAAEjV,KAAKwV,MAAMP,EAAE,EAAEtN,EAAE,SAASsN,GAAG,MAAM,CAACJ,EAAEjD,EAAEgD,EAAElD,EAAEqE,EAAEvH,EAAEmD,EAAElL,EAAEuP,EAAErE,EAAEmB,EAAE3K,EAAE4J,EAAElK,EAAEA,EAAIoO,GAAGtB,EAAEuB,EAAEpD,GAAGmC,IAAIC,OAAOD,GAAG,IAAI1R,cAAc7C,QAAQ,KAAK,GAAG,EAAEyH,EAAE,SAAS8M,GAAG,YAAO,IAASA,CAAC,GAAGpD,EAAE,KAAKmE,EAAE,CAAC,EAAEA,EAAEnE,GAAGgD,EAAE,IAAIlN,EAAE,SAASsN,GAAG,OAAOA,aAAakB,CAAC,EAAEC,EAAE,SAASnB,EAAE3U,EAAE0R,EAAE2C,GAAG,IAAI3Q,EAAE,IAAI1D,EAAE,OAAOuR,EAAE,GAAG,iBAAiBvR,EAAE,CAAC,IAAIuH,EAAEvH,EAAEiD,cAAcyS,EAAEnO,KAAK7D,EAAE6D,GAAGmK,IAAIgE,EAAEnO,GAAGmK,EAAEhO,EAAE6D,GAAG,IAAIM,EAAE7H,EAAEwI,MAAM,KAAK,IAAI9E,GAAGmE,EAAE3G,OAAO,EAAE,OAAOyT,EAAE9M,EAAE,GAAG,KAAK,CAAC,IAAI1B,EAAEnG,EAAEsP,KAAKoG,EAAEvP,GAAGnG,EAAE0D,EAAEyC,CAAC,CAAC,OAAOkO,GAAG3Q,IAAI6N,EAAE7N,GAAGA,IAAI2Q,GAAG9C,CAAC,EAAEkE,EAAE,SAASd,EAAE3U,GAAG,GAAGqH,EAAEsN,GAAG,OAAOA,EAAEW,QAAQ,IAAI5D,EAAE,iBAAiB1R,EAAEA,EAAE,CAAC,EAAE,OAAO0R,EAAEyD,KAAKR,EAAEjD,EAAEqE,KAAK5F,UAAU,IAAI0F,EAAEnE,EAAE,EAAEsE,EAAElB,EAAEkB,EAAErS,EAAEmS,EAAEE,EAAEtS,EAAE2D,EAAE2O,EAAEP,EAAE,SAASd,EAAE3U,GAAG,OAAOyV,EAAEd,EAAE,CAACsB,OAAOjW,EAAEkW,GAAGC,IAAInW,EAAEoW,GAAGC,EAAErW,EAAEsW,GAAGC,QAAQvW,EAAEuW,SAAS,EAAE,IAAIV,EAAE,WAAW,SAAStB,EAAEI,GAAGlY,KAAKyZ,GAAGJ,EAAEnB,EAAEsB,OAAO,MAAK,GAAIxZ,KAAK+Z,MAAM7B,EAAE,CAAC,IAAIlD,EAAE8C,EAAEnY,UAAU,OAAOqV,EAAE+E,MAAM,SAAS7B,GAAGlY,KAAKga,GAAG,SAAS9B,GAAG,IAAI3U,EAAE2U,EAAEQ,KAAKzD,EAAEiD,EAAEwB,IAAI,GAAG,OAAOnW,EAAE,OAAO,IAAI0W,KAAKC,KAAK,GAAGX,EAAEnO,EAAE7H,GAAG,OAAO,IAAI0W,KAAK,GAAG1W,aAAa0W,KAAK,OAAO,IAAIA,KAAK1W,GAAG,GAAG,iBAAiBA,IAAI,MAAMgB,KAAKhB,GAAG,CAAC,IAAIqU,EAAErU,EAAEqD,MAAMvG,GAAG,GAAGuX,EAAE,CAAC,IAAI3Q,EAAE2Q,EAAE,GAAG,GAAG,EAAE9M,GAAG8M,EAAE,IAAI,KAAKuC,UAAU,EAAE,GAAG,OAAOlF,EAAE,IAAIgF,KAAKA,KAAKG,IAAIxC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,IAAI,IAAImP,KAAKrC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,EAAE,CAAC,CAAC,OAAO,IAAImP,KAAK1W,EAAE,CAA3X,CAA6X2U,GAAGlY,KAAK6Z,GAAG3B,EAAE0B,GAAG,CAAC,EAAE5Z,KAAK8I,MAAM,EAAEkM,EAAElM,KAAK,WAAW,IAAIoP,EAAElY,KAAKga,GAAGha,KAAKqa,GAAGnC,EAAEoC,cAActa,KAAKua,GAAGrC,EAAEsC,WAAWxa,KAAKya,GAAGvC,EAAEwC,UAAU1a,KAAK2a,GAAGzC,EAAE0C,SAAS5a,KAAK6a,GAAG3C,EAAE4C,WAAW9a,KAAK+a,GAAG7C,EAAE8C,aAAahb,KAAKib,GAAG/C,EAAEgD,aAAalb,KAAKmb,IAAIjD,EAAEkD,iBAAiB,EAAEpG,EAAEqG,OAAO,WAAW,OAAO9B,CAAC,EAAEvE,EAAEsG,QAAQ,WAAW,QAAQtb,KAAKga,GAAGuB,aAAarU,EAAE,EAAE8N,EAAEwG,OAAO,SAAStD,EAAE3U,GAAG,IAAI0R,EAAE+D,EAAEd,GAAG,OAAOlY,KAAKyb,QAAQlY,IAAI0R,GAAGA,GAAGjV,KAAK0b,MAAMnY,EAAE,EAAEyR,EAAE2G,QAAQ,SAASzD,EAAE3U,GAAG,OAAOyV,EAAEd,GAAGlY,KAAKyb,QAAQlY,EAAE,EAAEyR,EAAE4G,SAAS,SAAS1D,EAAE3U,GAAG,OAAOvD,KAAK0b,MAAMnY,GAAGyV,EAAEd,EAAE,EAAElD,EAAE6G,GAAG,SAAS3D,EAAE3U,EAAE0R,GAAG,OAAOsE,EAAEnO,EAAE8M,GAAGlY,KAAKuD,GAAGvD,KAAK8b,IAAI7G,EAAEiD,EAAE,EAAElD,EAAE+G,KAAK,WAAW,OAAO9Y,KAAKwV,MAAMzY,KAAKgc,UAAU,IAAI,EAAEhH,EAAEgH,QAAQ,WAAW,OAAOhc,KAAKga,GAAGiC,SAAS,EAAEjH,EAAEyG,QAAQ,SAASvD,EAAE3U,GAAG,IAAI0R,EAAEjV,KAAK4X,IAAI2B,EAAEnO,EAAE7H,IAAIA,EAAEwS,EAAEwD,EAAE3O,EAAEsN,GAAGhR,EAAE,SAASgR,EAAE3U,GAAG,IAAI0D,EAAEsS,EAAEP,EAAE/D,EAAE0E,GAAGM,KAAKG,IAAInF,EAAEoF,GAAG9W,EAAE2U,GAAG,IAAI+B,KAAKhF,EAAEoF,GAAG9W,EAAE2U,GAAGjD,GAAG,OAAO2C,EAAE3Q,EAAEA,EAAEyU,MAAMhS,EAAE,EAAErJ,EAAE,SAAS6X,EAAE3U,GAAG,OAAOgW,EAAEP,EAAE/D,EAAEiH,SAAShE,GAAGzE,MAAMwB,EAAEiH,OAAO,MAAMtE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMrC,MAAMhS,IAAI0R,EAAE,EAAE4C,EAAE7X,KAAK2a,GAAG7C,EAAE9X,KAAKua,GAAGvF,EAAEhV,KAAKya,GAAGpC,EAAE,OAAOrY,KAAK2Z,GAAG,MAAM,IAAI,OAAO5D,GAAG,KAAKpB,EAAE,OAAOiD,EAAE1Q,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAK2N,EAAE,OAAO+C,EAAE1Q,EAAE,EAAE4Q,GAAG5Q,EAAE,EAAE4Q,EAAE,GAAG,KAAKrG,EAAE,IAAIqD,EAAE9U,KAAKmc,UAAUC,WAAW,EAAEnD,GAAGpB,EAAE/C,EAAE+C,EAAE,EAAEA,GAAG/C,EAAE,OAAO5N,EAAE0Q,EAAE5C,EAAEiE,EAAEjE,GAAG,EAAEiE,GAAGnB,GAAG,KAAKpO,EAAE,KAAKkL,EAAE,OAAOvU,EAAEgY,EAAE,QAAQ,GAAG,KAAKjN,EAAE,OAAO/K,EAAEgY,EAAE,UAAU,GAAG,KAAKvN,EAAE,OAAOzK,EAAEgY,EAAE,UAAU,GAAG,KAAKpR,EAAE,OAAO5G,EAAEgY,EAAE,eAAe,GAAG,QAAQ,OAAOrY,KAAK6Y,QAAQ,EAAE7D,EAAE0G,MAAM,SAASxD,GAAG,OAAOlY,KAAKyb,QAAQvD,GAAE,EAAG,EAAElD,EAAEqH,KAAK,SAASnE,EAAE3U,GAAG,IAAI0R,EAAExD,EAAE8H,EAAE3O,EAAEsN,GAAGnC,EAAE,OAAO/V,KAAK2Z,GAAG,MAAM,IAAIzS,GAAG+N,EAAE,CAAC,EAAEA,EAAEvL,GAAGqM,EAAE,OAAOd,EAAEL,GAAGmB,EAAE,OAAOd,EAAEJ,GAAGkB,EAAE,QAAQd,EAAEN,GAAGoB,EAAE,WAAWd,EAAE7J,GAAG2K,EAAE,QAAQd,EAAEnK,GAAGiL,EAAE,UAAUd,EAAEhO,GAAG8O,EAAE,UAAUd,EAAE2C,GAAG7B,EAAE,eAAed,GAAGxD,GAAGpR,EAAEoR,IAAI/H,EAAE1J,KAAKya,IAAIlX,EAAEvD,KAAK2a,IAAIpX,EAAE,GAAGkO,IAAIoD,GAAGpD,IAAIkD,EAAE,CAAC,IAAIkD,EAAE7X,KAAK6Y,QAAQiD,IAAIlH,EAAE,GAAGiD,EAAEmC,GAAG9S,GAAG7G,GAAGwX,EAAE/O,OAAO9I,KAAKga,GAAGnC,EAAEiE,IAAIlH,EAAE3R,KAAK4T,IAAI7W,KAAKya,GAAG5C,EAAEyE,gBAAgBtC,EAAE,MAAM9S,GAAGlH,KAAKga,GAAG9S,GAAG7G,GAAG,OAAOL,KAAK8I,OAAO9I,IAAI,EAAEgV,EAAE8G,IAAI,SAAS5D,EAAE3U,GAAG,OAAOvD,KAAK6Y,QAAQwD,KAAKnE,EAAE3U,EAAE,EAAEyR,EAAEuH,IAAI,SAASrE,GAAG,OAAOlY,KAAKuZ,EAAE3O,EAAEsN,KAAK,EAAElD,EAAE8D,IAAI,SAASlB,EAAE7B,GAAG,IAAInB,EAAE1N,EAAElH,KAAK4X,EAAE4E,OAAO5E,GAAG,IAAIvX,EAAEkZ,EAAE3O,EAAEmL,GAAG8B,EAAE,SAASK,GAAG,IAAI3U,EAAEyV,EAAE9R,GAAG,OAAOqS,EAAEP,EAAEzV,EAAEmV,KAAKnV,EAAEmV,OAAOzV,KAAK4M,MAAMqI,EAAEN,IAAI1Q,EAAE,EAAE,GAAG7G,IAAIwU,EAAE,OAAO7U,KAAK8b,IAAIjH,EAAE7U,KAAKua,GAAG3C,GAAG,GAAGvX,IAAIsU,EAAE,OAAO3U,KAAK8b,IAAInH,EAAE3U,KAAKqa,GAAGzC,GAAG,GAAGvX,IAAIqJ,EAAE,OAAOmO,EAAE,GAAG,GAAGxX,IAAIoR,EAAE,OAAOoG,EAAE,GAAG,IAAIC,GAAGlD,EAAE,CAAC,EAAEA,EAAE9J,GAAGvH,EAAEqR,EAAExJ,GAAG6J,EAAEL,EAAE3N,GAAvxI,IAA4xI2N,GAAGvU,IAAI,EAAE2U,EAAEhV,KAAKga,GAAGiC,UAAUrE,EAAEE,EAAE,OAAOyB,EAAEP,EAAEhE,EAAEhV,KAAK,EAAEgV,EAAEyH,SAAS,SAASvE,EAAE3U,GAAG,OAAOvD,KAAK8Y,KAAK,EAAEZ,EAAE3U,EAAE,EAAEyR,EAAE0H,OAAO,SAASxE,GAAG,IAAI3U,EAAEvD,KAAKiV,EAAEjV,KAAKmc,UAAU,IAAInc,KAAKsb,UAAU,OAAOrG,EAAE0H,aAAazV,EAAE,IAAI0Q,EAAEM,GAAG,uBAAuBjR,EAAEsS,EAAEjB,EAAEtY,MAAM8K,EAAE9K,KAAK6a,GAAGzP,EAAEpL,KAAK+a,GAAGrR,EAAE1J,KAAKua,GAAG9I,EAAEwD,EAAE8C,SAASlD,EAAEI,EAAE+C,OAAOjC,EAAE,SAASmC,EAAEjD,EAAEhO,EAAE6D,GAAG,OAAOoN,IAAIA,EAAEjD,IAAIiD,EAAE3U,EAAEqU,KAAK3Q,EAAEgO,GAAGM,MAAM,EAAEzK,EAAE,EAAE6J,EAAE,SAASuD,GAAG,OAAOqB,EAAEzO,EAAEA,EAAE,IAAI,GAAGoN,EAAE,IAAI,EAAEtD,EAAEK,EAAE2H,UAAU,SAAS1E,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEM,EAAE,GAAG,KAAK,KAAK,OAAOjD,EAAE2C,EAAEpR,cAAcoR,CAAC,EAAEvX,EAAE,CAACwc,GAAG1E,OAAOnY,KAAKqa,IAAI9E,OAAO,GAAGuH,KAAK9c,KAAKqa,GAAGvC,EAAEpO,EAAE,EAAEqT,GAAGxD,EAAEzO,EAAEpB,EAAE,EAAE,EAAE,KAAKsT,IAAIjH,EAAEd,EAAEgI,YAAYvT,EAAEmL,EAAE,GAAGqI,KAAKnH,EAAElB,EAAEnL,GAAGuP,EAAEjZ,KAAKya,GAAG0C,GAAG5D,EAAEzO,EAAE9K,KAAKya,GAAG,EAAE,KAAK7F,EAAEuD,OAAOnY,KAAK2a,IAAIyC,GAAGrH,EAAEd,EAAEoI,YAAYrd,KAAK2a,GAAGlJ,EAAE,GAAG6L,IAAIvH,EAAEd,EAAEsI,cAAcvd,KAAK2a,GAAGlJ,EAAE,GAAG+L,KAAK/L,EAAEzR,KAAK2a,IAAI8C,EAAEtF,OAAOrN,GAAG4S,GAAGnE,EAAEzO,EAAEA,EAAE,EAAE,KAAKiL,EAAEpB,EAAE,GAAGgJ,GAAGhJ,EAAE,GAAGjL,EAAEkL,EAAE9J,EAAEM,GAAE,GAAIwS,EAAEhJ,EAAE9J,EAAEM,GAAE,GAAI4J,EAAEmD,OAAO/M,GAAGyS,GAAGtE,EAAEzO,EAAEM,EAAE,EAAE,KAAKN,EAAEqN,OAAOnY,KAAKib,IAAI6C,GAAGvE,EAAEzO,EAAE9K,KAAKib,GAAG,EAAE,KAAK8C,IAAIxE,EAAEzO,EAAE9K,KAAKmb,IAAI,EAAE,KAAK6C,EAAE/W,GAAG,OAAO2Q,EAAEjU,QAAQkU,GAAG,SAASK,EAAE3U,GAAG,OAAOA,GAAGlD,EAAE6X,IAAIjR,EAAEtD,QAAQ,IAAI,GAAG,GAAG,EAAEqR,EAAEuD,UAAU,WAAW,OAAO,IAAItV,KAAK4M,MAAM7P,KAAKga,GAAGiE,oBAAoB,GAAG,EAAEjJ,EAAEkJ,KAAK,SAAStG,EAAEhD,EAAE1N,GAAG,IAAI7G,EAAEwX,EAAE0B,EAAE3O,EAAEgK,GAAGkD,EAAEkB,EAAEpB,GAAG5C,GAAG8C,EAAES,YAAYvY,KAAKuY,aAAahV,EAAE8U,EAAErY,KAAK8X,EAAEhD,EAAEyE,EAAEvE,EAAEhV,KAAK8X,GAAG,OAAOhD,GAAGzU,EAAE,CAAC,EAAEA,EAAEsU,GAAGG,EAAE,GAAGzU,EAAEwU,GAAGC,EAAEzU,EAAE0V,GAAGjB,EAAE,EAAEzU,EAAEoR,IAAI4G,EAAErD,GAAG,OAAO3U,EAAEqJ,IAAI2O,EAAErD,GAAG,MAAM3U,EAAE+K,GAAGiN,EAAEpD,EAAE5U,EAAEyK,GAAGuN,EAAE9U,EAAElD,EAAE4G,GAAGoR,EAAh/K,IAAo/KhY,GAAGwX,IAAIQ,EAAEnR,EAAE4N,EAAEyE,EAAE7P,EAAEoL,EAAE,EAAEE,EAAEsH,YAAY,WAAW,OAAOtc,KAAK0b,MAAM7G,GAAG4F,EAAE,EAAEzF,EAAEmH,QAAQ,WAAW,OAAOlD,EAAEjZ,KAAKyZ,GAAG,EAAEzE,EAAEwE,OAAO,SAAStB,EAAE3U,GAAG,IAAI2U,EAAE,OAAOlY,KAAKyZ,GAAG,IAAIxE,EAAEjV,KAAK6Y,QAAQjB,EAAEyB,EAAEnB,EAAE3U,GAAE,GAAI,OAAOqU,IAAI3C,EAAEwE,GAAG7B,GAAG3C,CAAC,EAAED,EAAE6D,MAAM,WAAW,OAAOU,EAAEP,EAAEhZ,KAAKga,GAAGha,KAAK,EAAEgV,EAAEkH,OAAO,WAAW,OAAO,IAAIjC,KAAKja,KAAKgc,UAAU,EAAEhH,EAAEmJ,OAAO,WAAW,OAAOne,KAAKsb,UAAUtb,KAAKoe,cAAc,IAAI,EAAEpJ,EAAEoJ,YAAY,WAAW,OAAOpe,KAAKga,GAAGoE,aAAa,EAAEpJ,EAAEuG,SAAS,WAAW,OAAOvb,KAAKga,GAAGqE,aAAa,EAAEvG,CAAC,CAAtwI,GAA0wIwG,EAAElF,EAAEzZ,UAAU,OAAOqZ,EAAErZ,UAAU2e,EAAE,CAAC,CAAC,MAAM1G,GAAG,CAAC,KAAK3Q,GAAG,CAAC,KAAK6D,GAAG,CAAC,KAAKM,GAAG,CAAC,KAAK1B,GAAG,CAAC,KAAKmL,GAAG,CAAC,KAAKF,GAAG,CAAC,KAAKC,IAAI+B,SAAS,SAASuB,GAAGoG,EAAEpG,EAAE,IAAI,SAAS3U,GAAG,OAAOvD,KAAK6b,GAAGtY,EAAE2U,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAIc,EAAEvY,OAAO,SAASyX,EAAE3U,GAAG,OAAO2U,EAAEqG,KAAKrG,EAAE3U,EAAE6V,EAAEJ,GAAGd,EAAEqG,IAAG,GAAIvF,CAAC,EAAEA,EAAEQ,OAAOH,EAAEL,EAAEwF,QAAQ5T,EAAEoO,EAAE+C,KAAK,SAAS7D,GAAG,OAAOc,EAAE,IAAId,EAAE,EAAEc,EAAEyF,GAAGxF,EAAEnE,GAAGkE,EAAE0F,GAAGzF,EAAED,EAAEpO,EAAE,CAAC,EAAEoO,CAAC,CAAv7MzV,E,kBCAfmU,EAAOC,QAA8I,WAAW,aAAa,IAAIO,EAAE,SAASjR,EAAE,uBAAuB1D,EAAE,eAAe,OAAO,SAASuH,EAAE+J,EAAEI,GAAG,IAAI7J,EAAEyJ,EAAElV,UAAUsV,EAAEyE,IAAI,SAASxB,GAAwC,OAAO,IAAIrD,EAA1C,CAAC6D,KAAKR,EAAEwB,KAAI,EAAGJ,KAAK5F,WAA0B,EAAEtI,EAAEsO,IAAI,SAASzS,GAAG,IAAI1D,EAAE0R,EAAEjV,KAAKkc,SAAS,CAAC1C,OAAOxZ,KAAKyZ,GAAGC,KAAI,IAAK,OAAOzS,EAAE1D,EAAEuV,IAAI9Y,KAAKuY,YAAYL,GAAG3U,CAAC,EAAE6H,EAAE0zG,MAAM,WAAW,OAAO7pG,EAAEjV,KAAKkc,SAAS,CAAC1C,OAAOxZ,KAAKyZ,GAAGC,KAAI,GAAI,EAAE,IAAIjI,EAAErG,EAAE2O,MAAM3O,EAAE2O,MAAM,SAAS7B,GAAGA,EAAEwB,MAAM1Z,KAAK2Z,IAAG,GAAI3Z,KAAKqb,SAASjQ,EAAE8M,EAAE4B,WAAW9Z,KAAK8Z,QAAQ5B,EAAE4B,SAASrI,EAAE1R,KAAKC,KAAKkY,EAAE,EAAE,IAAIN,EAAExM,EAAEtC,KAAKsC,EAAEtC,KAAK,WAAW,GAAG9I,KAAK2Z,GAAG,CAAC,IAAIzB,EAAElY,KAAKga,GAAGha,KAAKqa,GAAGnC,EAAE6mG,iBAAiB/+G,KAAKua,GAAGrC,EAAE8mG,cAAch/G,KAAKya,GAAGvC,EAAE+mG,aAAaj/G,KAAK2a,GAAGzC,EAAEgnG,YAAYl/G,KAAK6a,GAAG3C,EAAEinG,cAAcn/G,KAAK+a,GAAG7C,EAAEknG,gBAAgBp/G,KAAKib,GAAG/C,EAAEmnG,gBAAgBr/G,KAAKmb,IAAIjD,EAAEonG,oBAAoB,MAAM1nG,EAAE7X,KAAKC,KAAK,EAAE,IAAI0J,EAAE0B,EAAEmN,UAAUnN,EAAEmN,UAAU,SAASzN,EAAE+J,GAAG,IAAII,EAAEjV,KAAKqb,SAASjQ,EAAE,GAAG6J,EAAEnK,GAAG,OAAO9K,KAAK2Z,GAAG,EAAE1E,EAAEjV,KAAK8Z,SAASpQ,EAAE3J,KAAKC,MAAMA,KAAK8Z,QAAQ,GAAG,iBAAiBhP,IAAIA,EAAE,SAASoN,QAAG,IAASA,IAAIA,EAAE,IAAI,IAAIpN,EAAEoN,EAAEtR,MAAMK,GAAG,IAAI6D,EAAE,OAAO,KAAK,IAAI+J,GAAG,GAAG/J,EAAE,IAAIlE,MAAMrD,IAAI,CAAC,IAAI,EAAE,GAAG0R,EAAEJ,EAAE,GAAGzJ,EAAE,IAAIyJ,EAAE,KAAKA,EAAE,GAAG,OAAO,IAAIzJ,EAAE,EAAE,MAAM6J,EAAE7J,GAAGA,CAAC,CAA1J,CAA4JN,GAAG,OAAOA,GAAG,OAAO9K,KAAK,IAAIoL,EAAEnI,KAAKuV,IAAI1N,IAAI,GAAG,GAAGA,EAAEA,EAAE2G,EAAEzR,KAAK,GAAG6U,EAAE,OAAOpD,EAAEqI,QAAQ1O,EAAEqG,EAAEkI,GAAG,IAAI7O,EAAE2G,EAAE,GAAG,IAAI3G,EAAE,CAAC,IAAI8M,EAAE5X,KAAK2Z,GAAG3Z,KAAKkc,SAAS+B,qBAAqB,EAAEje,KAAKuY,aAAa9G,EAAEzR,KAAK8+G,QAAQhmG,IAAI1N,EAAEwM,EAAEM,IAAI4B,QAAQ1O,EAAEqG,EAAEoI,GAAG0lG,aAAa3nG,CAAC,MAAMnG,EAAEzR,KAAK0Z,MAAM,OAAOjI,CAAC,EAAE,IAAIsE,EAAE3K,EAAEsR,OAAOtR,EAAEsR,OAAO,SAASxE,GAAG,IAAIjR,EAAEiR,IAAIlY,KAAK2Z,GAAG,yBAAyB,IAAI,OAAO5D,EAAEhW,KAAKC,KAAKiH,EAAE,EAAEmE,EAAE4Q,QAAQ,WAAW,IAAI9D,EAAElY,KAAKqb,SAASjQ,EAAEpL,KAAK8Z,SAAS,EAAE9Z,KAAK8Z,SAAS9Z,KAAK6Z,GAAG0lG,cAAcv/G,KAAKga,GAAGiE,qBAAqB,OAAOje,KAAKga,GAAGgC,UAAU,IAAI9D,CAAC,EAAE9M,EAAEo0G,MAAM,WAAW,QAAQx/G,KAAK2Z,EAAE,EAAEvO,EAAEgT,YAAY,WAAW,OAAOpe,KAAKkc,SAASkC,aAAa,EAAEhT,EAAEmQ,SAAS,WAAW,OAAOvb,KAAKkc,SAASmC,aAAa,EAAE,IAAInX,EAAEkE,EAAE8Q,OAAO9Q,EAAE8Q,OAAO,SAAShE,GAAG,MAAM,MAAMA,GAAGlY,KAAK8Z,QAAQ7E,EAAEjV,KAAK0c,OAAO,4BAA4BR,SAAShV,EAAEnH,KAAKC,KAAK,EAAE,IAAI2U,EAAEvJ,EAAE8S,KAAK9S,EAAE8S,KAAK,SAAShG,EAAEjR,EAAE1D,GAAG,GAAG2U,GAAGlY,KAAK2Z,KAAKzB,EAAEyB,GAAG,OAAOhF,EAAE5U,KAAKC,KAAKkY,EAAEjR,EAAE1D,GAAG,IAAIuH,EAAE9K,KAAK8+G,QAAQjqG,EAAEI,EAAEiD,GAAG4mG,QAAQ,OAAOnqG,EAAE5U,KAAK+K,EAAE+J,EAAE5N,EAAE1D,EAAE,CAAC,CAAC,CAAtnE0D,E,GCC/EsxD,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAGpE9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,yDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAe,OCA1D,EAA+B8D,OAAOC,KAAK/D,OAAY,I,aCA7D,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,e,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,iDCSjD,SAASgM,EAA0B/mG,GACxC,OAAO+gD,IAAAA,IAAU/gD,GAAM8C,OAAOi+C,IAAAA,IAAU,cAC1C,CARAA,IAAAA,OAAa//C,KCI4D,IAEpDgmG,EAAgB,uFAiKlC,OAjKkC,EACnCn9D,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEb,IAAI7tB,EAAQv0B,KAAK0qB,MAAMoiC,KAAK6yD,iBACtB36D,EAAShlD,KAAK0qB,MAAMoiC,KAAK8yD,gBACzBplF,EAAUx6B,KAAK0qB,MAAMoiC,KAAK+yD,iBAC5B7mE,EAAS,KAET,IAAI/+B,KAASsa,IAAOA,EAAQ,MAE5BA,IACgCykB,EAAN,OAAxBzkB,EAAMja,cAAiC,eAC7B,WAGhBta,KAAKg5C,OAASoU,IAAOpU,GACrBh5C,KAAKglD,OAASoI,IAAOpI,GACrBhlD,KAAKw6B,QAAU4yB,IAAO5yB,GACtBx6B,KAAK8/G,cAAgB1yD,IAAkB,YAAXpU,GAAuD,EAA9BygB,QAAQv7C,KAAKqW,EAAO,QAC3E,EAAC,EAEDzI,UAAA,WACE,MAAO,gCACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,0CAA2C,CAAE1M,KAAM9sD,KAAK0qB,MAAMoiC,MAC5F,EAAC,EAED12B,QAAA,WACE,OACE,SAAKtK,UAAU,cACb,SAAKA,UAAU,QACb,SAAKA,UAAU,cACb,eAAQ0tC,IAAAA,WAAAA,MAAqB,qDAC7B,aAAMx5D,KAAK+/G,YAAY98F,YAGzB,SAAK6I,UAAU,cACb,EAAC,IAAM,CAACA,UAAU,yBAAyB4yC,QAAS1+D,KAAK0+D,QAAS15D,KAAK,UACpEw0D,IAAAA,WAAAA,MAAqB,sDAMlC,EAAC,EAEDwmD,WAAA,WAAa,WACLriD,EAAQ,IAAIlB,KA8ClB,OA5CAkB,EAAM7kD,IACJ,gBACA,WAAOgT,UAAU,YACf,WAAO9mB,KAAK,QAAQ6N,KAAK,SAASyd,SAAUtwB,KAAKg5C,SAAUjyC,MAAM,GAAGu7C,QAAS2uC,IAAS,QAASjxF,KAAKg5C,UACnGwgB,IAAAA,WAAAA,MAAqB,0DAExB,KAGFmE,EAAM7kD,IACJ,eACA,WAAOgT,UAAU,YACf,WAAO9mB,KAAK,QAAQ6N,KAAK,SAASyd,QAA2B,iBAAlBtwB,KAAKg5C,SAA6BjyC,MAAM,eAAeu7C,QAAS2uC,IAAS,QAASjxF,KAAKg5C,UACjIwgB,IAAAA,WAAAA,MAAqB,yDAExB,IAGFmE,EAAM7kD,IACJ,kBACA,WAAOgT,UAAU,kCACf,WACE9mB,KAAK,QACL6N,KAAK,SACLyd,QAA2B,YAAlBtwB,KAAKg5C,SACdjyC,MAAM,UACNu7C,QAAS,SAAC/+C,GACR,EAAKy1C,OAAOz1C,EAAE5C,OAAOoG,OACrBiO,EAAEwqC,OAAOD,OACT,EAAKl/C,EAAE,sCAAsCwlB,SAC7CtiB,EAAEi8C,QAAS,CACb,IAEDga,IAAAA,WAAAA,MAAqB,wDACH,YAAlBx5D,KAAKg5C,UACJ,SAAKltB,UAAU,+BACb,WAAO9mB,KAAK,SAAS6R,IAAI,IAAI9P,MAAO/G,KAAK8/G,gBAAiB7mD,QAASg4B,IAAS,QAASjxF,KAAK8/G,eAAgBh0F,UAAU,gBACnH0tC,IAAAA,WAAAA,MAAqB,8DAI5B,IAGKmE,CACT,EAAC,EAEDoiD,UAAA,WACE,IAAMpiD,EAAQ,IAAIlB,KAoClB,OAlCAkB,EAAM7kD,IAAI,aAAc,SAAKgT,UAAU,cAAc9rB,KAAKggH,aAAa/8F,WAAkB,KAEzF06C,EAAM7kD,IACJ,SACA,SAAKgT,UAAU,cACb,eACG0tC,IAAAA,WAAAA,MAAqB,4CACtB,cACE1tC,UAAU,cACV+sC,KAAM74D,KAAKglD,OACX4f,YAAapL,IAAAA,WAAAA,MAAqB,0DAClCymD,KAAK,QAIX,IAGFtiD,EAAM7kD,IACJ,UACA,SAAKgT,UAAU,cACb,eACG0tC,IAAAA,WAAAA,MAAqB,qDACtB,cACE1tC,UAAU,cACV+sC,KAAM74D,KAAKw6B,QACXoqC,YAAapL,IAAAA,WAAAA,MAAqB,0DAClCymD,KAAK,QAIX,IAGKtiD,CACT,EAAC,EAEDuH,SAAA,SAAS3hE,GAAG,WACVA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf,IAAIihD,EAAiB,KACrB,OAAQ3/G,KAAKg5C,UACX,IAAK,eACH2mE,EDtJC,IAAI1lG,KAAK,cCuJV,MAEF,IAAK,UACH0lG,EAAiBlmD,QAAQ3gD,IAAI9Y,KAAK8/G,gBAAiB,QAAQ5jG,SAO/Dlc,KAAK0qB,MAAMoiC,KACRob,KAAK,CAAEy3C,eAAAA,EAAgBC,cAAe5/G,KAAKglD,SAAU66D,eAAgB7/G,KAAKw6B,YAC1EvD,MAAK,kBAAM,EAAKtqB,MAAM,GAAE3M,KAAK8nE,OAAOp4B,KAAK1vC,MAC9C,EAAC,EAjKkC,CAAS6oE,KCT9C,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,2B,aCInCyM,EAAyB,uFAmB3C,OAnB2C,EAC5ChgD,KAAA,WACE,MAAO,YACT,EAAC,EAED9vC,KAAA,WACE,OAAOopC,IAAAA,MAAAA,KAAex5D,KAAK0qB,MAAM4zD,aAAaC,UAChD,EAAC,EAEDnoD,QAAA,WACE,IAAMkoD,EAAet+E,KAAK0qB,MAAM4zD,aAC1BqhC,EAAiBrhC,EAAaloD,UAC9B+pF,EAAe1mD,MAAMkmD,GAAgBhgG,KAAK2+D,EAAatP,aAAa,GAE1E,OAAOywC,EAA0BE,GAC7BnmD,IAAAA,WAAAA,MAAqB,qEACrBA,IAAAA,WAAAA,MAAqB,yDAA0D,CAC7E2mD,aAAAA,GAER,EAAC,EAnB2C,CAASt5B,KCDlCu5B,EAA2B,uFAa7C,OAb6C,EAC9ClgD,KAAA,WACE,MAAO,YACT,EAAC,EAED9vC,KAAA,WACE,OAAOopC,IAAAA,MAAAA,KAAex5D,KAAK0qB,MAAM4zD,aAAaC,UAChD,EAAC,EAEDnoD,QAAA,WAGE,OAFqBp2B,KAAK0qB,MAAM4zD,aAEzB9kB,IAAAA,WAAAA,MAAqB,2DAC9B,EAAC,EAb6C,CAASqtB,KCHzD,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCMnC4M,EAAmB,uFAwCrC,OAxCqC,EACtC99D,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKw6B,QAAUx6B,KAAK0qB,MAAM8P,QAC1Bx6B,KAAKu0B,MAAQv0B,KAAK0qB,MAAM6J,KAC1B,EAAC,EAEDzI,UAAA,WACE,MAAO,2BACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,6CAC9B,EAAC,EAEDpjC,QAAA,WACE,IAAMkqF,EAAWb,EAA0B,IAAIxlG,KAAKja,KAAKu0B,QACrDilC,IAAAA,WAAAA,MAAqB,mDACrBA,IAAAA,WAAAA,MAAqB,+CAAgD,CAAE9gD,KAAM8yE,IAASxrF,KAAKu0B,SAE/F,OACE,SAAKzI,UAAU,cACb,SAAKA,UAAU,uBACb,OAAGA,UAAU,YAAY9rB,KAAKw6B,SAC9B,OAAG1O,UAAU,YAAYw0F,GAEzB,SAAKx0F,UAAU,cACb,EAAC,IAAM,CAACA,UAAU,uCAAuCw2B,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,OAC9Ew5D,IAAAA,WAAAA,MAAqB,0DAMlC,EAAC,EAED7sD,KAAA,WACEmuD,aAAaM,QR9BR,wCQ8BmCp7D,KAAK0qB,MAAM6J,MAAMtY,WACzDjc,KAAK0qB,MAAM2N,MAAM8jC,OACnB,EAAC,EAxCqC,CAAS0M,KCFlC,SAAS,IACtB,OAAO/lE,YAAW,WAChB,GAAI02D,IAAAA,QAAAA,KAAkB,CACpB,IAAMh/B,EAAUg/B,IAAAA,QAAAA,KAAAA,iBACVjlC,EAAQilC,IAAAA,QAAAA,KAAAA,iBACR+mD,EAAc/lF,GAAWjG,GAAS,IAAIta,KAASsa,EAC/CisF,EAAmB1lD,aAAaC,QTInC,4CSJuE,MAALxmC,OAAK,EAALA,EAAOtY,UAAUV,YAElFglG,IAAgBC,EAClBhnD,IAAAA,MAAAA,KAAe6mD,EAAqB,CAAE7lF,QAAAA,EAASjG,MAAAA,IACtCumC,aAAaC,QTArB,0CSCDD,aAAa2lD,WTDZ,wCSGL,CACF,GAAG,EACL,CCnBA,MAAM,EAA+BlJ,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCIxD,SACE,IAAIgF,IAAAA,OAAaxN,KACd7nC,UAAmB,cACnBA,UAA2C,iBAAkBsY,IAAAA,eAC7DtY,UAAqC,iBACrCA,UAAqC,mBCH1C,GACE,sCAAuCs8C,EACvC,yCAA0CW,EAC1C,+CAAgDH,EAChD,iDAAkDE,EAClD,6BAA8BM,GCX1B,EAA+BnJ,OAAOC,KCc5Ch+C,IAAAA,aAAAA,IAAqB,kBAAkB,WACrCA,IAAAA,uBAAAA,cAA2C0mD,EAC3C1mD,IAAAA,uBAAAA,gBAA6C4mD,GAE7C3/G,EAAAA,EAAAA,QAAOoqF,IAAc,sBAAsB,SAACltB,EAAO7Q,GAC7CA,EAAK6zD,cACPhjD,EAAM7kD,IACJ,UACA,EAAC,IAAM,CAAConD,KAAK,aAAa5d,QAAS,kBAAMkX,IAAAA,MAAAA,KAAekmD,EAAkB,CAAE5yD,KAAAA,GAAO,GAChF0M,IAAAA,WAAAA,MAAqB,sDAI9B,KAEA/4D,EAAAA,EAAAA,QAAOwqG,IAAAA,UAAgB,UAAU,SAAUttC,GACzC,IAAMppC,EAAQv0B,KAAK2/G,iBAEf,IAAI1lG,KAASsa,GACfopC,EAAM7kD,IACJ,YACA,EAAC,IAAK,CAAConD,KAAK,aAAal7D,KAAK,YAAY87D,MAAOtH,IAAAA,WAAAA,MAAqB,uDACtE,IAGN,IAEAknD,GACF,IAMAj/F,OAAOs+B,OAAO0zD,EAAAA,OAAQmN,E;;;;;;;;2BChDtB,IAAI1tD,EAAUhU,EAAAA,IAAAA,QACd,SAASkU,IACP,aACA17C,EAAOC,QAAUy7C,EAAsB,WACrC,OAAOz7C,CACT,EAAGD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACb07C,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eACZyvB,EAAiBza,OAAOya,gBAAkB,SAAUnvB,EAAKD,EAAKi5C,GAC5Dh5C,EAAID,GAAOi5C,EAAKh/C,KAClB,EACAusD,EAAU,mBAAqBluC,OAASA,OAAS,CAAC,EAClDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAC7C,SAASC,EAAO7mD,EAAKD,EAAK/F,GACxB,OAAO0a,OAAOya,eAAenvB,EAAKD,EAAK,CACrC/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IACR12B,EAAID,EACV,CACA,IACE8mD,EAAO,CAAC,EAAG,GAKb,CAJE,MAAO5yB,GACP4yB,EAAS,SAAgB7mD,EAAKD,EAAK/F,GACjC,OAAOgG,EAAID,GAAO/F,CACpB,CACF,CACA,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GACpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EACjFC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IACvC,OAAO73B,EAAeg4B,EAAW,UAAW,CAC1CntD,MAAOqtD,EAAiBP,EAAS7mD,EAAM6G,KACrCqgD,CACN,CACA,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CACLlgB,KAAM,SACNkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAOtB,CALE,MAAO8b,GACP,MAAO,CACLh8B,KAAM,QACNkgB,IAAK8b,EAET,CACF,CACArpB,EAAQ2oB,KAAOA,EACf,IAAIg0B,EAAmB,CAAC,EACxB,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBb,EAAOa,EAAmBlB,GAAgB,WACxC,OAAOvzD,IACT,IACA,IAAIwhB,EAAWC,OAAOC,eACpBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MACjE81B,GAA2BA,IAA4BrB,GAAMxxC,EAAO9hB,KAAK20D,EAAyBnB,KAAoBkB,EAAoBC,GAC1I,IAAIC,EAAKH,EAA2B70D,UAAYs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GACpF,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAAUmgB,GAC5C88B,EAAOj0D,EAAWm3B,GAAQ,SAAU5R,GAClC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC9B,GACF,GACF,CACA,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAI,UAAY+vC,EAAOjwD,KAAM,CAC3B,IAAIypB,EAASwmC,EAAO/vC,IAClBne,EAAQ0nB,EAAO1nB,MACjB,OAAOA,GAAS,UAAYmsD,EAAQnsD,IAAU8a,EAAO9hB,KAAKgH,EAAO,WAAaguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAAUlwB,GAC9HiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EACjC,IAAG,SAAUoK,GACXg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAChC,IAAKm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAAUk+B,GAC7C1mC,EAAO1nB,MAAQouD,EAAWx+B,EAAQlI,EACpC,IAAG,SAAUpK,GACX,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACzC,GACF,CACAA,EAAOq+B,EAAO/vC,IAChB,CACA,IAAIkwC,EACJl5B,EAAel8B,KAAM,UAAW,CAC9B+G,MAAO,SAAe+vB,EAAQ5R,GAC5B,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAAUp+B,EAASC,GACxCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC/B,GACF,CACA,OAAOw+B,EAAkBA,EAAkBA,EAAgBn+B,KAAKo+B,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASjB,EAAiBP,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQ,iBACZ,OAAO,SAAUvB,EAAQ5R,GACvB,GAAI,cAAgBmT,EAAO,MAAM,IAAIxsB,MAAM,gCAC3C,GAAI,cAAgBwsB,EAAO,CACzB,GAAI,UAAYvB,EAAQ,MAAM5R,EAC9B,MA8EG,CACLne,WAAO+L,EACP0T,MAAM,EA/EN,CACA,IAAK3S,EAAQijB,OAASA,EAAQjjB,EAAQqR,IAAMA,IAAO,CACjD,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CACA,GAAI,SAAWzhD,EAAQijB,OAAQjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAAS,GAAI,UAAYrR,EAAQijB,OAAQ,CAC7G,GAAI,mBAAqBuB,EAAO,MAAMA,EAAQ,YAAaxkB,EAAQqR,IACnErR,EAAQ6hD,kBAAkB7hD,EAAQqR,IACpC,KAAO,WAAarR,EAAQijB,QAAUjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KACvEmT,EAAQ,YACR,IAAI48B,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAI,WAAaohD,EAAOjwD,KAAM,CAC5B,GAAIqzB,EAAQxkB,EAAQ2S,KAAO,YAAc,iBAAkByuC,EAAO/vC,MAAQovC,EAAkB,SAC5F,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAElB,CACA,UAAYyuC,EAAOjwD,OAASqzB,EAAQ,YAAaxkB,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAClG,CACF,CACF,CACA,SAASqwC,EAAoBjX,EAAUzqC,GACrC,IAAIijB,EAASwnB,EAASj5B,SAASxR,EAAQijB,QACvC,QAAIhkB,IAAcgkB,EAAQ,CACxB,GAAIjjB,EAAQyqC,SAAW,KAAM,UAAYzqC,EAAQijB,OAAQ,CACvD,GAAIwnB,EAASj5B,SAAiB,SAAMxR,EAAQijB,OAAS,SAAUjjB,EAAQqR,SAAMpS,EAAWyiD,EAAoBjX,EAAUzqC,GAAU,UAAYA,EAAQijB,QAAS,OAAOw9B,EACpKzgD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,iDACxD,CACA,OAAOk7B,CACT,CACA,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KACzD,GAAI,UAAY+vC,EAAOjwD,KAAM,OAAO6O,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAAKrR,EAAQyqC,SAAW,KAAMgW,EACjH,IAAIsB,EAAOX,EAAO/vC,IAClB,OAAO0wC,EAAOA,EAAKpvC,MAAQ3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAAO8M,EAAQqV,KAAOo1B,EAASwX,QAAS,WAAajiD,EAAQijB,SAAWjjB,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,GAAYe,EAAQyqC,SAAW,KAAMgW,GAAoBsB,GAAQ/hD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAAqCvlB,EAAQyqC,SAAW,KAAMgW,EACrW,CACA,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CACVwQ,OAAQD,EAAK,IAEf,KAAKA,IAASvQ,EAAMyQ,SAAWF,EAAK,IAAK,KAAKA,IAASvQ,EAAM0Q,WAAaH,EAAK,GAAIvQ,EAAM2Q,SAAWJ,EAAK,IAAKh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACrI,CACA,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBAAiBiwD,EAAO/vC,IAAKugC,EAAM8Q,WAAatB,CAChE,CACA,SAASd,EAAQJ,GACf/zD,KAAKq2D,WAAa,CAAC,CACjBJ,OAAQ,SACNlC,EAAYp9C,QAAQo/C,EAAc/1D,MAAOA,KAAKgxB,OAAM,EAC1D,CACA,SAAS4N,EAAO43B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EAAgB,OAAOA,EAAe12D,KAAKy2D,GAC/C,GAAI,mBAAqBA,EAASttC,KAAM,OAAOstC,EAC/C,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EACPiiB,EAAO,SAASA,IACd,OAASjiB,EAAIuvD,EAAS/xD,QACpB,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAAI,OAAOiiB,EAAKniB,MAAQyvD,EAASvvD,GAAIiiB,EAAK1C,MAAO,EAAI0C,EAEjF,OAAOA,EAAKniB,WAAQ+L,EAAWoW,EAAK1C,MAAO,EAAI0C,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMwtC,EAEV,CACA,SAASA,IACP,MAAO,CACL3vD,WAAO+L,EACP0T,MAAM,EAEV,CACA,OAAO+tC,EAAkB50D,UAAY60D,EAA4Bt4B,EAAey4B,EAAI,cAAe,CACjG5tD,MAAOytD,EACPr4B,cAAc,IACZD,EAAes4B,EAA4B,cAAe,CAC5DztD,MAAOwtD,EACPp4B,cAAc,IACZo4B,EAAkBoC,YAAc/C,EAAOY,EAA4Bd,EAAmB,qBAAsB/7C,EAAQi/C,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOjrD,YACjD,QAASkrD,IAASA,IAASvC,GAAqB,uBAAyBuC,EAAKH,aAAeG,EAAKjkD,MACpG,EAAG8E,EAAQo/C,KAAO,SAAUF,GAC1B,OAAOp1C,OAAOixC,eAAiBjxC,OAAOixC,eAAemE,EAAQrC,IAA+BqC,EAAOrK,UAAYgI,EAA4BZ,EAAOiD,EAAQnD,EAAmB,sBAAuBmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAAKkC,CAC5O,EAAGl/C,EAAQq/C,MAAQ,SAAU9xC,GAC3B,MAAO,CACLgwC,QAAShwC,EAEb,EAAG0vC,EAAsBE,EAAcn1D,WAAYi0D,EAAOkB,EAAcn1D,UAAW6zD,GAAqB,WACtG,OAAOxzD,IACT,IAAI2X,EAAQm9C,cAAgBA,EAAen9C,EAAQs/B,MAAQ,SAAU4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxG,IAAWA,IAAgBA,EAAcpV,SACzC,IAAIsX,EAAO,IAAInC,EAAcx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAAcgB,GACxE,OAAOp9C,EAAQi/C,oBAAoB9C,GAAWmD,EAAOA,EAAK/tC,OAAO+N,MAAK,SAAUxI,GAC9E,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC3C,GACF,EAAG0rC,EAAsBD,GAAKf,EAAOe,EAAIjB,EAAmB,aAAcE,EAAOe,EAAIpB,GAAgB,WACnG,OAAOvzD,IACT,IAAI4zD,EAAOe,EAAI,YAAY,WACzB,MAAO,oBACT,IAAIh9C,EAAQuI,KAAO,SAAUhgB,GAC3B,IAAIi3B,EAAS1V,OAAOvhB,GAClBggB,EAAO,GACT,IAAK,IAAIpT,KAAOqqB,EACdjX,EAAKhL,KAAKpI,GAEZ,OAAOoT,EAAKmW,UAAW,SAASnN,IAC9B,KAAOhJ,EAAKzb,QAAS,CACnB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAAQ,OAAOjO,EAAKniB,MAAQ+F,EAAKoc,EAAK1C,MAAO,EAAI0C,CAC9D,CACA,OAAOA,EAAK1C,MAAO,EAAI0C,CACzB,CACF,EAAGvR,EAAQinB,OAASA,EAAQu1B,EAAQx0D,UAAY,CAC9CiM,YAAauoD,EACbnjC,MAAO,SAAekmC,GACpB,GAAIl3D,KAAKw1B,KAAO,EAAGx1B,KAAKkpB,KAAO,EAAGlpB,KAAKw1D,KAAOx1D,KAAKy1D,WAAQ3iD,EAAW9S,KAAKwmB,MAAO,EAAIxmB,KAAKs+C,SAAW,KAAMt+C,KAAK82B,OAAS,OAAQ92B,KAAKklB,SAAMpS,EAAW9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAAiBY,EAAe,IAAK,IAAIrkD,KAAQ7S,KAC/N,MAAQ6S,EAAKyyC,OAAO,IAAMzjC,EAAO9hB,KAAKC,KAAM6S,KAAUpD,OAAOoD,EAAK0C,MAAM,MAAQvV,KAAK6S,QAAQC,EAEjG,EACAoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EACZ,IAAI2wC,EAAan3D,KAAKq2D,WAAW,GAAGE,WACpC,GAAI,UAAYY,EAAWnyD,KAAM,MAAMmyD,EAAWjyC,IAClD,OAAOllB,KAAKo3D,IACd,EACA1B,kBAAmB,SAA2B2B,GAC5C,GAAIr3D,KAAKwmB,KAAM,MAAM6wC,EACrB,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GACnB,OAAOtC,EAAOjwD,KAAO,QAASiwD,EAAO/vC,IAAMmyC,EAAWxjD,EAAQqV,KAAOouC,EAAKC,IAAW1jD,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,KAAcykD,CAC5I,CACA,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC1BguD,EAASxP,EAAM8Q,WACjB,GAAI,SAAW9Q,EAAMwQ,OAAQ,OAAO3iD,EAAO,OAC3C,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAChCgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAClC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GAC9D,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,MAAO,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OACzD,CACL,IAAKuB,EAAY,MAAM,IAAI5rD,MAAM,0CACjC,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,CACF,CACF,CACF,EACAR,OAAQ,SAAgB3wD,EAAMkgB,GAC5B,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MAAQ3T,EAAO9hB,KAAK0lD,EAAO,eAAiBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CACjG,IAAIuB,EAAejS,EACnB,KACF,CACF,CACAiS,IAAiB,UAAY1yD,GAAQ,aAAeA,IAAS0yD,EAAazB,QAAU/wC,GAAOA,GAAOwyC,EAAavB,aAAeuB,EAAe,MAC7I,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EACvD,OAAOtB,EAAOjwD,KAAOA,EAAMiwD,EAAO/vC,IAAMA,EAAKwyC,GAAgB13D,KAAK82B,OAAS,OAAQ92B,KAAKkpB,KAAOwuC,EAAavB,WAAY7B,GAAoBt0D,KAAKgP,SAASimD,EAC5J,EACAjmD,SAAU,SAAkBimD,EAAQmB,GAClC,GAAI,UAAYnB,EAAOjwD,KAAM,MAAMiwD,EAAO/vC,IAC1C,MAAO,UAAY+vC,EAAOjwD,MAAQ,aAAeiwD,EAAOjwD,KAAOhF,KAAKkpB,KAAO+rC,EAAO/vC,IAAM,WAAa+vC,EAAOjwD,MAAQhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAAKllB,KAAK82B,OAAS,SAAU92B,KAAKkpB,KAAO,OAAS,WAAa+rC,EAAOjwD,MAAQoxD,IAAap2D,KAAKkpB,KAAOktC,GAAW9B,CACtQ,EACAvjB,OAAQ,SAAgBolB,GACtB,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAAY,OAAOn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UAAWE,EAAc7Q,GAAQ6O,CACrH,CACF,EACA,MAAS,SAAgB2B,GACvB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAI,UAAYtB,EAAOjwD,KAAM,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EAChB,CACA,OAAOkS,CACT,CACF,CACA,MAAM,IAAI9rD,MAAM,wBAClB,EACA+rD,cAAe,SAAuBpB,EAAUX,EAAYC,GAC1D,OAAO91D,KAAKs+C,SAAW,CACrBj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GACR,SAAW91D,KAAK82B,SAAW92B,KAAKklB,SAAMpS,GAAYwhD,CACvD,GACC38C,CACL,CACAD,EAAOC,QAAUy7C,EAAqB17C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,gBC1T3G,SAASu7C,EAAQnmD,GAGf,OAAQ2K,EAAOC,QAAUu7C,EAAU,mBAAqB9tC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUtY,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBqY,QAAUrY,EAAInB,cAAgBwZ,QAAUrY,IAAQqY,OAAOzlB,UAAY,gBAAkBoN,CAC1H,EAAG2K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QAAUu7C,EAAQnmD,EAC5F,CACA2K,EAAOC,QAAUu7C,EAASx7C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,uBCP/F,IAAIygD,EAAUlZ,EAAQ,IAARA,GACdxnC,EAAOC,QAAUygD,EAGjB,IACEC,mBAAqBD,CAOvB,CANE,MAAOE,GACmB,iBAAfx4C,WACTA,WAAWu4C,mBAAqBD,EAEhCr4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAE5C,ICbIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU/gD,EAAQA,EAAOC,QAAS6gD,GAG/C9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,glBCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,0BCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,iDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,wCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yCCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,wCCAzC,SAAS35C,IAYtB,OAXAA,EAAWr4C,OAAOs+B,OAASt+B,OAAOs+B,OAAOrQ,OAAS,SAAU/uC,GAC1D,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GACvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CACA,OAAOnM,CACT,EACOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CCbA,SAAS2+C,EAAkB1xD,EAAQiP,GACjC,IAAK,IAAI3I,EAAI,EAAGA,EAAI2I,EAAMnL,OAAQwC,IAAK,CACrC,IAAIqrD,EAAa1iD,EAAM3I,GACvBqrD,EAAW/uB,WAAa+uB,EAAW/uB,aAAc,EACjD+uB,EAAWn2B,cAAe,EACtB,UAAWm2B,IAAYA,EAAW7uB,UAAW,GACjDhiB,OAAOya,eAAev7B,EAAQ2xD,EAAWxlD,IAAKwlD,EAChD,CACF,CCRA,MAAM,EAA+BilD,OAAOC,KAAK/D,OAAO,wCCcnCoN,EAAqB,YACxC,WAAY5jE,EAAW68B,GAG2B,YAHf,IAAZA,IAAAA,EAAe,GAGpC78B,EAAO68B,KAAO,KAAM78B,EAAO68B,MAAQ,CAAC,EAAC,CAAGsH,MAF1B,KAId,YAAMnkC,EAAQ68B,EAJA,KAIY,IAC5B,CFZa,IAAsBh2E,EAAayuD,EEgB/C,OAXuC,OFLLzuD,EEYlC,GFZ+CyuD,EEY/C,iBAED,WACE,MAAO,OACT,MFfgBF,EAAkBvuD,EAAYnE,UAAW4yD,GAEzD9wC,OAAOya,eAAep4B,EAAa,YAAa,CAC9C2/B,UAAU,IEYX,EAXuC,OAA4EsrD,ICDjG+xB,EAAgB,uFA0DlC,OA1DkC,EAInCv+D,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKq4B,MAAQ,IAAIwoF,EAAsB,CACrC/5G,OAAQ,CACNi6G,cAAe/gH,KAAK0qB,MAAMy9C,KAAKx+C,MAEjCjU,KAAM,WAGR1V,KAAKq4B,MAAMs2D,SACb,EAAC,EAED7iE,UAAA,WACE,MAAO,kBACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,2CAC9B,EAAC,EAEDpjC,QAAA,WAA4B,WAC1B,OACE,WACE,SAAKtK,UAAU,cACZ9rB,KAAKq4B,MAAM63C,mBACV,EAAC,IAAgB,MAEjB,WACE,QAAIpkD,UAAU,sFACX9rB,KAAKq4B,MAAMm4C,WAAW5oE,KAAI,SAACkyE,GAAI,OAC9BA,EAAKnc,MAAM/1D,KAAI,SAACksE,GAAK,OACnB,QAAI,cAAaA,EAAMtT,UACrB,EAAC,IAAW,CAAC2H,KAAM2L,EAAOxxB,QAAS,kBAAMkX,IAAAA,MAAAA,OAAiB,IACvD,GACL,OAMXx5D,KAAKq4B,MAAM+3C,WACV,SAAKtkD,UAAU,gBACb,SAAKA,UAAU,uBACb,SAAKA,UAAU,cACb,EAAC,IAAM,CAACA,UAAU,uBAAuBw2B,QAAS,kBAAM,EAAKjqB,MAAMg4C,UAAU,EAAE3R,QAAS1+D,KAAKq4B,MAAM83C,iBAChG3W,IAAAA,WAAAA,MAAqB,2DAQtC,EAAC,EA1DkC,CAA8EqP,KCbnH,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,+CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kDCIjD,SAASuN,EAAc74C,EAAMpB,EAAUk6C,GAC5C,OAAO,IAAIthE,SAAQ,SAAChpB,GAClB,IAAMuqF,EAAU1nD,IAAAA,eAAAA,YAA+B,QAAQ2nD,YAAYh5C,GAAQ,IAKtEpB,EAASW,OAAOtxC,YACnB2wC,EAAS5jE,KAAKunB,MAAMi9C,gBAAkBu5C,GAGxC,IAAME,EAAiBr6C,EAASC,OAAO5B,oBAAoB,GACrDi8C,EAAYt6C,EAASW,OAAOtxC,UAAU7gB,MAAM,EAAG6rG,GAC/CE,EAAwC,GAApBD,EAAU58G,OAAc,EAAI,EAAI48G,EAAUz6G,MAAM,cAAc,GAAGnC,OAO3F,OALAsiE,EAASC,OAAO1B,eACd5lE,MAAM4hH,GAAmBlpG,KAAK,OAC3B6oG,EAAQ,KAAOC,EAAUD,EAAMniE,OAAOn7C,QAAQ,MAAO,QAAU,OAASu9G,IAC3E,GAEKvqF,EAAQowC,EACjB,GACF,CAEe,SAAS+M,EAAM3L,EAAM84C,GAClC,OAAIznD,IAAAA,SAAAA,YAAyB0tB,MAAqB1tB,IAAAA,SAAAA,KAAAA,MAAAA,KAAAA,eAA8C2O,EAAKjK,aAG5F8iD,EAAc74C,EAAM3O,IAAAA,SAAcynD,GAKlC9yC,IAAAA,YAAAA,KAAoChG,EAAKjK,cAAcjnC,MAAK,SAAC8vC,GAAQ,OAAKi6C,EAAc74C,EAAMpB,EAAUk6C,EAAM,GAEzH,CCvCA,MAAM,EAA+B1J,OAAOC,KAAK/D,OAAO,gCCMnC8N,EAAe,YAClC,WAAYp5C,GAAM,MAGC,OAFjB,gBAAO,MAEFA,KAAOA,EAAK,CACnB,CALkC,OAKjC,kBAyCA,OAzCA,EAEDxjC,KAAA,WAAO,WACL,OACE,YACE7Y,UAAU,yBACVw2B,QAAS,WACPwxB,EAAM,EAAK3L,KAAM,EAAK/xC,QACxB,GAEC8pC,IAAK,oBAAqB,CAAEp0C,UAAW,gBACvC0tC,IAAAA,WAAAA,MAAqB,2CAG5B,EAAC,EAED9sD,KAAA,SAAKsB,EAAMxL,GACT,IAAMd,EAAQ1B,KAAKK,IAAIqM,OACjBqxC,EAAer8C,EAAMo8C,eAAeh8C,SAE1CJ,EAAM2B,IAAI,OAAQ2K,EAAO+vC,EAAa/vC,MAAM3K,IAAI,MAAOb,EAAMu7C,EAAav7C,KAE1ExC,KAAKwhH,YAAcxhH,KAAK2M,KAAK+iC,KAAK1vC,MAClCK,EAAEO,UAAUG,GAAG,UAAWf,KAAKwhH,YACjC,EAAC,EAEDC,UAAA,SAAUzzG,EAAMxL,GACd,IAAMd,EAAQ1B,KAAKK,IAEnBL,KAAK0M,KAAKsB,EAAM3N,EAAE0B,QAAQM,YAAcG,EAAMd,EAAM2vE,cAAgB,EACtE,EAAC,EAEDqwC,QAAA,SAAQ/yG,EAAO3L,GACb,IAAMtB,EAAQ1B,KAAKK,IAEnBL,KAAK0M,KAAKiC,EAAQjN,EAAMigH,aAActhH,EAAE0B,QAAQM,YAAcW,EAAS,EACzE,EAAC,EAED2J,KAAA,WACE3M,KAAKK,IAAIsM,OACTtM,EAAEO,UAAUsR,IAAI,UAAWlS,KAAKwhH,YAClC,EAAC,EA9CiC,CAASxK,KCH9B,SAASjC,EAAa5xG,GACnC,IAAMi9B,EAAYr+B,OAAO6/G,eAEzB,IAAKxhF,EAAUyhF,YAAa,CAC1B,IAAMC,EAAQ1hF,EAAU2hF,WAAW,GAC7Br9G,EAASo9G,EAAME,wBAErB,GAAI7+G,EAAK,KAAOuB,GAAUrE,EAAE6E,SAAS/B,EAAK,GAAIuB,GAAS,CACrD,IAAMmU,EAAQxY,EAAE,SAASonC,OAAOq6E,EAAMG,iBAiBtC,OAdAppG,EAAMhY,KAAK,aAAainC,aAAY,WAClC,OAAO9nC,KAAK6+D,GACd,IAGAhmD,EAAMhY,KAAK,OAAOinC,aAAY,WAC5B,MAAO,OAAO9nC,KAAKoiB,IAAG,GACxB,IAGAvJ,EAAMhY,KAAK,KAAKinC,aAAY,WAC1B,MAAO,IAAI9nC,KAAKo/D,UAAS,KAAKp/D,KAAKowB,KAAI,GACzC,IAEOvX,EAAMtI,MACf,CACF,CACA,MAAO,EACT,CChCA,MAAM,EAA+BgnG,OAAOC,KAAK/D,OAAO,6CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oDCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,mDCEnCyO,GAAoB,mGAId,OAJc,0CACvCvkD,MAAQ,GAAE,EACVjnB,QAAS,EAAK,EACd7wC,MAAQ,EAAC,EACTs8G,mBAAoB,EAAK,EAJc,OAId,kBAyExB,OAzEwB,EAEzBx9E,KAAA,WACE,OACE,QAAI7Y,UAAU,kCACX9rB,KAAK29D,MAAM/1D,KAAI,SAACqa,GAAI,OACnB,YAAKA,EAAU,IAIvB,EAAC,EAEDvV,KAAA,SAAKsB,EAAMxL,GACTxC,KAAKK,IACFqM,OACArJ,IAAI,CACH2K,KAAMA,EAAO,KACbxL,IAAKA,EAAM,OAEfxC,KAAK02C,QAAS,CAChB,EAAC,EAED/pC,KAAA,WACE3M,KAAKK,IAAIsM,OACT3M,KAAK02C,QAAS,CAChB,EAAC,EAEDkqC,SAAA,SAAS9wE,GAAO,WACd9P,KAAKmiH,mBAAoB,EACzBniH,KAAK6iF,SAAS7iF,KAAK6F,MAAQiK,GAAO,GAClC3C,aAAanN,KAAKoiH,0BAClBpiH,KAAKoiH,yBAA2Bt/G,YAAW,kBAAO,EAAKq/G,mBAAoB,CAAK,GAAG,IACrF,EAAC,EAEDnzG,SAAA,WACEhP,KAAKK,EAAE,MAAMyF,GAAG9F,KAAK6F,OAAOhF,KAAK,UAAU4K,OAC7C,EAAC,EAEDo3E,SAAA,SAASh9E,EAAOmvE,GACd,IAAIh1E,KAAKmiH,mBAAsBntC,EAA/B,CAEA,IAAMsO,EAAYtjF,KAAKK,IACjBuF,EAAS09E,EAAUziF,KAAK,MAC1BwhH,EAAcx8G,EAEdw8G,EAAc,EAChBA,EAAcz8G,EAAOnB,OAAS,EACrB49G,GAAez8G,EAAOnB,SAC/B49G,EAAc,GAGhBriH,KAAK6F,MAAQw8G,EAEb,IAAM/tC,EAAQ1uE,EAAOhD,YAAY,UAAUkD,GAAGu8G,GAAax/G,SAAS,UAEpE,GAAImyE,EAAc,CAChB,IAMI3yE,EANEmhF,EAAiBF,EAAUjhF,YAC3BohF,EAAcH,EAAUxhF,SAASU,IACjCkhF,EAAiBD,EAAcH,EAAUjS,cACzC8D,EAAUb,EAAMxyE,SAASU,IACzB4yE,EAAaD,EAAUb,EAAMjD,cAG/B8D,EAAUsO,EACZphF,EAAYmhF,EAAiBC,EAActO,EAAU5lE,SAAS+zE,EAAUjgF,IAAI,eAAgB,IACnF+xE,EAAasO,IACtBrhF,EAAYmhF,EAAiBE,EAAiBtO,EAAa7lE,SAAS+zE,EAAUjgF,IAAI,kBAAmB,UAG9E,IAAdhB,GACTihF,EAAUpmD,MAAK,GAAM0T,QAAQ,CAAEvuC,UAAAA,GAAa,IAEhD,CAjCmD,CAkCrD,EAAC,EA7EsC,CAAS20G,KCFnC,SAAS54C,GAA8B7gC,EAAQ8gC,GAC5D,GAAc,MAAV9gC,EAAgB,MAAO,CAAC,EAC5B,IAEIzwB,EAAK7F,EAFLtG,EAAS,CAAC,EACV29D,EAAa78C,OAAOvB,KAAKqd,GAE7B,IAAKt2B,EAAI,EAAGA,EAAIq3D,EAAW75D,OAAQwC,IACjC6F,EAAMwxD,EAAWr3D,GACbo3D,EAASn9C,QAAQpU,IAAQ,IAC7BnM,EAAOmM,GAAOywB,EAAOzwB,IAEvB,OAAOnM,CACT,CCXA,SAASmgF,GAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KAInB,CAHE,MAAOsd,GAEP,YADAuS,EAAOvS,EAET,CACIuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEvC,CACe,SAASC,GAAkBr9E,GACxC,OAAO,WACL,IAAImJ,EAAOhN,KACTsZ,EAAO5F,UACT,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GACzB,SAAS0nE,EAAMj6E,GACb+5E,GAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EAClE,CACA,SAASk6E,EAAOjgD,GACd8/C,GAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EACnE,CACAggD,OAAMluE,EACR,GACF,CACF,0BC7BA,MAAM,GAA+BykG,OAAOC,KAAK/D,OAAO,mCCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,4DCYnC6O,GAAoB,8DAWtC,OAXsC,mBACvC39E,KAAA,SAAKyd,GACH,MAAkCpiD,KAAK0qB,MAA/B63F,EAAW,EAAXA,YAAgB73F,EAAK,SAEvBoB,EAAYkyC,KAAU,uBAAwB,cAAe,oBAAoBukD,EAAYv9G,QAEnG,OACE,0BAAQ8mB,UAAWA,GAAepB,GAChC,UAAMoB,UAAU,uBAAuBs2B,EAAM9sB,UAGnD,EAAC,EAXsC,CAAyD+lC,MCZlG,MAAM,GAA+Bk8C,OAAOC,KAAK/D,OAAO,82BCIQ,IAE3C+O,GAAiB,WAYpC,WAAYC,GAAwC,gBAX1CC,kBAAY,OAMd79F,QAA8C,CAAC,EAAC,KACjD89F,MAAuB,KAAI,KAC1BC,SAAqB,GAAE,KACvBH,kBAAyC,CAAC,EAAC,KAmBnChhE,QAASw3B,EAAAA,GAAAA,UAAS,IAAG,cAAE,oGAChC,EAAK0pC,SAAS,EAAKA,MAAMl+G,QAAU,GAAC,iDAEE,GAArCo+G,EAAa,EAAKF,MAAMn8G,eAE1B,EAAKo8G,SAAS1oD,SAAS2oD,GAAa,CAAF,qDAEZ,EAAKH,cAAY,wCAArB,OAAXH,EAAW,0BACMA,EAAY9gE,OAAOohE,GAAW,8EAA7C7mC,EAAK,QACT,EAAKn3D,QAAQ09F,EAAYv9G,QAAQ0wB,IAAIsmD,EAAMryD,OAC9C,EAAK9E,QAAQ09F,EAAYv9G,QAAQ8W,IAAIkgE,EAAMryD,KAAgBqyD,GAC5D,uDAI0B,OAA/B,EAAK4mC,SAAS1tG,KAAK2tG,GAAY,kBAExBljE,QAAQhpB,WAAS,6CAjCxB32B,KAAKyiH,kBAAoBA,CAC3B,CAAC,kBAsEA,OAtEA,EAEM35G,KAAP,SAAY45G,GACV1iH,KAAK2iH,MAAQ,KACb3iH,KAAK0iH,aAAeA,EAEpB,IAAK,IAAsC,EAA3C,KAA0B1iH,KAAK0iH,gBAAY,aAAE,KAAlCH,EAAW,QACpBviH,KAAK6kB,QAAQ09F,EAAYv9G,QAAU,IAAI06E,IAAI6iC,EAAYO,iBAAiBl7G,KAAI,SAAC6mB,GAAM,MAAK,CAACA,EAAO9E,KAAgB8E,EAAO,IACzH,CACF,EAEA,EAwBOzJ,QAAP,SAAeu9F,EAA+BvmC,GAAuB,MACnE,OAAOumC,EAAYv9F,QAAQg3D,GAAiB,OAAV,EAAAh8E,KAAK2iH,YAAK,EAAV,EAAYn8G,gBAAiB,GACjE,EAAC,EAEMu8G,eAAP,SAAsBR,EAA+BvmC,GACnD,IAAM5lD,EAAUmsF,EAAYS,WAAWhnC,EAAOh8E,KAAK2iH,OAC7CxB,EAAcoB,EAAYpB,YAAYnlC,GAE5C,EAA8Bh8E,KAAKyiH,kBAA3BngE,EAAO,EAAPA,QAAY53B,EAAK,SAEzB,OACE,EAAC43F,GAAoB,eAACC,YAAaA,EAAajgE,QAAS,kBAAMA,EAAQ6+D,EAAY,GAAMz2F,GACtF0L,EAGP,EAAC,EAEM6sF,iBAAP,WAGE,IAH0C,IAGC,EAHD,OACpCC,EAAgC,GAAG,iBAE9BX,EAAW,QACpB,IAAKA,EAAY75G,UAAW,iBAE5B,IAAIsc,EAAUtlB,MAAMigB,KAAK,EAAKkF,QAAQ09F,EAAYv9G,QAAQ45B,UAAU93B,QAAO,SAACk1E,GAAK,OAAK,EAAKh3D,QAAQu9F,EAAavmC,EAAM,IAEhH94E,EAAMq/G,EAAYY,yBACpBjgH,IAAK8hB,EAAUA,EAAQjB,OAAO,EAAG7gB,IAErC,IAAK,IAAsB,EAA3B,KAAoB8hB,KAAO,aAAE,KAAlBg3D,EAAK,QACRonC,EAAe,EAAKL,eAAeR,EAAavmC,GACtDknC,EAAYhuG,KAAKkuG,EACnB,CAAC,EAXH,KAA0BpjH,KAAK0iH,gBAAY,aAAG,IAc9C,OAAOQ,CACT,EAAC,EApFmC,GCNtC,MAAM,GAA+B3L,OAAOC,KAAK/D,OAAO,gDCInC4P,GAAyB,uFAsB3C,OAtB2C,EAC5CnjD,KAAA,WACE,MAAO,cACT,EAAC,EAED9vC,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAC1BnW,EAAOmW,EAAaC,UACpBnoD,EAAUkoD,EAAaloD,UAE7B,OAAOojC,IAAAA,MAAAA,WAAqB2O,EAAKjK,aAAc9nC,GAAWA,EAAQktF,YACpE,EAAC,EAEDltF,QAAA,WACE,IACM02B,EADe9sD,KAAK0qB,MAAM4zD,aACNwI,WAE1B,OAAOttB,IAAAA,WAAAA,MAAqB,0DAA2D,CAAE1M,KAAAA,EAAMr2C,MAAO,GACxG,EAAC,EAEDk5D,QAAA,WACE,OAAOn7C,EAAAA,EAAAA,UAASx0B,KAAK0qB,MAAM4zD,aAAaC,UAAU3O,gBAAkB,GAAI,IAC1E,EAAC,EAtB2C,CAASiX,MCAlC08B,GAAyB,uFAmB3C,OAnB2C,EAC5CrjD,KAAA,WACE,MAAO,WACT,EAAC,EAED9vC,KAAA,WACE,IAAM+3C,EAAOnoE,KAAK0qB,MAAM4zD,aAAaC,UAErC,OAAO/kB,IAAAA,MAAAA,WAAqB2O,EAAKjK,aAAciK,EAAK3H,SACtD,EAAC,EAEDpqC,QAAA,WACE,IAAM02B,EAAO9sD,KAAK0qB,MAAM4zD,aAAawI,WAErC,OAAOttB,IAAAA,WAAAA,MAAqB,0DAA2D,CAAE1M,KAAAA,GAC3F,EAAC,EAED6iB,QAAA,WACE,OAAOn7C,EAAAA,EAAAA,UAASx0B,KAAK0qB,MAAM4zD,aAAaC,UAAU3O,eAAgB,IACpE,EAAC,EAnB2C,CAASiX,MCAlC28B,GAA0B,uFAmB5C,OAnB4C,EAC7CtjD,KAAA,WACE,MAAO,WACT,EAAC,EAED9vC,KAAA,WACE,IAAM+3C,EAAOnoE,KAAK0qB,MAAM4zD,aAAaC,UAErC,OAAO/kB,IAAAA,MAAAA,WAAqB2O,EAAKjK,aAAciK,EAAK3H,SACtD,EAAC,EAEDpqC,QAAA,WACE,IAAM02B,EAAO9sD,KAAK0qB,MAAM4zD,aAAawI,WAErC,OAAOttB,IAAAA,WAAAA,MAAqB,2DAA4D,CAAE1M,KAAAA,GAC5F,EAAC,EAED6iB,QAAA,WACE,OAAOn7C,EAAAA,EAAAA,UAASx0B,KAAK0qB,MAAM4zD,aAAaC,UAAU3O,eAAgB,IACpE,EAAC,EAnB4C,CAASiX,MCD1B48B,GAAa,6BAC/BC,eAAS,OAgBVhB,kBAAY,OAEFiB,gBAAU,oBAJ5B,OAI4B,EAhBtBC,iBAAP,WAA8C,aAC5C,OAAqB,OAArB,EAAO5jH,KAAK0jH,WAAS,EAAK1jH,KAAK0jH,UAAY1jH,KAAK0iH,aAAa96G,KAAI,SAACi8G,GAAW,OAAK,IAAIA,EAAY,EAAK,GACzG,EAAC,EAEMC,eAAP,SAAsB9+G,GAAuC,MAC3D,OAAiF,OAAjF,EAAOhF,KAAK4jH,mBAAmB/iH,MAAK,SAAC0hH,GAAW,OAAKA,EAAYv9G,SAAWA,CAAI,KAAC,EAAI,IACvF,EAAC,EAEMvE,OAAP,SAAc8hH,GACZ,IAAKviH,KAAK2jH,WAAY,MAAM,IAAI93G,MAAM,iDAEtC7L,KAAK0iH,aAAaxtG,KAAKqtG,EACzB,EAAC,EAfwC,GCH3C,MAAM,GAA+BhL,OAAOC,KAAK/D,OAAO,wCCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,2CCI1BsQ,GAG5B,SAAmBrnG,GAAgB,KAF5BA,YAAM,EAGX1c,KAAK0c,OAASA,CAChB,ECTF,MAAM,GAA+B66F,OAAOC,KAAK/D,OAAO,2CCUlDuQ,GAAqB,WAAH,OAAS3jD,KAAY7G,IAAAA,WAAAA,MAAqB,kCAAkC,EAUrF,SAASyqD,GAAoBn3D,EAAMo3D,GAChD,YAD8D,IAAdA,IAAAA,GAAiB,GAC5Dp3D,IAESo3D,EAAiBp3D,EAAK6J,cAAgB7J,EAAKtR,aAAewoE,MAE5DrgH,QAAQ,qBAAsB,KAJxBqgH,KAAqBrgH,QAAQ,qBAAsB,IAKvE,CCnBuF,IAGlEwgH,GAAW,uFAmE7B,OAnE6B,EAC9Bn/G,KAAA,WACE,MAAO,MACT,EAAC,EAED89G,eAAA,WACE,OAAOpjH,MAAMigB,KAAK65C,IAAAA,MAAAA,IAAoB,SACxC,EAEA,EAcO2nD,YAAP,SAAmBr0D,GACjB,GD1BoC0M,IAAAA,MAAAA,UAAoB,8BC0B9B,CACxB,IAAM4qD,EAAYH,GAAoBn3D,GAAM,GAC5C,OAAO9sD,KAAK0c,OAAOA,OAAO0nG,EAC5B,CAEA,IAAMA,EAAYH,GAAoBn3D,GACtC,OAAO9sD,KAAK0c,OAAOA,OAAO0nG,EAAW,GAAIt3D,EAAKnjC,KAChD,EAAC,EAEDq5F,WAAA,SAAWhnC,EAAa2mC,GACtB,IAEW,EAFLnnE,EAAWoxC,IAAe5Q,GAOhC,OALI2mC,IACFnnE,EAASlmB,SAAW,CAACyqC,KAAwB,OAAb,EAAAvkB,EAASjrC,MAAI,EAAI,GAAeoyG,WACzDnnE,EAASjrC,MAIhB,WACGkuD,KAAOud,GACPxgC,EAGP,EAAC,EAEDx2B,QAAA,SAAQg3D,EAAa2mC,GACnB,QAAKA,GAES,CAAC3mC,EAAMxgC,WAAYwgC,EAAMrlB,eAE1BrV,MAAK,SAACzuC,GAAI,OAAKA,EAAKrM,cAAc84D,OAAO,EAAGqjD,EAAMl+G,UAAYk+G,CAAK,GAClF,EAAC,EAEDQ,uBAAA,WACE,OAAO,IACT,EAAC,EAEK1hE,OAAM,+BAAZ,WAAakhE,GAAa,kFACXnpD,IAAAA,MAAAA,KAAuB,QAAS,CAAE1yD,OAAQ,CAAEkqD,EAAG2xD,GAAS7oC,KAAM,CAAEsH,MAAO,KAAM,mFAC3F,mDAFW,GAEX,EAED14E,QAAA,WACE,OAAO,CACT,EAAC,EAnE6B,CAASq7G,ICVzC,MAAM,GAA+BxM,OAAOC,KAAK/D,OAAO,iDCanC4Q,GAAW,uFAuF7B,OAvF6B,EAC9Br/G,KAAA,WACE,MAAO,MACT,EAEA,EAMA89G,eAAA,WACE,IAAKtpD,IAAAA,SAAAA,YAAyBwO,QAAmBxO,IAAAA,SAAAA,YAAyB0tB,KACxE,MAAO,GAIT,IAAMo9B,EAAgB9qD,IAAAA,SAAAA,KAAAA,MAChB+qD,EAAeD,EAAcn8C,KAGnC,OAFoBo8C,GAAgBA,EAAarmD,cAAiBomD,EAAcpmD,YAI3E2U,QAEA/rE,QAAO,SAACqhE,GAAU,OAAKA,GAA+B,YAAvBA,EAAKjxB,iBAAiCqtE,GAAgBp8C,EAAK3H,SAAW+jD,EAAa/jD,SAAS,IAE3H9qD,MAAK,SAAChM,EAASE,GAAO,OAAKA,EAAEolE,YAAY/yD,UAAYvS,EAAEslE,YAAY/yD,SAAS,GAEnF,EAEA,EAQOklG,YAAP,SAAmBh5C,GACjB,IACMi8C,EAAYH,GADL97C,EAAKrb,QAElB,OAAO9sD,KAAK0c,OAAOA,OAAO0nG,EAAW,IAAKj8C,EAAKx+C,KACjD,EAAC,EAEDq5F,WAAA,SAAWhnC,EAAa2mC,GAAiC,MAI5C,EAHL71D,EAAOkvB,EAAMlvB,QAAU,KACvBtR,EAAWoxC,IAAe9/B,GAOhC,OALI61D,IACFnnE,EAASlmB,SAAW,CAACyqC,KAAwB,OAAb,EAAAvkB,EAASjrC,MAAI,EAAI,GAAeoyG,WACzDnnE,EAASjrC,MAIhB,WACGkuD,KAAO3R,GACPtR,EACA,CACCge,IAAAA,WAAAA,MAAqB,oDAAqD,CAAEgH,OAAQwb,EAAMxb,WAC1F,OACAhsC,EAAAA,EAAAA,UAA6B,OAArB,EAACwnD,EAAMpM,gBAAc,EAAI,GAAI,MAI7C,EAAC,EAED5qD,QAAA,SAAQg3D,EAAa2mC,GACnB,IAAM71D,EAAOkvB,EAAMlvB,OACb03D,EAAkBhrD,IAAAA,eAAAA,YAA+B,QAEvD,OAAQmpD,GAAU71D,GAAQ03D,EAAgBx/F,QAAQ8nC,EAAM61D,EAC1D,EAAC,EAEDQ,uBAAA,WACE,OAAO,CACT,EAEA,EAGA1hE,OAAA,SAAOkhE,GACL,OAAOhjE,QAAQhpB,QAAQ,GACzB,EAAC,EAEDjuB,QAAA,WACE,OAAO,CACT,EAAC,EAvF6B,CAASq7G,ICbzC,MAAM,GAA+BxM,OAAOC,KAAK/D,OAAO,sCCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,0CCQnCgR,GAAY,uFA8D9B,OA9D8B,EAC/Bz/G,KAAA,WACE,MAAO,OACT,EAAC,EAED89G,eAAA,WACE,OAAOpjH,MAAMigB,KACX65C,IAAAA,MAAAA,IAAqB,UAAU1yD,QAAO,SAACgO,GACrC,OAAOA,EAAE6U,OAASm+D,KAAAA,UAAkBhzE,EAAE6U,OAASm+D,KAAAA,SACjD,IAEJ,EAEA,EASOq5B,YAAP,SAAmB1iC,GACjB,OAAOz+E,KAAK0c,OAAOA,OAAO+hE,EAAMsJ,aAAc,IAAKtJ,EAAM90D,KAC3D,EAAC,EAEDq5F,WAAA,SAAWhnC,EAAc2mC,GACvB,IAAI+B,EAA8B1oC,EAAM+L,aAMxC,OAJI46B,IACF+B,EAAY3kD,KAAU2kD,EAAW/B,IAIjC,WACE,EAAC,KAAK,CAAC72F,UAAS,8BAAgCkwD,EAAMryD,KAAI,cAAetS,MAAO2kE,EAAM3kE,QAASrS,KAAK,QAAQk7D,KAAM8b,EAAM9b,SACxH,UAAMp0C,UAAU,YAAY44F,GAGlC,EAAC,EAED1/F,QAAA,SAAQg3D,EAAc2mC,GACpB,QAAKA,GAES,CAAC3mC,EAAM+L,aAAavhF,cAAew1E,EAAM6L,eAAerhF,eAEzD86C,MAAK,SAACzuC,GAAI,OAAKA,EAAKrM,cAAc84D,OAAO,EAAGqjD,EAAMl+G,UAAYk+G,CAAK,GAClF,EAAC,EAEDQ,uBAAA,WACE,OAAO,IACT,EAEA,EAGA1hE,OAAA,SAAOkhE,GACL,OAAOhjE,QAAQhpB,QAAQ,GACzB,EAAC,EAEDjuB,QAAA,WAAmB,UACjB,OAA4C,OAA5C,EAAkB,OAAlB,EAAO8wD,IAAAA,UAAiB,OAAN,EAAX,EAAa1M,WAAF,EAAX,EAAmB63D,qBAAkB,CAC9C,EAAC,EA9D8B,CAASZ,ICFrBa,GAAe,mGAEE,OAFF,0CAC3BlC,aAA6D,CAACyB,GAAaE,GAAaI,IAAa,EAClGd,YAAsB,EAAI,EAFF,OAEE,kBAiBnC,OAjBmC,EAE7BlgH,QAAP,WACE,MAAO,GACT,EAAC,EAEMohH,eAAP,SAAsBlC,GACpB,IAAMmC,EAAanC,EAAM/7G,MAAM,yBAE/B,OAAOk+G,EAAaA,EAAW,GAAK,IACtC,EAAC,EAEMpoG,OAAP,SAAc7J,EAAc6wF,EAA0B/5E,GACpD,YAD6C,IAAnB+5E,IAAAA,EAAsB,SAAqB,IAAjB/5E,IAAAA,EAAoB,MACjE,CACLiF,OAAQ,IAAI/b,EACZkyG,KAAM,KAAKlyG,EAAI,KAAK6wF,EAAO/5E,GAC3BA,EAAK,OAAS,SAClB,EAAC,EAnBiC,CAAS85F,ICExBuB,GAAU,uFAuD5B,OAvD4B,EAC7BhgH,KAAA,WACE,MAAO,KACT,EAAC,EAED89G,eAAA,WACE,OAAOpjH,MAAMigB,KAAK65C,IAAAA,MAAAA,IAAmB,QACvC,EAEA,EASO2nD,YAAP,SAAmB/0F,GACjB,OAAOpsB,KAAK0c,OAAOA,OAAO0P,EAAI0yC,OAChC,EAAC,EAED95C,QAAA,SAAQg3D,EAAY2mC,GAClB,QAAKA,GAES,CAAC3mC,EAAMnpE,OAAOrM,eAEf86C,MAAK,SAACzuC,GAAI,OAAKA,EAAKrM,cAAc84D,OAAO,EAAGqjD,EAAMl+G,UAAYk+G,CAAK,GAClF,EAAC,EAEDQ,uBAAA,WACE,OAAO,IACT,EAAC,EAEK1hE,OAAM,+BAAZ,WAAakhE,GAAa,kFACXnpD,IAAAA,MAAAA,KAAsB,OAAQ,CAAE1yD,OAAQ,CAAEkqD,EAAG2xD,GAAS7oC,KAAM,CAAEsH,MAAO,KAAM,mFACzF,mDAFW,GAEX,EAED4hC,WAAA,SAAWhnC,EAAY2mC,GACrB,IAAI19G,EAA4B+2E,EAAMnpE,OAMtC,OAJI8vG,IACF19G,EAAU86D,KAAU96D,EAAS09G,IAI7B,WACE,EAAC,KAAK,CAAC72F,UAAU,SAASo0C,KAAM8b,EAAM9b,OAAQ7oD,MAAO2kE,EAAM3kE,QAASrS,KAAK,QACzE,UAAM8mB,UAAU,YAAY7mB,GAGlC,EAAC,EAEDyD,QAAA,WACE,MAAO,gBAAiB6uG,OAAOjK,UACjC,EAAC,EAvD4B,CAASyW,ICJnBkB,GAAiB,mGAEA,OAFA,0CAC7BvC,aAA6D,CAACsC,IAAW,EACtErB,YAAsB,EAAI,EAFA,OAEA,kBAcnC,OAdmC,EAE7BlgH,QAAP,WACE,MAAO,GACT,EAAC,EAEMohH,eAAP,SAAsBlC,GACpB,IAAMmC,EAAanC,EAAM/7G,MAAM,4zTAE/B,OAAOk+G,EAAaA,EAAW,GAAK,IACtC,EAAC,EAEMpoG,OAAP,SAAcoiD,GACZ,MAAO,IAAIA,CACb,EAAC,EAhBmC,CAAS2kD,+GCHK,IAI/ByB,GAAc,6BACvBjmG,QAA2B,CAAC,IAAI2lG,GAAmB,IAAIK,GAAoB,mBAkBpF,OAlBoF,EAE9E1oG,IAAP,SAAW4oG,GAAsC,MAC/C,OAAuD,OAAvD,EAAOnlH,KAAKif,QAAQpe,MAAK,SAACgU,GAAC,OAAKA,EAAEpR,YAAc0hH,CAAM,KAAC,EAAI,IAC7D,EAAC,EAEM5C,YAAP,SAAmBv9G,GACjB,IAAK,IAA4B,EAAjC,+sBAAqBhF,KAAKif,WAAO,aAAE,KAC3BsjG,EADS,QACYuB,eAAe9+G,GAE1C,GAAIu9G,EAAa,OAAOA,CAC1B,CAEA,OAAO,IACT,EAAC,EAEM9hH,OAAP,SAAcic,GACZ1c,KAAKif,QAAQ/J,KAAK,IAAIwH,EACxB,EAAC,EAnBgC,GCLnC,MAAM,GAA+B66F,OAAOC,KAAK/D,OAAO,4CCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,+CCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,qCCAnB8D,OAAOC,KAAK/D,OAAO,gBAAxD,MCAM,GAA+B8D,OAAOC,KAAK/D,OAAO,mCCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,qCCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,sCCMnC2R,GAAgB,8DAiBlC,OAjBkC,mBAQnCx2B,YAAA,SAAY9sF,GACV,OAAO03D,IAAAA,MAAAA,KAAe,QAAS,CAC7B1yD,OAAQ,CACN9B,KAAM,UACNqgH,UAAWrlH,KAAK8sD,KAAKnjC,MAEvBmwD,KAAM,CAAEh4E,OAAAA,EAAQs/E,MAAOphF,KAAKyuF,WAC5B/4E,KAAM,cAEV,EAAC,EAjBkC,QAAS64E,ICD9C,WACE,IAAIkqB,KAAAA,SACD3/F,IAAI,gBAAiB,wBAAyBssG,IAEjD,IAAI3M,KAAAA,OAAapxB,MACd3K,QAAc,eACdtZ,UAAkB,oBAErB,IAAIq1C,KAAAA,OAAaxN,MACd7nC,UAAmB,qBCVjB,SAASkiD,GAAmBl5F,GACjC,IAAI0gC,EAMJ,GAJI0M,IAAAA,MAAAA,UAAoB,+BAAiCptC,EAAIm5F,aAAa,YACxEz4D,EAAO0M,IAAAA,MAAAA,MAAgB,QAAS,WAAYptC,EAAIzJ,aAAa,aACtDyJ,EAAIm5F,aAAa,QAAOz4D,EAAO0M,IAAAA,MAAAA,QAAkB,QAASptC,EAAIzJ,aAAa,QAEhFmqC,EAKF,OAJA1gC,EAAIxJ,aAAa,KAAMkqC,EAAKnjC,MAC5ByC,EAAIxJ,aAAa,OAAQkqC,EAAKgS,QAC9B1yC,EAAIxJ,aAAa,cAAey9C,KAAY7kB,IAASsR,MAE9C,EAGT1gC,EAAIq2C,YACN,CAEO,SAAS+iD,GAAuBp5F,GACrCA,EAAIxJ,aAAa,WAAW,EAC9B,CAEO,SAAS6iG,GAAmBr5F,GACjC,IAAM+7C,EAAO3O,IAAAA,MAAAA,QAAkB,QAASptC,EAAIzJ,aAAa,OAEzD,GAAIwlD,EAKF,OAJA/7C,EAAIxJ,aAAa,eAAgBulD,EAAKjK,aAAav0C,MACnDyC,EAAIxJ,aAAa,SAAUulD,EAAK3H,UAChCp0C,EAAIxJ,aAAa,cAAey9C,KAAY7kB,IAAS2sB,EAAKrb,WAEnD,CAEX,CAEO,SAAS44D,GAAuBt5F,GACrCA,EAAIxJ,aAAa,WAAW,EAC9B,CAEO,SAAS+iG,GAAoBv5F,GAAK,QACvC,GAAe,OAAf,EAAIotC,IAAAA,UAAiB,OAAN,EAAX,EAAa1M,OAAb,EAAmB63D,mBAAoB,CACzC,IAAMlmC,EAAQjlB,IAAAA,MAAAA,QAAkB,SAAUptC,EAAIzJ,aAAa,OAE3D,GAAI87D,EAGF,OAFAryD,EAAIxJ,aAAa,YAAay9C,KAAYoe,EAAMsJ,gBAEzC,CAEX,CAEA37D,EAAIq2C,YACN,CAEO,SAASmjD,GAAwBx5F,GAAK,QAC3C,GAAe,OAAf,EAAIotC,IAAAA,UAAiB,OAAN,EAAX,EAAa1M,OAAb,EAAmB63D,mBAAoB,CACzC,IAAMlmC,EAAQjlB,IAAAA,MAAAA,QAAkB,SAAUptC,EAAIzJ,aAAa,OAE3DyJ,EAAIxJ,aAAa,QAAS67D,EAAMpnE,SAChC+U,EAAIxJ,aAAa,OAAQ67D,EAAMve,QAC/B9zC,EAAIxJ,aAAa,WAAW,EAC9B,CACF,CAEO,SAASijG,GAAkBz5F,GAChC,GAAI,gBAAiBmrF,OAAOjK,WAAY,CACtC,IAAMtxB,EAAQxiB,IAAAA,MAAAA,MAAgB,OAAQ,OAAQptC,EAAIzJ,aAAa,SAE/D,GAAIq5D,EAIF,OAHA5vD,EAAIxJ,aAAa,KAAMo5D,EAAMryD,MAC7ByC,EAAIxJ,aAAa,UAAWo5D,EAAMnpE,SAE3B,CAEX,CAEAuZ,EAAIq2C,YACN,CAEO,SAASqjD,GAAsB15F,GACpC,GAAI,gBAAiBmrF,OAAOjK,WAAY,CACtC,IAAMtxB,EAAQxiB,IAAAA,MAAAA,MAAgB,OAAQ,OAAQptC,EAAIzJ,aAAa,SAE/DyJ,EAAIxJ,aAAa,OAAQo5D,EAAM9b,QAC/B9zC,EAAIxJ,aAAa,QAASo5D,EAAM3kE,SAChC+U,EAAIxJ,aAAa,WAAW,EAC9B,CACF,2zBC1EA,UACE,uCAAwCwiG,GACxC,gDAAiD/B,GACjD,gDAAiDE,GACjD,iDAAkDC,GAClD,0CAA2CtB,GAC3C,qCAAsCX,EACtC,qCAAsC0C,GACtC,gCCba,SAAwBn3D,EAAMi5D,EAAQtnC,GACnD,QAAa3rE,IAATg6C,QAAiCh6C,IAAXizG,EACxB,OAAOvsD,IAAAA,aAAAA,IAAqB,QAAQ2nD,YAAYr0D,GAC3C,QAAah6C,IAATg6C,QAAiCh6C,IAAXizG,EAC/B,OAAOvsD,IAAAA,aAAAA,IAAqB,QAAQ2nD,YAAY3nD,IAAAA,MAAAA,QAAkB,QAASusD,IACtE,QAAcjzG,IAAV2rE,EACT,OAAOjlB,IAAAA,aAAAA,IAAqB,SAAS2nD,YAAY1iC,GAGnD,KAAM,2BACR,EDIE,uBAAwB3K,EACxB,8BAA+BihC,EAC/B,+BAAgCiR,EAChC,yCAA0CjC,GAC1C,8CAA+CN,GAC/C,kCExB+B,6BACrBxkG,QAAuC,GAAE,KACzCyjG,aAA6E,CAAC,CAAC,mBA6CxF,OA3CD,EAIAhmG,OAAA,SAAOA,GAGL,OAFA1c,KAAKif,QAAQ/J,KAAKwH,GAEX1c,IACT,EAEA,EASAuiH,YAAA,SAAY4C,EAAgB5C,GAO1B,OANKviH,KAAK0iH,aAAayC,KACrBnlH,KAAK0iH,aAAayC,GAAU,IAG9BnlH,KAAK0iH,aAAayC,GAAQjwG,KAAKqtG,GAExBviH,IACT,EAAC,EAEDS,OAAA,SAAO+4D,GACL,IAAK,IAA4B,EAAjC,KAAqBx5D,KAAKif,WAAO,aAAE,KAAxBvC,EAAM,QACf88C,EAAIysD,eAAexlH,OAAOic,EAC5B,CAEA,IAAK,IAAMyoG,KAAUnlH,KAAK0iH,aAAc,CACtC,IAAMhmG,EAAS88C,EAAIysD,eAAe1pG,IAAI4oG,GAEtC,GAAKzoG,EAEL,IAAK,IAA8C,EAAnD,KAA0B1c,KAAK0iH,aAAayC,MAAO,aAAE,KAA1C5C,EAAW,QACpB7lG,EAAOjc,OAAO8hH,EAChB,CACF,CACF,EAAC,EA/C8B,ICL3B,GAA+BhL,OAAOC,KCqB5Ch+C,IAAAA,eAAqB,IAAI0rD,GAIzB1rD,IAAAA,aAAAA,IAAqB,mBAAmB,WChBzB,IACP0b,EACAnvE,GCNO,WACb,SAASmgH,IACP,IAAM75B,EAAcrsF,KAAK0qB,MAAMy9C,KAAKkkB,cAEpC,GAAIA,IAAgBrsF,KAAKmmH,qBAAsBnmH,KAAKosF,YAApD,CAEApsF,KAAKmmH,mBAAqB95B,EAE1B,IAAM+5B,EAAapmH,KAAK0qB,MAAMy9C,KACxBk+C,EAAcrmH,KAAKK,IAEzBL,KAAKK,IAAIU,GACP,QACA,2HACA,SAAUwC,GACRyR,EAAEwrC,MAAM1kC,IAAI9b,KAAK2iB,aAAa,SAC9Bpf,EAAEmC,gBACJ,IAGF1F,KAAKK,EAAE,2CAA2CoB,MAAK,WACrD,IAEIkH,EAFEjH,EAAQrB,EAAEL,MACV2pB,EAAKjoB,EAAMC,KAAK,MAKhB2kH,EAAWjmH,EAAE,wDACnBgmH,EAAY5+E,OAAO6+E,GAEnB,IAAMC,EAAiB,WACrB,OAAOlmH,EAAE,6BAA6BspB,EAAE,KAC1C,EAEM68F,EAAc,WAIlB,IAAMC,EAAQF,IACVvrE,GAAU,EACd,GAAIyrE,EAAMhiH,OAAQ,CAChB,IAAMjC,EAAMikH,EAAM3kH,SAASU,IACrBH,EAAYN,OAAO67C,YACrBp7C,EAAMH,GAAaG,EAAMikH,EAAMvkH,SAAWG,EAAYhC,EAAE0B,QAAQG,WAClEukH,EAAM5jH,SAAS,WACfm4C,GAAU,EAEd,CAIA,IAAKA,EAAS,CAGZ,IAAM0rE,EAAkB,WACtB,IAAMC,EAAgBL,EAASj1C,aAAY,GACvCvvE,EAAS,EAITJ,EAAMI,SAASU,IAAMmkH,EAAgBtmH,EAAE0B,QAAQM,YAAchC,EAAE,WAAWgxE,cAC5EvvE,GAAUJ,EAAM2vE,aAAY,GAE5BvvE,GAAU6kH,EAGZL,EACG55G,OACArJ,IAAI,MAAO3B,EAAMI,SAASU,IAAM6jH,EAAYvkH,SAASU,IAAMV,GAC3DuB,IAAI,OAAQ3B,EAAMo8C,eAAeh8C,SAASkM,KAAOq4G,EAAYvkH,SAASkM,MACtE3K,IAAI,YAAa3B,EAAMo8C,eAAelvC,QAC3C,EAEMg4G,EAAW,SAACz+C,GAChB,IAAMjK,EAAaiK,EAAKjK,aAExBlpD,EAAEmqC,OAAOmnE,EAAS,GAAI,CACpBpoD,IAAekoD,EAAWloD,cACxB,YACE,UAAMpyC,UAAU,kCAAkCoyC,EAAW/0D,UAGjE,YACE,EAAC,IAAW,CAACg/D,KAAMA,OAGvBu+C,GACF,EAEMv+C,EAAO3O,IAAImiB,MAAM3vD,QAAQ,QAASrC,GACpCw+C,GAAQA,EAAKjK,aACf0oD,EAASz+C,IAETnzD,EAAEmqC,OAAOmnE,EAAS,GAAI,EAAC,IAAgB,OACvC9sD,IAAImiB,MAAM96E,KAAK,QAAS8oB,GAAIsN,KAAK2vF,GACjCF,KAGF5jH,YAAW,kBAAMwjH,EAASp0G,IAAI,iBAAiBrP,SAAS,KAAK,GAC/D,CACF,EAEMgkH,EAAc,WAClBN,IAAiB3jH,YAAY,WACzB0jH,EAASvhH,SAAS,OACpBuhH,EAAS1jH,YAAY,MAAMwM,IAAI,iBAAiB,kBAAMk3G,EAAS35G,MAAM,GAEzE,EAKAjL,EAAMX,GAAG,YAAY,SAACwC,GAChBA,EAAE6gC,YACJ7gC,EAAEmC,gBAEN,IAEAhE,EACGoX,IAAIwtG,GACJ56G,OACC,WACEyB,aAAaxE,GACbA,EAAU7F,WAAW0jH,EAAa,IACpC,IACA,WACEr5G,aAAaxE,GACb49G,IAAiB3jH,YAAY,WAC7B+F,EAAU7F,WAAW+jH,EAAa,IACpC,IAED9lH,GAAG,YAAY,SAACwC,GACfijH,IACAjjH,EAAEoC,iBACJ,IAEFtF,EAAEO,UAAUG,GAAG,WAAY8lH,EAC7B,GArIuE,CAsIzE,EAEApmH,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,WAAYg6B,IAC1CzlH,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,WAAYg6B,EAC5C,CFvHEY,GGjBa,WACb,SAASD,IACP7mH,KAAKK,EAAE,6BACJuC,YAAY,MACZwM,IAAI,iBAAiB,WACpB/O,EAAEL,MAAM2M,MACV,GACJ,EAEAlM,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,YAAY,WAAY,IAChDvjF,EADgD,OAE9Cw/D,EAAOnoE,KAAK0qB,MAAMy9C,KAClB4+C,EAAU5+C,EAAK6+C,cAErB,GAAID,GAAWA,EAAQtiH,OAAQ,CAC7B,IAAM6hH,EAAWjmH,EAAE,6DACnBL,KAAKK,IAAIonC,OAAO6+E,GAEhB,IAAMD,EAAcrmH,KAAKK,IACnBqB,EAAQ1B,KAAKK,EAAE,qBAEfmmH,EAAc,YACbF,EAASvhH,SAAS,OAASuhH,EAASvjH,GAAG,cAK5CiS,EAAEmqC,OACAmnE,EAAS,GACT,WACGS,EAAQn/G,KAAI,SAACksE,GAAK,OACjB,QAAI,cAAaA,EAAMtT,UACrB,EAAC,IAAW,CAAC2H,KAAM2L,EAAOxxB,QAASukE,EAAYn3E,KAAK,KACjD,IAENq3E,EAAQtiH,OAAS0jE,EAAK8+C,oBACrB,QAAIn7F,UAAU,iCACZ,EAAC,IAAM,CACLA,UAAU,qBACVw2B,QAAS,WACPukE,EAAY9mH,KAAK,GACjBy5D,IAAAA,MAAAA,KAAesnD,EAAkB,CAAE34C,KAAAA,GACrC,GAEA,UAAMr8C,UAAU,uBACd,UAAMA,UAAU,4BAA4Bo0C,IAAK,qBACjD,cACG1G,IAAAA,WAAAA,MAAqB,oDAAqD,CAAE/iD,MAAO0xD,EAAK8+C,mBAAqBF,EAAQtiH,eASpI6hH,EACG55G,OACArJ,IAAI,MAAO3B,EAAMI,SAASU,IAAM6jH,EAAYvkH,SAASU,IAAMd,EAAM2vE,aAAY,IAC7EhuE,IAAI,OAAQ3B,EAAMo8C,eAAeh8C,SAASkM,KAAOq4G,EAAYvkH,SAASkM,MACtE3K,IAAI,YAAagjH,EAAYz3G,SAEhC9L,YAAW,kBAAMwjH,EAASp0G,IAAI,iBAAiBrP,SAAS,KAAK,IAC/D,EAEAnB,EAAMoX,IAAIwtG,GAAU56G,OAClB,WACEyB,aAAaxE,GACbA,EAAU7F,WAAW0jH,EAAa,IACpC,IACA,WACEr5G,aAAaxE,GACbA,EAAU7F,WAAW+jH,EAAa,IACpC,IAMF7mH,KAAKK,IACFQ,KAAK,+BACL6K,OACC,WACE46G,EAASzlH,KAAK,iBAAmBR,EAAEL,MAAM2B,KAAK,UAAY,MAAMkB,SAAS,SAC3E,IACA,WACEyjH,EAASzlH,KAAK,iBAAiB+B,YAAY,SAC7C,GAEN,CACF,KAEAnC,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAAUvuB,GAAO,WACtDwK,EAAOnoE,KAAK0qB,MAAMy9C,KAClB4+C,EAAU5+C,EAAK6+C,cAErB,GAAID,GAAWA,EAAQtiH,OAAQ,CAC7B,IAAM6nG,EAAQ,GACR4a,EAAWH,EACdrxG,MAAK,SAACo+D,GAAK,OAAMA,EAAMhnB,SAAW0M,IAAAA,QAAAA,MAAoB,EAAI,CAAC,IAC3D1yD,QAAO,SAACgtE,GACP,IAAMhnB,EAAOgnB,EAAMhnB,OACnB,IAA6B,IAAzBw/C,EAAMprF,QAAQ4rC,GAEhB,OADAw/C,EAAMp3F,KAAK43C,IACJ,CAEX,IAGIq6D,EAAYh/C,EAAK8+C,mBADT,EAKRG,EAAQF,EAAS3xG,MAAM,EAAG4xG,EAAY/lC,EAL9B,GAKiDx5E,KAAI,SAACksE,GAClE,IAAMhnB,EAAOgnB,EAAMhnB,OAEnB,OACE,EAAC,IAAI,CAAC18B,KAAMopC,IAAAA,MAAAA,KAAesa,GAAQxxB,QAASukE,EAAYn3E,KAAK,GAAO,cAAaokC,EAAMtT,UACpFhH,IAAAA,QAAAA,OAAqB1M,EAAO0M,IAAAA,WAAAA,MAAqB,uCAAyChe,IAASsR,GAG1G,IAKA,GAAIq6D,EAAW,CACb,IAAM1wG,EAAQ0xD,EAAK8+C,mBAAqBG,EAAM3iH,OAE9C2iH,EAAMlyG,KAAKskD,IAAAA,WAAAA,MAAqB,yCAA0C,CAAE/iD,MAAAA,IAC9E,CAEAknD,EAAM7kD,IACJ,UACA,SAAKgT,UAAU,oBACb,UAAMA,UAAU,4BACbo0C,IAAK,gBACL1G,IAAAA,WAAAA,MAAqB,2CAA0C0tD,EAAS,GAAGp6D,SAAW0M,IAAAA,QAAAA,KAAmB,QAAU,IAAE,QAAS,CAC7H/iD,MAAO2wG,EAAM3iH,OACb6nG,MAAO+a,IAAgBD,OAKjC,CACF,GACF,CH7HEE,IIxBA7mH,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAAUvuB,GACrD,IAAMwK,EAAOnoE,KAAK0qB,MAAMy9C,KAEpBA,EAAK8D,YAAezS,IAAAA,QAAAA,OAAqB2O,EAAKjK,aAAayN,YAE/DhO,EAAM7kD,IACJ,QACA,EAAC,IAAM,CAACgT,UAAU,sBAAsBw2B,QAAS,kBAAMwxB,EAAM3L,EAAK,GAC/D3O,IAAAA,WAAAA,MAAqB,0CAG5B,KCXA/4D,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,YAAY,WACxC,IAAM/jB,EAAOnoE,KAAK0qB,MAAMy9C,KAExB,KAAIA,EAAK8D,YAAezS,IAAAA,QAAAA,OAAqB2O,EAAKjK,aAAayN,YAA/D,CAEA,IAAM47C,EAAYvnH,KAAKK,EAAE,cAInB60E,EAAa70E,EAAE,iDAEf+iC,EAAS,IAAIm+E,EAAgBp5C,GAE7B30D,EAAU,SAAUjQ,GACxBT,YAAW,WACT,IAAMszB,EAAU2+E,EAAawS,GAC7B,GAAInxF,EAAS,CACXgN,EAAOhN,QAAUA,EACjBphB,EAAEmqC,OAAO+1B,EAAW,GAAI9xC,EAAO+b,UAE/B,IAAMqoE,EAAQzlH,OAAO6/G,eAAeG,WAAW,GAAG11E,iBAC5Co7E,EAAYD,EAAM,GAExB,GAAIjkH,EAAEyhC,QAAUyiF,EAAUzkH,QAAUO,EAAEwhC,QAAU0iF,EAAU94G,MAAQ84G,EAAUz5G,KAAOzK,EAAEwhC,QACnF3B,EAAOq+E,UAAUgG,EAAUz5G,KAAMy5G,EAAUjlH,SACtC,CACL,IAAMklH,EAAWF,EAAMA,EAAM/iH,OAAS,GACtC2+B,EAAOs+E,QAAQgG,EAAS/4G,MAAO+4G,EAAS1kH,OAC1C,CACF,CACF,GAAG,EACL,EAEAhD,KAAKK,IAAIwnC,MAAMqtC,GAAYn0E,GAAG,UAAWyS,GAErC,iBAAkBzR,QACpBnB,SAASgrB,iBAAiB,kBAAmBpY,GAAS,EAjC0B,CAmCpF,IJpCM0hE,EAAa70E,EAAE,8DACf0F,EAAW,IAAIm8G,IAErBzhH,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,YAAY,WACvC,IAAM+gD,EAAU3nH,KAAKK,EAAE,sBAAsBigC,KAAK,oDAElDtgC,KAAK4hF,UAAY,IAAInC,MACrBz/E,KAAK4hF,UACF/nD,MAAK,kBAAM9zB,EAAS2wC,MAAM,IAC1BkpC,MAAK,kBAAM75E,EAAS66E,UAAU,EAAE,IAChCd,QAAO,kBAAM/5E,EAAS66E,SAAS,EAAE,IACjCZ,SAASj6E,EAASiJ,SAAS0gC,KAAK3pC,IAChCs6E,SAASt6E,EAAS4G,KAAK+iC,KAAK3pC,IAC5B46E,OAAOgnC,GAEVA,EAAQ9/E,MAAMqtC,EAChB,KAEAz0E,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,qBAAqB,SAAU3pB,GAAQ,IAC9D2qE,EACAC,EACA/C,EAH8D,OAK9DpC,EAAe,IAAIF,GAAkB,CACvClT,aAAc,WACZvpG,EAAS88E,SAASxiF,EAAEL,MAAM0E,SAASmB,QACrC,EACAy8C,QAAS,SAAC6+D,GACR,EAAKz2F,MAAMq8C,SAASC,OAAOtB,oBAAoBmiD,EAAkB,EAAG1G,EAAc,KAElFp7G,EAAS4G,MACX,IAsFFswC,EAAO6nB,eAAe5vD,MAnFW,WAC/B,IAAMkrB,EAAY,EAAK1V,MAAMq8C,SAASC,OAAO5B,oBAEvCzf,EAASvlB,EAAU,GAEzB,KAAIA,EAAU,GAAKulB,EAAS,GAA5B,CAKA,IAAMmiE,EAAY,EAAKp9F,MAAMq8C,SAASC,OAAO3B,cAAc,IAC3DwiD,EAAkB,EAElB,IADA,IAAIE,EAAe,KACV9gH,EAAI6gH,EAAUrjH,OAAS,EAAGwC,GAAK,EAAGA,IAAK,CAC9C,IAAM0Z,EAAYmnG,EAAUxoD,OAAOr4D,EAAG,GAGtC,IAFA8gH,EAAevuD,IAAAA,eAAAA,IAAuB74C,MAEX,IAAN1Z,GAAW,KAAK1C,KAAKujH,EAAUxoD,OAAOr4D,EAAI,EAAG,KAAM,CACtE2gH,EAAkB3gH,EAAI,EACtB4gH,EAAkBliE,EAASmiE,EAAUrjH,OAASwC,EAAI,EAClDy7G,EAAa55G,KAAKi/G,EAAanE,oBAC/B,KACF,CACF,CAKA,GAHA79G,EAAS4G,OACT5G,EAAS2wC,QAAS,EAEdmxE,EAAiB,OACblF,EAAQmF,EAAU3tG,UAAUytG,GAAiBphH,cAGnD,KAFAs+G,EAAaiD,EAAalD,eAAelC,IAExB,OAEjBD,EAAaC,MAAQmC,EAErB,IAAM7B,EAAmB,WAGvB,IAAMC,EAAcR,EAAaO,mBAEjC,GAAIC,EAAYz+G,OAAQ,CACtBsB,EAAS43D,MAAQulD,EACjBluG,EAAEmqC,OAAO+1B,EAAW,GAAInvE,EAASo5C,UAEjCp5C,EAAS2G,OACT,IAAMolD,EAAc,EAAKpnC,MAAMq8C,SAASC,OAAOzV,oBAAoBs2D,GAC7Dj5G,EAAQ7I,EAAS1F,IAAIshH,aACrBz/G,EAAS6D,EAAS1F,IAAIgxE,cACtB3sE,EAASqB,EAAS1F,IAAIy9C,eACxB9vC,EAAO8jD,EAAY9jD,KACnBxL,EAAMsvD,EAAYtvD,IAAM,GAGxBA,EAAMN,EAASwC,EAAOxC,WACxBM,EAAMsvD,EAAYtvD,IAAMN,EAAS,IAE/B8L,EAAOY,EAAQlK,EAAOkK,UACxBZ,EAAOtJ,EAAOkK,QAAUA,GAI1BpM,EAAMS,KAAKC,MAAMwB,EAAO5C,SAASU,IAAMnC,EAAEO,UAAUyB,aAAcG,GACjEwL,EAAO/K,KAAKC,KAAKwB,EAAO5C,SAASkM,KAAMA,GAEvCjI,EAAS2G,KAAKsB,EAAMxL,EACtB,MACEuD,EAAS2wC,QAAS,EAClB3wC,EAAS4G,MAEb,EAEA5G,EAAS2wC,QAAS,EAElBusE,IAEAl9G,EAAS88E,SAAS,GAClB98E,EAAS1F,IAAIgC,UAAU,GAEF,OAArB,EAAAqgH,EAAajhE,WAAb,EAAuBxqB,KAAKgsF,EAC9B,CA3EqC,CA4EvC,GAGF,KAEAxiH,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,gBAAgB,SAAUjJ,GAAO,WAC5DA,EAAM7kD,IACJ,UACA,EAAC,KAAgB,CAACwpC,QAAS,kBAAM,EAAK53B,MAAMq8C,SAASC,OAAO1B,eAAe,KAAK,EAAEpF,KAAK,aACpF1G,IAAAA,WAAAA,MAAqB,mDAG5B,ID5FAA,IAAAA,uBAAAA,cAA2C6pD,GAC3C7pD,IAAAA,uBAAAA,cAA2C+pD,GAC3C/pD,IAAAA,uBAAAA,eAA4CgqD,IAG5C/iH,EAAAA,EAAAA,QAAO4wF,IAAAA,UAA4B,qBAAqB,SAAU1zB,GAChEA,EAAM7kD,IAAI,gBAAiB,CACzBjG,KAAM,gBACNqtD,KAAM,eACNY,MAAOtH,IAAAA,WAAAA,MAAqB,gEAG9BmE,EAAM7kD,IAAI,gBAAiB,CACzBjG,KAAM,gBACNqtD,KAAM,YACNY,MAAOtH,IAAAA,WAAAA,MAAqB,gEAG9BmE,EAAM7kD,IAAI,iBAAkB,CAC1BjG,KAAM,iBACNqtD,KAAM,YACNY,MAAOtH,IAAAA,WAAAA,MAAqB,gEAEhC,KAGA/4D,EAAAA,EAAAA,QAAOwoF,KAAAA,UAAoB,YAAY,SAAUtrB,GAC/C,IAAM7Q,EAAO9sD,KAAK8sD,KAClB6Q,EAAM7kD,IACJ,WACA,EAAC,KAAU,CAACsX,KAAMopC,IAAAA,MAAU,gBAAiB,CAAEhe,SAAUsR,EAAKgS,SAAWjsD,KAAK,WAAWqtD,KAAK,aAC3F1G,IAAAA,WAAAA,MAAqB,6CAExB,GAEJ,IAGA0F,EAAAA,gBAAAA,gBAAAA,KAAqC,kBAGrCz+D,EAAAA,EAAAA,QAAO4mF,IAAAA,UAAgB,YAAY,WACjCrnF,KAAKK,EAAE,gDAAgDoB,MAAK,WAC1DzB,KAAKg+D,UAAUllD,IAAIqkE,IAAkB30C,iBAAiBxoC,MAAMipC,iBAAiB,YAC/E,GACF,GACF,IAQAxnB,OAAOs+B,OAAO0zD,GAAAA,OAAQuU;;;;;;;MMlGtB,IAAIxvD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAnB8D,OAAOC,KAAK/D,OAAO,gBAAxD,MCAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,ICGnCwU,EAAoB,8DAYtC,OAZsC,mBACvCtjF,KAAA,WACE,OACE,YAAQ7Y,UAAU,+BAA+Bw2B,QAAStiD,KAAK0qB,MAAM43B,SAClEtiD,KAAK0qB,MAAMgsB,QAAUwpB,IAAK,eAAgB,CAAEp0C,UAAW,gBACxD,UAAMA,UAAU,8BACbo0C,IAAKlgE,KAAK0qB,MAAMw1C,KAAM,CAAEp0C,UAAW,gBACpC,gBAAS9rB,KAAK0qB,MAAMo2C,OACpB,UAAMh1C,UAAU,oCAAoC9rB,KAAK0qB,MAAMiqD,cAIvE,EAAC,EAZsC,C,MAAStZ,ICO7B6sD,EAAgB,uFAuGlC,OAvGkC,EACnC3lE,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKQ,QAAU,CACb,CACE2nH,aAAc,KACdjoD,KAAM,cACNY,MAAOtH,IAAAA,WAAAA,MAAqB,gEAC5Bmb,YAAanb,IAAAA,WAAAA,MAAqB,+DAEpC,CACE2uD,aAAc,SACdjoD,KAAM,cACNY,MAAOtH,IAAAA,WAAAA,MAAqB,4DAC5Bmb,YAAanb,IAAAA,WAAAA,MAAqB,2DAEpC,CACE2uD,aAAc,SACdjoD,KAAM,mBACNY,MAAOtH,IAAAA,WAAAA,MAAqB,2DAC5Bmb,YAAanb,IAAAA,WAAAA,MAAqB,0DAGxC,EAAC,EAED70B,KAAA,WAAO,WACCu5B,EAAal+D,KAAK0qB,MAAMwzC,WACxBiqD,EAAejqD,EAAWiqD,eAE5BC,EAAc5uD,IAAAA,WAAAA,MAAqB,yDACnC6uD,EAAa,cACXC,EAAc,4BAA8BH,EAElD,OAAQA,GACN,IAAK,SACHC,EAAc5uD,IAAAA,WAAAA,MAAqB,4DACnC6uD,EAAa,cACb,MAEF,IAAK,SACHD,EAAc5uD,IAAAA,WAAAA,MAAqB,2DACnC6uD,EAAa,mBAOjB,IAAM52B,EAAcj4B,IAAAA,QAAAA,KAAAA,cACd+uD,EAAc92B,EAAkC,qBAChD+2B,EAAc/2B,EAAkC,qBAChD4iB,EAAch0C,IAClB7G,IAAAA,WAAAA,MACE+uD,EAAc,+DAAiE,iEAI7EE,GAAqBF,GAAeC,IAAiC,OAAjBL,EAEpD/kF,EACJ,EAAC,IAAM,CACLtX,UAAWkyC,IAAU,SAAU,0BAA2BsqD,GAC1DpoD,KAAMmoD,EACN/lE,QAAStiD,KAAK0oH,iBAAiBh5E,KAAK1vC,KAAMk+D,GAA4D,IAAhD,CAAC,SAAU,UAAUh9C,QAAQinG,GAAuB,KAAO,WAEhHC,GAIL,OACE,SAAKt8F,UAAU,yCACZ28F,EACC,EAAC,IAAO,CAACl4G,KAAM8jG,EAAa/xG,SAAS,UAClC8gC,GAGHA,EAGF,YAAQtX,UAAWkyC,IAAU,sCAAuCsqD,GAAc,cAAY,YAC3FpoD,IAAK,oBAAqB,CAAEp0C,UAAW,iBAG1C,QAAIA,UAAU,oDACX9rB,KAAKQ,QAAQoH,KAAI,SAAC8iB,GAAK,OACtB,YACE,EAACu9F,EAAoB,iBACfv9F,EAAK,CACT43B,QAAS,EAAKomE,iBAAiBh5E,KAAK,EAAMwuB,EAAYxzC,EAAMy9F,cAC5DzxE,OAAQyxE,IAAiBz9F,EAAMy9F,gBAE9B,KAKf,EAAC,EAEDO,iBAAA,SAAiBxqD,EAAYiqD,GAC3BjqD,EAAWgK,KAAK,CAAEigD,aAAAA,IAElBnoH,KAAKK,EAAE,4BAA4B+R,QAAQ,OAC7C,EAAC,EAvGkC,CAASjO,KCV9C,MAAM,EAA+BozG,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,ICGnCkV,EAAmB,uFAerC,OAfqC,EACtCzoD,KAAA,WACE,MAAO,aACT,EAAC,EAED9vC,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAC1BpgB,EAAaogB,EAAaC,UAC1BnoD,EAAUkoD,EAAaloD,WAAa,CAAC,EAE3C,OAAOojC,IAAAA,MAAAA,WAAqB0E,EAAY9nC,EAAQ6wD,WAClD,EAAC,EAED7wD,QAAA,WACE,OAAOojC,IAAAA,WAAAA,MAAqB,yDAA0D,CAAE1M,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YACxH,EAAC,EAfqC,C,MAASD,ICHjD,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,oB,aCIxD,UACE,IAAIgF,IAAAA,SACD3/F,IAAI,YAAa,aAAc00E,KAElC,IAAIirB,IAAAA,OAAah7B,KACdra,UAAU,iBCMf5J,IAAAA,aAAAA,IAAqB,iBAAiB,WACpCA,IAAAA,uBAAAA,QAAqCmvD,GCVrCloH,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAUtf,GAC/C,IAAIyqD,EAEJ,OAAQ5oH,KAAKmoH,gBACX,IAAK,SACHS,EAAQ,EAAC,IAAK,CAAC9nD,MAAOtH,IAAAA,WAAAA,MAAqB,sDAAuD0G,KAAK,cAAcl7D,KAAK,cAC1H,MAEF,IAAK,SACH4jH,EAAQ,EAAC,IAAK,CAAC9nD,MAAOtH,IAAAA,WAAAA,MAAqB,qDAAsD0G,KAAK,mBAAmBl7D,KAAK,aAI9H4jH,GACFzqD,EAAOrlD,IAAI,eAAgB8vG,EAE/B,KCbAnoH,EAAAA,EAAAA,QAAO0tE,IAAoB,gBAAgB,SAAUxQ,EAAOO,EAAYrqD,GACtE,GAAI2lD,IAAAA,QAAAA,QAAsB3lD,aAAmB63D,KAAiB,CAC5D,IAAMm9C,EAAS,CACbC,KAAM,CAAEhoD,MAAOtH,IAAAA,WAAAA,MAAqB,gEAAiE0G,KAAM,cAAegI,KAAM,UAChI6gD,OAAQ,CAAEjoD,MAAOtH,IAAAA,WAAAA,MAAqB,kEAAmE0G,KAAM,cAAegI,KAAM,MACpI8gD,OAAQ,CAAEloD,MAAOtH,IAAAA,WAAAA,MAAqB,kEAAmE0G,KAAM,aAAcgI,KAAM,OAG/HigD,EAAejqD,EAAWiqD,gBAAkB,OAElDxqD,EAAM7kD,IACJ,eACA,EAAC,IAAM,CAAConD,KAAM2oD,EAAOV,GAAcjoD,KAAM5d,QAAS4b,EAAWgK,KAAKx4B,KAAKwuB,EAAY,CAAEiqD,aAAcU,EAAOV,GAAcjgD,QACrH2gD,EAAOV,GAAcrnD,OAG5B,CACF,KAEArgE,EAAAA,EAAAA,QAAOirE,IAAAA,UAA0B,gBAAgB,SAAU/N,GACzD,GAAInE,IAAAA,QAAAA,KAAkB,CACpB,IAAM0E,EAAal+D,KAAKk+D,WAExBP,EAAM7kD,IAAI,eAAgB,EAACovG,EAAgB,CAAChqD,WAAYA,IAAgB,GAC1E,CACF,KC1BAz9D,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,SAAU7vB,GAChD,GAAInE,IAAAA,QAAAA,KAAkB,CACpB,IAAMvc,EAASuc,IAAAA,OAAAA,eAEfmE,EAAM7kD,IACJ,YACA,EAAC,IAAU,CAACsX,KAAMopC,IAAAA,MAAU,YAAavc,GAASijB,KAAK,eACpD1G,IAAAA,WAAAA,MAAqB,oDAExB,GAEJ,CACF,KAEA/4D,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,WACD,cAAjCh0B,IAAAA,QAAAA,IAAgB,cAClBA,IAAAA,SAAaA,IAAAA,WAAAA,MAAqB,wDAEtC,KAEA/4D,EAAAA,EAAAA,QAAOqvG,IAAAA,UAA6B,UAAU,SAAU7yD,GAGtDA,EAAOgsE,YAA+C,cAAjCzvD,IAAAA,QAAAA,IAAgB,YACvC,KAEA/4D,EAAAA,EAAAA,QAAO0vF,IAAAA,UAA+B,iBAAiB,SAAUlzC,GAC3Dj9C,KAAKi9C,OAAOgsE,cACdhsE,EAAOn2C,SAAPm2C,EAAOn2C,OAAW,CAAC,GAEfm2C,EAAOn2C,OAAOkqD,EAChB/T,EAAOn2C,OAAOkqD,GAAK,gBAEnB/T,EAAOn2C,OAAOqhH,aAAe,YAGnC,KCtCA1nH,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,sBAAsB,SAA8Bt0B,GAAO,aACxFA,EAAM7kD,IACJ,mBACA,EAAC,IAAM,CACLuf,MAAOr4B,KAAK8sD,KAAK2kC,cAAcy3B,iBAC/BnwD,SAAU,SAAChyD,GACT,EAAKoiH,yBAA0B,EAE/B,EAAKr8D,KAAK2lC,gBAAgB,CAAEy2B,iBAAkBniH,IAASkwB,MAAK,WAC1D,EAAKkyF,yBAA0B,EAC/Bn0G,EAAEwqC,QACJ,GACF,EACAkf,QAAS1+D,KAAKmpH,yBAEb3vD,IAAAA,WAAAA,MAAqB,kEAI1BmE,EAAM7kD,IACJ,oBACA,EAAC,IAAM,CACL6Q,GAAG,6CACH0O,QAAiC,OAAzB,EAACr4B,KAAK8sD,KAAM2kC,iBAAX,EAA2B,8CACpC14B,SAAU,SAAC74D,GACT,EAAK4sD,KAAM2lC,gBAAgB,CAAE,4CAA6CvyF,GAC5E,GAECs5D,IAAAA,WAAAA,MAAqB,mEAG5B,KJdA/4D,EAAAA,EAAAA,QAAO4wF,IAAAA,UAA4B,qBAAqB,SAAU1zB,GAChEA,EAAM7kD,IAAI,UAAW,CACnBjG,KAAM,UACNqtD,KAAM,cACNY,MAAOtH,IAAAA,WAAAA,MAAqB,8DAEhC,GACF,G;;;;;;;MK7BA,IAAIhB,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAzC,SAAS35C,IAYtB,OAXAA,EAAWr4C,OAAOs+B,OAASt+B,OAAOs+B,OAAOrQ,OAAS,SAAU/uC,GAC1D,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GACvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CACA,OAAOnM,CACT,EACOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CCbA,SAAS2+C,EAAkB1xD,EAAQiP,GACjC,IAAK,IAAI3I,EAAI,EAAGA,EAAI2I,EAAMnL,OAAQwC,IAAK,CACrC,IAAIqrD,EAAa1iD,EAAM3I,GACvBqrD,EAAW/uB,WAAa+uB,EAAW/uB,aAAc,EACjD+uB,EAAWn2B,cAAe,EACtB,UAAWm2B,IAAYA,EAAW7uB,UAAW,GACjDhiB,OAAOya,eAAev7B,EAAQ2xD,EAAWxlD,IAAKwlD,EAChD,CACF,CCRA,MAAM,EAA+BilD,OAAOC,KAAK/D,OAAO,oC,ICanC2V,EAAmB,YACtC,WAAYnsE,EAAW68B,GAG2B,YAHf,IAAZA,IAAAA,EAAe,GAGpC78B,EAAO68B,KAAO,KAAM78B,EAAO68B,MAAQ,CAAC,EAAC,CAAGsH,MAF1B,KAId,YAAMnkC,EAAQ68B,EAJA,KAIY,IAC5B,CFXa,IAAsBh2E,EAAayuD,EEe/C,OAXqC,OFJHzuD,EEWlC,GFX+CyuD,EEW/C,iBAED,WACE,MAAO,OACT,MFdgBF,EAAkBvuD,EAAYnE,UAAW4yD,GAEzD9wC,OAAOya,eAAep4B,EAAa,YAAa,CAC9C2/B,UAAU,IEWX,EAXqC,C,MAAwEsrD,ICbhH,MAAM,EAA+BwoB,OAAOC,KAAK/D,OAAO,sC,aCgBnC4V,EAAc,uFAsDhC,OAtDgC,EACjC9mE,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GAEbpiD,KAAKq4B,MAAQ,IAAI+wF,EAAoB,CACnCtiH,OAAQ,CACNwiH,MAAOtpH,KAAK0qB,MAAMy9C,KAAKx+C,QAI3B3pB,KAAKq4B,MAAMs2D,SACb,EAAC,EAED7iE,UAAA,WACE,MAAO,6BACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,sCAC9B,EAAC,EAEDpjC,QAAA,WAAU,WACR,OACE,WACE,SAAKtK,UAAU,cACZ9rB,KAAKq4B,MAAM63C,mBACV,EAAC,IAAgB,MAEjB,QAAIpkD,UAAU,uBACX9rB,KAAKq4B,MAAMm4C,WAAW5oE,KAAI,SAACkyE,GAAI,OAC9BA,EAAKnc,MAAM/1D,KAAI,SAACklD,GAAI,OAClB,YACE,EAAC,IAAI,CAAC18B,KAAMopC,IAAAA,MAAAA,KAAe1M,IACxB2R,IAAO3R,GAAK,IAAGtR,IAASsR,IAExB,GACL,MAKT9sD,KAAKq4B,MAAM+3C,UACV,SAAKtkD,UAAU,gBACb,SAAKA,UAAU,uBACb,SAAKA,UAAU,cACb,EAAC,IAAM,CAACA,UAAU,uBAAuBw2B,QAAS,kBAAM,EAAKjqB,MAAMg4C,UAAU,EAAE3R,QAAS1+D,KAAKq4B,MAAM83C,iBAChG3W,IAAAA,WAAAA,MAAqB,sDAK5B,KAGV,EAAC,EAtDgC,CAA0EqP,KChB7G,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uBCEF,IAEjC8V,EAAqB,uFAkBvC,OAlBuC,EACxCrpD,KAAA,WACE,MAAO,kBACT,EAAC,EAED9vC,KAAA,WACE,OAAOopC,IAAAA,MAAAA,KAAex5D,KAAK0qB,MAAM4zD,aAAaC,UAChD,EAAC,EAEDnoD,QAAA,WACE,IACM02B,EADe9sD,KAAK0qB,MAAM4zD,aACNwI,WAE1B,OAAOttB,IAAAA,WAAAA,MAAqB,mDAAoD,CAAE1M,KAAAA,EAAMr2C,MAAO,GACjG,EAAC,EAEDk5D,QAAA,WACE,OAAOn7C,EAAAA,EAAAA,UAASx0B,KAAK0qB,MAAM4zD,aAAaC,UAAU3O,eAAgB,IACpE,EAAC,EAlBuC,CAASiX,KCJnD,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,ICMnC+V,EAAa,8DAgB/B,OAhB+B,mBAOhC56B,YAAA,SAAY9sF,GACV,OAAO03D,IAAAA,MAAAA,KAAe,QAAS,CAC7B1yD,OAAQ,CACN9B,KAAM,UACNykH,QAASzpH,KAAK8sD,KAAKnjC,MAErBmwD,KAAM,CAAEh4E,OAAAA,EAAQs/E,MAAOphF,KAAKyuF,WAC5B/4E,KAAM,cAEV,EAAC,EAhB+B,C,MAAS64E,ICD3C,UACE,IAAIkqB,IAAAA,SACD3/F,IAAI,aAAc,qBAAsB0wG,GAE3C,IAAI/Q,IAAAA,OAAapxB,KACd3K,QAAc,SACdtZ,UAAkB,cAClBA,UAAmB,YCDxB5J,IAAAA,aAAAA,IAAqB,gBAAgB,WACnCA,IAAAA,uBAAAA,UAAuC+vD,GCNvC9oH,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAAUvuB,GACrD,IAAMwK,EAAOnoE,KAAK0qB,MAAMy9C,KAExB,IAAIA,EAAK8D,YAAe9D,EAAKuhD,UAA7B,CAEA,IAAMC,EAAQxhD,EAAKwhD,QAEfC,EAAUpwD,IAAAA,QAAAA,MAAoBmwD,GAASA,EAAMroE,MAAK,SAACwL,GAAI,OAAKA,IAAS0M,IAAAA,QAAAA,IAAgB,IAEzFmE,EAAM7kD,IACJ,OACA,EAAC,IAAM,CACLgT,UAAU,sBACVw2B,QAAS,WACPsnE,GAAWA,EAEXzhD,EAAKD,KAAK,CAAE0hD,QAAAA,IAKZ,IAAMjoH,EAAOwmE,EAAKxmE,KAAKsmE,cAAc0hD,MAAMhoH,KAC3CA,EAAK2/C,MAAK,SAACuoE,EAAM5iH,GACf,GAAI4iH,EAAKlgG,KAAO6vC,IAAAA,QAAAA,KAAAA,KAEd,OADA73D,EAAKoiB,OAAO9c,EAAG,IACR,CAEX,IAEI2iH,GACFjoH,EAAK0rB,QAAQ,CAAEroB,KAAM,QAAS2kB,GAAI6vC,IAAAA,QAAAA,KAAAA,MAEtC,GAECA,IAAAA,WAAAA,MAAqBowD,EAAU,sCAAwC,sCA/B9B,CAkChD,KC/BAnpH,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAAUvuB,GACrD,IAAMwK,EAAOnoE,KAAK0qB,MAAMy9C,KAClBwhD,EAAQxhD,EAAKwhD,QAEnB,GAAIA,GAASA,EAAMllH,OAAQ,CACzB,IACM0iH,EAAYh/C,EAAK2hD,aADT,EAKR1C,EAAQuC,EACXj0G,MAAK,SAAChM,GAAC,OAAMA,IAAM8vD,IAAAA,QAAAA,MAAoB,EAAI,CAAC,IAC5CjkD,MAAM,EAAG4xG,EAAY/lC,EAPV,GAQXx5E,KAAI,SAACklD,GACJ,OACE,EAAC,IAAI,CAAC18B,KAAMopC,IAAAA,MAAAA,KAAe1M,IACxBA,IAAS0M,IAAAA,QAAAA,KAAmBA,IAAAA,WAAAA,MAAqB,oCAAsChe,IAASsR,GAGvG,IAKF,GAAIq6D,EAAW,CACb,IAAM1wG,EAAQ0xD,EAAK2hD,aAAe1C,EAAM3iH,OAClCq8D,EAAQtH,IAAAA,WAAAA,MAAqB,sCAAuC,CAAE/iD,MAAAA,IAExE+iD,IAAAA,MAAAA,UAAoB,kBACtB4tD,EAAMlyG,KACJ,EAAC,IAAM,CACL4W,UAAU,uCACVw2B,QAAS,SAAC/+C,GACRA,EAAEmC,iBACF8zD,IAAAA,MAAAA,KAAe6vD,EAAgB,CAAElhD,KAAAA,GACnC,GAECrH,IAILsmD,EAAMlyG,KAAK,cAAO4rD,GAEtB,CAEAnD,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,gBACZo0C,IAAK,oBACL1G,IAAAA,WAAAA,MAAqB,oCAAmCmwD,EAAM,KAAOnwD,IAAAA,QAAAA,KAAmB,QAAU,IAAE,QAAS,CAC5G/iD,MAAO2wG,EAAM3iH,OACb6nG,MAAO+a,IAAgBD,MAI/B,CACF,KC5DA3mH,EAAAA,EAAAA,QAAOwoF,IAAAA,UAAoB,YAAY,SAAUtrB,GAC/C,IAAM7Q,EAAO9sD,KAAK8sD,KAClB6Q,EAAM7kD,IACJ,QACA,EAAC,IAAU,CAACsX,KAAMopC,IAAAA,MAAU,aAAc,CAAEhe,SAAc,MAAJsR,OAAI,EAAJA,EAAMgS,SAAWoB,KAAK,oBACzE1G,IAAAA,WAAAA,MAAqB,uCAExB,GAEJ,KHCA/4D,EAAAA,EAAAA,QAAO4wF,IAAAA,UAA4B,qBAAqB,SAAU1zB,GAChEA,EAAM7kD,IAAI,YAAa,CACrBjG,KAAM,YACNqtD,KAAM,mBACNY,MAAOtH,IAAAA,WAAAA,MAAqB,wDAEhC,GACF,G;;;;;;;2BIxBE,IAAIuwD,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,I,+BClFtC,SAAS+sD,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,IAGcA,EAAG7G,GCLb,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,G,gECFZ,SAASq3D,EAAYC,GAClC,OAAOA,EAAQ30G,MAAM,GAAGG,MAAK,SAAChM,EAAGE,GAC/B,IAAM6vG,EAAO/vG,EAAEpH,SACTo3G,EAAO9vG,EAAEtH,SACf,OAAOm3G,EAAOC,EAAO,EAAID,EAAOC,GAAQ,EAAI,KAJhD,mC,cCFAhiG,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,qB,8BCArB,SAAS35C,IAetB,OAdAA,EAAWr4C,OAAOs+B,QAAU,SAAUp/C,GACpC,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GAEvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,IAK3B,OAAOnM,IAGO8S,MAAMzT,KAAM0T,WAf9B,mC,cCAAgE,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,2B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,0ECEf0W,E,6BACZD,QAAoB,G,KAMpBrB,OAAc,G,KAEb57D,OAAc,G,2BAEtBn0C,IAAA,SAAIsxG,EAAgBpd,GAClBod,EAAOpd,UAAYA,EACnBod,EAAOzgG,GAAQqjF,EAAf,IAA4Bod,EAAOt9G,IACnC9M,KAAKkqH,QAAQh1G,KAAKk1G,GAClBpqH,KAAK6oH,OAAOuB,EAAOzgG,IAAM,I,EAG3B0gG,QAAA,SAAQ1gG,GACN,OAAO3pB,KAAKsqH,qBAAqBzpH,MAAK,SAACmY,GAAD,OAAeA,EAAE2Q,KAAOA,MAAO,M,EAGvE2gG,mBAAA,WAA+B,WACvBthG,EAAWhpB,KAAKitD,OAAOjkC,UAAY,GACnCkhG,GAAWlqH,KAAKitD,OAAOy2D,WAAa,IAAI97G,KAC5C,SAACwiH,GAAD,sBACM,EAAKF,QAAQrpH,MAAK,SAACmY,GAAD,OAAeA,EAAE2Q,KAAOygG,EAAOzgG,OAAO,GACzDygG,MAYP,OARApqH,KAAKkqH,QAAQvzG,SAAQ,SAACyzG,GACCF,EAAQrpH,MAAK,SAACmY,GAAD,OAAYA,EAAE2Q,KAAOygG,EAAOzgG,OAG5DugG,EAAQh1G,KAAKk1G,MAIVF,EAAQpjH,QAAO,SAACsjH,GAAD,OAAqBphG,EAASkxC,SAASkwD,EAAOzgG,Q,EAGtEpN,IAAA,SAAItT,EAAmBshH,GAAuC,WAa5D,YAb4D,IAAvCA,OAAsB,GACjBvqH,KAAKsqH,qBAC5BxjH,QAAO,SAACsjH,GAAD,OAAoBA,EAAOnhH,YAAcA,KAChDnC,QAAO,SAACsjH,GAAD,OAAoBG,IAA4C,mBAAtBH,EAAOj/F,YAA6Bi/F,EAAOj/F,cAAgBi/F,EAAOj/F,eACnHrkB,QAAO,SAACsjH,GAKP,OAFkBA,EAAOpd,WAAaod,EAAOzgG,GAAI5d,MAAM,KAAK,MAExCwrG,OAAOjK,cAE5B1lG,KAAI,SAACwiH,GAAD,sBAA0BA,EAA1B,CAAkCpd,UAAWod,EAAOpd,WAAaod,EAAOzgG,GAAI5d,MAAM,KAAK,GAAIssB,MAAO,EAAKwwF,OAAOuB,EAAOzgG,U,EAK9H6gG,UAAA,SAAUv9D,GACRjtD,KAAKitD,OAASA,G,oBC7DlBv1C,EAAOC,QAAU4/F,OAAOC,M,iCCgBHiT,E,6BACXP,QAAoB,G,2BAE5BpxG,IAAA,SAAIsxG,GAGF,OAFApqH,KAAKkqH,QAAQh1G,KAAKk1G,GAEXpqH,M,EAGTS,OAAA,SAAO+4D,EAAkBwzC,GACvBhtG,KAAKkqH,QAAQtiH,KAAI,SAACwiH,GAChB5wD,EAAI0wD,QAAQpxG,IAAIsxG,EAAQpd,O,4DClBT0d,E,0GACnB/lF,KAAA,WACE,OACE,SAAK7Y,UAAWkyC,IAAU,CAAC,sBAAuBh+D,KAAK8rB,eACpD9rB,KAAK2qH,SACN,SAAK7+F,UAAU,+BAA+B9rB,KAAKo2B,a,EAKzDu0F,OAAA,WACE,IAAMhnD,EAAW3jE,KAAKkgE,OAChB/2D,EAAQnJ,KAAKmJ,QAEnB,OAAOA,EACL,SAAK2iB,UAAU,6BACZ63C,EAAW,UAAM73C,UAAU,kCAAkCo0C,IAAKyD,IAAoB,KACvF,UAAM73C,UAAU,mCAAmC3iB,GACnD,SAAK2iB,UAAU,kCAAkC9rB,KAAK20E,gBAEtD,M,EAGN7oD,UAAA,WACE,MAAO,I,EAGT3iB,MAAA,WACE,MAAO,I,EAGTwrE,YAAA,WACE,MAAO,I,EAGTzU,KAAA,WACE,MAAO,I,EAGT9pC,QAAA,WACE,MAAO,I,GAxCgDilC,KCN5C,KACb,4DAA6DovD,EAC7D,+DAAgEC,I,cCLlEhzG,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,kB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,+B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,wGCKfmX,E,kGACnBjmF,KAAA,WACE,OACE,SAAK7Y,UAAU,sDACZm+F,YAAYzwD,IAAI0wD,QAAQ3tG,IAAI,QAAQ3U,KAAI,SAACwiH,GAAD,OAAYA,EAAO1qE,UAAUA,UAAU,CAAErnB,MAAO+xF,EAAO/xF,a,GAJ1DgjC,KCAzBwvD,E,kGACnBlmF,KAAA,WACE,MAAmC,UAA/B60B,IAAInf,QAAQ14C,KAAKq6D,UACZ,KAIP,SAAKlwC,UAAU,oDACZm+F,YAAYzwD,IAAI0wD,QAAQ3tG,IAAI,cAAc3U,KAAI,SAACwiH,GAAD,OAAYA,EAAO1qE,UAAUA,UAAU,CAAErnB,MAAO+xF,EAAO/xF,a,GAR3DgjC,KCA9ByvD,E,kGACnBnmF,KAAA,WACE,MAAmC,UAA/B60B,IAAInf,QAAQ14C,KAAKq6D,UACZ,KAIP,SAAKlwC,UAAU,uDACZm+F,YAAYzwD,IAAI0wD,QAAQ3tG,IAAI,iBAAiB3U,KAAI,SAACwiH,GAAD,OAAYA,EAAO1qE,UAAUA,UAAU,CAAErnB,MAAO+xF,EAAO/xF,a,GAR3DgjC,K,iCCEjC0vD,E,oJACnBC,e,gDAEAzoE,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAKgrH,UAAY59D,KAAO,I,EAG1BzoB,KAAA,WAAyB,WACjBsmF,EAAgB,CAAC,QAAS,UAAU/wD,SAASV,IAAIo0C,UAEvD,OACE,SACE9hF,UAAWkyC,IAAU,CACnB,4DAA4D,EAC5D,wCAAyCitD,GAAiBjrH,KAAKgrH,cAEjEt4C,SAAU,SAACnvE,GACL0nH,IACF,EAAKD,WAAU,GAEXznH,EAAE5C,OAAO2N,YAAc/K,EAAE5C,OAAO+sC,YAAcnqC,EAAE5C,OAAOuqH,aACzD,EAAKF,WAAU,MAKpBf,YAAYzwD,IAAI0wD,QAAQ3tG,IAAI,QAAQ3U,KAAI,SAACwiH,GAAD,OAAYA,EAAO1qE,UAAUA,UAAU,CAAErnB,MAAO+xF,EAAO/xF,a,GA5B1DgjC,KCFzB8vD,E,kGACnBxmF,KAAA,WACE,OACE,SAAK7Y,UAAU,+DACZm+F,YAAYzwD,IAAI0wD,QAAQ3tG,IAAI,WAAW3U,KAAI,SAACwiH,GAAD,OAAYA,EAAO1qE,UAAUA,UAAU,CAAErnB,MAAO+xF,EAAO/xF,a,GAJ1DgjC,K,OCElC55C,SAAOs+B,OAAO0zD,IAAQ,CACnC,wEAAyEmX,EACzE,6EAA8EC,EAC9E,gFAAiFC,EACjF,wEAAyEC,I,OCC3EvxD,IAAI0wD,QAAU,IAAIC,IAElB3wD,IAAI4yC,aAAatzF,IAAI,4BAA4B,WAC/C0gD,IAAI0wD,QAAQM,UAAUhxD,IAAI73D,KAAKyrG,UAAU,GAAGllG,WAAW,oCAEvDzH,iBAAO+sF,IAAU7tF,UAAW,QAAQ,SAAUyiD,GAC5CA,EAAM9sB,SAAS,GAAGA,SAAS,GAAGA,SAASpgB,KAAK,EAAC,EAAD,OAC5CktC,EAAM9sB,SAAS,GAAGA,SAAlB,CAA8B,EAAC,EAAD,OAA9B,OAAuD8sB,EAAM9sB,SAAS,GAAGA,SAAzE,CAAmF,EAAC,EAAD,WAGrF70B,iBAAO+sF,IAAU7tF,UAAW,gBAAgB,SAACg+D,GAC3CA,EAAM7kD,IAAI,wBAAyB,EAAC,EAAD,MAA2B,KAC9D6kD,EAAM7kD,IAAI,2BAA4B,EAAC,EAAD,OAA+B,WASzE2I,OAAOs+B,OAAO0zD,SAAQ2X;;;;;;;MChCtB,IAAI5yD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,gPCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAzC,SAAS35C,IAYtB,OAXAA,EAAWr4C,OAAOs+B,OAASt+B,OAAOs+B,OAAOrQ,OAAS,SAAU/uC,GAC1D,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GACvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CACA,OAAOnM,CACT,EACOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CCbe,SAASmkD,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCInC4X,EAAa,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAA73G,MAAA,KAAAC,YAAA,KAS/B,OAT+BmmD,EAAAwxD,EAAAC,GAAAD,EAAA1rH,UAEhCwvE,UAAA,WACE,IAAMxR,EAAQ,IAAIlB,KACZ3P,EAAO9sD,KAAK0qB,MAAMoiC,KAIxB,OAFA6Q,EAAM7kD,IAAI,SAAU0gD,IAAIiH,WAAWC,MAAM,mCAAoC,CAAEsB,IAAK5B,IAAUtT,EAAKy8B,eAE5F5rB,CACT,EAAC0tD,CAAA,CAT+B,CAASniC,KCJ3C,MAAM,EAA+BquB,OAAOC,KAAK/D,OAAO,uB,aCMnC8X,EAAqB,SAAAD,GAAA,SAAAC,IAAA,OAAAD,EAAA73G,MAAA,KAAAC,YAAA,KAuCvC,OAvCuCmmD,EAAA0xD,EAAAD,GAAAC,EAAA5rH,UAMxCwvE,UAAA,WACE,IAAMxR,EAAK2tD,EAAA3rH,UAASwvE,UAASpvE,KAAC,MACxB+sD,EAAO9sD,KAAK0qB,MAAMoiC,KA8BxB,OA5BI6Q,EAAMjoC,IAAI,aAAaioC,EAAMf,YAAY,WAAY,KACrDe,EAAMjoC,IAAI,WAAWioC,EAAMf,YAAY,SAAU,IACjDe,EAAMjoC,IAAI,WAAWioC,EAAMf,YAAY,SAAU,IACjDe,EAAMjoC,IAAI,sBAAsBioC,EAAMf,YAAY,oBAAqB,IACvEe,EAAMjoC,IAAI,mBAAmBioC,EAAMf,YAAY,iBAAkB,IAErEe,EAAM7kD,IACJ,mBACA9D,EAAA,OAAK8W,UAAU,YACZo0C,IAAK,kBACL1G,IAAAA,WAAekH,MAAM,0DAA2D,CAC/EjqD,MAAOq2C,EAAK48B,qBAGhB,IAGF/rB,EAAM7kD,IACJ,gBACA9D,EAAA,OAAK8W,UAAU,YACZo0C,IAAK,mBACL1G,IAAAA,WAAekH,MAAM,oDAAqD,CACzEjqD,MAAOq2C,EAAK8wB,kBAGhB,IAGKjgB,CACT,EAAC4tD,CAAA,CAvCuC,CAASriC,KCD9BsiC,EAAqB,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAh4G,MAAA,KAAAC,YAAA,KAWvC,OAXuCmmD,EAAA2xD,EAAAC,GAAAD,EAAA7rH,UACxCglC,KAAA,SAAKyd,GACH,IAAAspE,EAAgC1rH,KAAK0qB,MAA7BoiC,EAAI4+D,EAAJ5+D,KAAM6+D,EAAaD,EAAbC,cAERzjH,EAAa,CACjB4kD,KAAAA,EACAhhC,UAAW,uBAAsB6/F,EAAgB,mBAAqB,IACtEviC,wBAAyB,oCAG3B,OAAOp0E,EAAA,OAAK8W,UAAU,QAAQ6/F,EAAgBN,EAAc3rE,UAAUx3C,GAAcqjH,EAAsB7rE,UAAUx3C,GACtH,EAACsjH,CAAA,CAXuC,CAASnwD,KCK9BuwD,EAAiB,SAAAH,GAAA,SAAAG,IAAA,OAAAH,EAAAh4G,MAAA,KAAAC,YAAA,KA6CnC,OA7CmCmmD,EAAA+xD,EAAAH,GAAAG,EAAAjsH,UACpCglC,KAAA,WACE,IAII+5B,EAJIrmC,EAAUr4B,KAAK0qB,MAAf2N,MAEF4kB,EAAS5kB,EAAM23C,YACf27C,EAAgBnyD,IAAAA,MAAU4J,UAAU,2BAe1C,GAZI/qC,EAAM43C,YACRvR,EAAUgE,IAAAA,YACDrqC,EAAMm2D,cACf9vB,EAAU+E,IAAAA,UACR,CACE33C,UAAW,SACXw2B,QAASjqB,EAAMq2D,SAASh/C,KAAKrX,IAE/BmhC,IAAAA,WAAekH,MAAM,oDAIrBroC,EAAMN,QAAS,CACjB,IAAMxnB,EAAOipD,IAAAA,WAAekH,MAAM,4CAClC,OAAO1rD,EAAA,OAAK8W,UAAU,kBAAkBgkD,IAAAA,UAAsB,CAAEv/D,KAAAA,IAClE,CAEA,OACEyE,EAAA,OACE8W,UACE,qBACCuM,EAAMk4C,kBAAoB,oCAAsC,KAChEo7C,EAAgB,kCAAoC,KAGvD32G,EAAA,MAAI8W,UAAU,2BACXuM,EAAMi0E,MAAM1kG,KAAI,SAACklD,GAChB,OACE93C,EAAA,MAAIlI,IAAKggD,EAAKnjC,KAAM,UAASmjC,EAAKnjC,MAC/B6hG,EAAsB9rE,UAAU,CAAEoN,KAAAA,EAAM7P,OAAAA,EAAQ0uE,cAAAA,IAGvD,KAEF32G,EAAA,OAAK8W,UAAU,8BAA8B4yC,GAGnD,EAACktD,CAAA,CA7CmC,CAASvwD,KCN1BwwD,EAAO,oBAAAA,IAAA,CAUzB,OAVyBA,EAAAlsH,UAC1BwuF,QAAA,WACE,MAAO,CACL29B,YAAa,WACbC,YAAa,YACbr7B,OAAQ,YACRC,OAAQ,WACRq7B,iBAAkB,mBAClBC,kBAAmB,kBAEvB,EAACJ,CAAA,CAVyB,GCCPK,EAAkB,WACrC,SAAAA,EAAYjvE,EAAauc,QAAP,IAANvc,IAAAA,EAAS,CAAC,QAAM,IAAHuc,IAAAA,EAAMz3D,OAAOy3D,KACpCx5D,KAAKi9C,OAASA,EAEdj9C,KAAKw5D,IAAMA,EAEXx5D,KAAKssG,MAAQ,GAEbtsG,KAAKwuF,aAAc,EAEnBxuF,KAAK0+D,SAAU,EAEf1+D,KAAKmsH,SAAW,CAAC,CACnB,CAAC,IAAAC,EAAAF,EAAAvsH,UAiHA,OAjHAysH,EAEDriD,cAAA,WACE,IAAM9sB,EAAS,CAAEokC,QAAS,GAAIv6E,OAAQ,CAAC,GAEjCulH,EAAUrsH,KAAKi9C,OAAOvnC,MAAQ8jD,IAAI2J,MAAMC,UAAU,4BASxD,OANAnmB,EAAOvnC,KAAO1V,KAAKmuF,UAAUk+B,GAEzBrsH,KAAKi9C,OAAO+T,IACd/T,EAAOn2C,OAAOkqD,EAAIhxD,KAAKi9C,OAAO+T,GAGzB/T,CACT,EAACmvE,EAEDj+B,QAAA,WACE,OAAAr0B,EAAA,CACEwyD,QAAS,KACN,IAAIT,GAAU19B,UAErB,EAACi+B,EAEDp8C,UAAA,WACE,OAAOhwE,KAAKi9C,MACd,EAACmvE,EAEDn4G,MAAA,WACEjU,KAAKssG,MAAQ,GACbt3F,EAAEwqC,QACJ,EAAC4sE,EAEDz8B,cAAA,SAAcC,GAAW,IAAAqX,EAAA,KAClBjnG,KAAKusH,aAAc9qG,OAAOvB,KAAK0vE,GAAWtuC,MAAK,SAACx0C,GAAG,OAAKm6F,EAAKj3B,YAAYljE,KAAS8iF,EAAU9iF,EAAI,MAEnG9M,KAAKi9C,OAAS2yC,EAEVA,EAAUu8B,WACZ1qG,OAAOs+B,OAAO//C,KAAKmsH,SAAUv8B,EAAUu8B,UAAY,CAAC,GACpDnsH,KAAKi9C,OAAO+T,EAAIvvC,OAAOmd,OAAO5+B,KAAKmsH,UAAU/zG,KAAK,KAAK0mC,QAGpD9+C,KAAKi9C,OAAO+T,EAIjBhxD,KAAK2uF,UAET,EAACy9B,EAEDz9B,QAAA,WAAU,IAAA69B,EAAA,KAKR,OAJAxsH,KAAK0+D,SAAU,EAEf1+D,KAAKiU,QAEEjU,KAAK4uF,cAAc33D,MACxB,SAACpS,GACC2nG,EAAKlgB,MAAQ,GACbkgB,EAAK39B,aAAahqE,EACpB,IACA,WACE2nG,EAAK9tD,SAAU,EACf1pD,EAAEwqC,QACJ,GAEJ,EAAC4sE,EAEDx9B,YAAA,SAAY9sF,GACV,IAAM2qH,EAAiBzsH,KAAKw5D,IAAIk0C,uBAEhC,GAAI+e,EACF,OAAO9sE,QAAQhpB,QAAQ81F,GAGzB,IAAMxvE,EAASj9C,KAAK+pE,gBAIpB,OAHA9sB,EAAO68B,KAAO,CAAEh4E,OAAAA,GAChBm7C,EAAOokC,QAAUpkC,EAAOokC,QAAQjpE,KAAK,KAE9BpY,KAAKw5D,IAAImiB,MAAM96E,KAAK,QAASo8C,EACtC,EAACmvE,EAED19B,SAAA,WACE1uF,KAAK0+D,SAAU,EAEf1+D,KAAK4uF,YAAY5uF,KAAKssG,MAAM7nG,QAAQwyB,KAAKj3B,KAAK6uF,aAAan/C,KAAK1vC,MAClE,EAACosH,EAEDv9B,aAAA,SAAahqE,GAAS,IAAA6nG,EAQpB,OAPAA,EAAA1sH,KAAKssG,OAAMp3F,KAAIzB,MAAAi5G,EAAI7nG,GAEnB7kB,KAAK0+D,SAAU,EACf1+D,KAAKwuF,cAAgB3pE,EAAQg9B,QAAQ2tC,SAAW3qE,EAAQg9B,QAAQ2tC,MAAMtmE,KAEtElU,EAAEwqC,SAEK36B,CACT,EAACunG,EAEDG,SAAA,WACE,OAAOvsH,KAAKssG,MAAM7nG,OAAS,CAC7B,EAAC2nH,EAEDn8C,UAAA,WACE,OAAOjwE,KAAK0+D,OACd,EAAC0tD,EAED77C,gBAAA,WACE,QAASvwE,KAAKi9C,OAAO+T,CACvB,EAACo7D,EAEDr0F,MAAA,WACE,OAAQ/3B,KAAKusH,aAAevsH,KAAKiwE,WACnC,EAACi8C,CAAA,CA9HoC,GCFlBS,EAAe,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAn5G,MAAA,KAAAC,YAAA,KAajC,OAbiCmmD,EAAA8yD,EAAAC,GAAAD,EAAAhtH,UAOlCkiE,iBAAA,SAAiBvsC,GACf,IAAME,EAAIo3F,EAAAjtH,UAASkiE,iBAAgB9hE,KAAC,KAAAu1B,GAIpC,OAFIt1B,KAAK0qB,MAAM4F,SAASkF,EAAKtgB,KAAKgrD,IAAK,eAAgB,CAAEp0C,UAAW,6BAE7D0J,CACT,EAACm3F,CAAA,CAbiC,CAASlpD,KCH7C,MAAM,EAA+B8zC,OAAOC,KAAK/D,OAAO,yB,cCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,oC,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,kB,eCGnCoZ,GAAY,WAC/B,SAAAA,IACE7sH,KAAKkjH,YAAc,GACnBljH,KAAK0+D,SAAU,CACjB,CAEA,IAAA0tD,EAAAS,EAAAltH,UAuDC,OAvDDysH,EAIAU,aAAA,WACE,EAGFV,EAMA3qE,OAAA,SAAO6B,GACL,EAGF8oE,EAMAW,WAAA,SAAWC,GACT,EAGFZ,EAMAa,YAAA,SAAYD,GACV,EAGFZ,EAKAc,YAAA,SAAYjwE,EAAQ+vE,GAClB,EAGFZ,EAMAe,qBAAA,SAAqBlwE,GACnB,EACD4vE,CAAA,CA7D8B,GCEZO,GAAU,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAA55G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAuzD,EAAAC,GAAA,IAAAjB,EAAAgB,EAAAztH,UAmD5B,OAnD4BysH,EAC7BU,aAAA,WACE,MAAO,yBACT,EAACV,EAED3qE,OAAA,SAAO6B,GAMLtjD,KAAKkjH,YALA5/D,EAKc,CACjBkW,IAAAA,MAAU4vC,aAAa,0BAA2B,CAChDlhG,WAAY,CACVqI,KAAM+yC,MAPS,EAWvB,EAAC8oE,EAEDW,WAAA,WACE,OAAOvzD,IAAAA,WAAekH,MAAM,6CAC9B,EAAC0rD,EAEDa,YAAA,SAAYD,GACV,OAAOh4G,EAAE,4BAA6Bg4G,EAASz8G,OACjD,EAAC67G,EAEDc,YAAA,SAAYjwE,EAAQ+vE,GAClB/vE,EAAO+T,EAAI/T,EAAO+T,EAAI/T,EAAO+T,EAAI,IAAM,GACvC/T,EAAO+T,GAAKg8D,EAASz8G,MACvB,EAAC67G,EAEDe,qBAAA,SAAqBlwE,GACnB,OAAKA,EAAO+T,EAILrR,QAAQhpB,QACbsmB,EAAO+T,EACJjlD,MAAM,KAENjF,QAAO,SAACwmH,GAAI,OAA4B,IAAvBA,EAAKpsG,QAAQ,IAAW,IACzCtZ,KAAI,SAAC0lH,GAAI,OACR9zD,IAAAA,MAAU4vC,aAAa,0BAA2B,CAChDlhG,WAAY,CACVqI,KAAM+8G,IAER,KAbC3tE,QAAQhpB,QAAQ,GAgB3B,EAACy2F,CAAA,CAnD4B,CAASP,ICLxC,MAAM,GAA+BtV,OAAOC,KAAK/D,OAAO,uB,eCOnC8Z,GAAW,SAAAF,GAAA,SAAAE,IAAA,OAAAF,EAAA55G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA0zD,EAAAF,GAAA,IAAAjB,EAAAmB,EAAA5tH,UAuE7B,OAvE6BysH,EAC9BU,aAAA,WACE,MAAO,QACT,EAACV,EAED3qE,OAAA,SAAO6B,GAAO,IAAA2jD,EAAA,KACZjnG,KAAKkjH,YAAc,GAEd5/D,IAILA,EAAQA,EAAM98C,cAEdgzD,IAAAA,MAAUvU,IAAI,UAAUtuC,SAAQ,SAAC8nE,GAE3BA,EAAM90D,OAASm+D,KAAAA,YAIwC,IAAvDrJ,EAAMoJ,eAAerhF,cAAc0a,QAAQoiC,KAAsE,IAArDm7B,EAAMsJ,aAAavhF,cAAc0a,QAAQoiC,IACvG2jD,EAAKic,YAAYhuG,KAAKupE,GAE1B,IACF,EAAC2tC,EAEDW,WAAA,WACE,OAAOvzD,IAAAA,WAAekH,MAAM,8CAC9B,EAAC0rD,EAEDa,YAAA,SAAYxuC,GACV,OAAOzpE,EACL,4BACAypE,EAAMpnE,QACF,CACEyU,UAAW,UACX/Y,MAAO,CACLi/C,gBAAiBysB,EAAMpnE,UAG3B,CAAC,EACL,CAAConE,EAAMve,OAAS,CAACA,IAAKue,EAAMve,QAAS,KAAO,KAAMue,EAAMsJ,cAE5D,EAACqkC,EAEDc,YAAA,SAAYjwE,EAAQwhC,GAClBxhC,EAAO+T,EAAI/T,EAAO+T,EAAI/T,EAAO+T,EAAI,IAAM,GACvC/T,EAAO+T,GAAK,SAAWytB,EAAM90D,IAC/B,EAACyiG,EAEDe,qBAAA,SAAqBlwE,GACnB,IAAKA,EAAO+T,EACV,OAAOrR,QAAQhpB,QAAQ,IAGzB,IAAM62F,EAAoB,IAAMvwE,EAAO+T,EAAI,IAErCznC,EAAS,GAETkkG,EAAcD,EAAkBzhH,MAAM,KAAKjF,QAAO,SAACkqD,GAAC,OAAKA,EAAEwzC,WAAW,SAAS,IAWrF,OATAhrC,IAAAA,MAAUvU,IAAI,UAAUtuC,SAAQ,SAAC8nE,GAC/BgvC,EAAY92G,SAAQ,SAAC+2G,GACFA,EAAW/pH,QAAQ,SAAU,IAAIoI,MAAM,KAC3CmuD,SAASukB,EAAM90D,OAC1BJ,EAAOrU,KAAKupE,EAEhB,GACF,IAEO9+B,QAAQhpB,QAAQpN,EACzB,EAACgkG,CAAA,CAvE6B,CAASV,ICEpBc,GAAW,SAAAlC,GAAA,SAAAkC,IAAA,OAAAlC,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA8zD,EAAAlC,GAAA,IAAAW,EAAAuB,EAAAhuH,UA0M7B,OA1M6BysH,EAC9B7pE,OAAA,SAAOH,GAAO,IAAA6kD,EAAA,KACZwkB,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK4tH,YAAc,EACnB5tH,KAAK4hF,UAAY,IAAInC,MACrBz/E,KAAK4hF,UACF/nD,MAAK,SAAC5mB,GAGL,MAAqB,QAAdA,EAAMnG,OAAmBm6F,EAAKngG,MACvC,IACC84E,MAAK,WACAqnB,EAAK2mB,YAAc,IACrB3mB,EAAK2mB,cACL54G,EAAEwqC,SAEN,IACCsgC,QAAO,WACFmnB,EAAK2mB,YAAc3mB,EAAK4mB,iBAAiBppH,OAAS,IACpDwiG,EAAK2mB,cACL54G,EAAEwqC,SAEN,IACCwgC,UAAS,WACJinB,EAAKngG,QACPmgG,EAAKhkB,aAAagkB,EAAK4mB,iBAAiB5mB,EAAK2mB,cAC7C54G,EAAEwqC,UAEFynD,EAAK6mB,gBAET,IACCvtC,UAAS,WACR0mB,EAAK8mB,eAAen4G,KACtB,IAEF5V,KAAKguH,iBAAmBhuH,KAAKiuH,cAAchrG,UAC3CjjB,KAAK+tH,eAAiB,GAEtB/tH,KAAK8G,OAAS,GACd9G,KAAKsiF,SAAU,EAGftiF,KAAKguH,iBAAiBr3G,SAAQ,SAAC7P,GAC7BA,EACGqmH,qBAAqB,CACpBz3G,KAAMV,EAAEwrC,MAAM3L,MAAM,QACpBmc,EAAGh8C,EAAEwrC,MAAM3L,MAAM,OAElB5d,MAAK,SAACm2E,GAAc,IAAA8gB,GACnBA,EAAAjnB,EAAK8mB,gBAAe74G,KAAIzB,MAAAy6G,EAAI9gB,GAC5Bp4F,EAAEwqC,QACJ,GACJ,GACF,EAAC4sE,EAEDznF,KAAA,WAAO,IAAA6nF,EAAA,KACCtJ,EAAcljH,KAAK6tH,iBAEnBnvD,EAAU1+D,KAAKguH,iBAAiB1sE,MAAK,SAACx6C,GAAM,OAAKA,EAAO43D,OAAO,IAErE,OACE1pD,EAAA,OAAK8W,UAAU,4BACb9W,EAAA,SAAO8W,UAAS,yCAA0C9rB,KAAKsiF,QAAU,QAAU,KACjFttE,EAAA,QAAM8W,UAAU,qCACb9rB,KAAK+tH,eAAenmH,KAAI,SAACumH,EAAWtoH,GAAK,OACxCmP,EAAA,QACE8W,UAAU,kCACVw2B,QAAS,WACPkqE,EAAKuB,eAAehqG,OAAOle,EAAO,GAClC2mH,EAAKsB,gBACP,EACA3kH,MAAOqjH,EAAK4B,iBAAiBD,IAE5B3B,EAAK6B,eAAeF,GAChB,KAGXn5G,EAAA,SACE8W,UAAU,cACV84C,YAAapL,IAAAA,WAAekH,MAAM,qDAClC35D,MAAO/G,KAAK8G,OACZmyD,QAASg4B,KAAS,SAAS,SAAClqF,GAC1BylH,EAAK1lH,OAASC,EACdylH,EAAK8B,kBACP,IACA/gC,UAAWvtF,KAAK4hF,UAAUhB,SAASlxC,KAAK1vC,KAAK4hF,WAC7CY,QAAS,WACPgqC,EAAKlqC,SAAU,CACjB,EACAG,OAAQ,WACN+pC,EAAKlqC,SAAU,CACjB,IAED5jB,GAAW1pD,EAAC0tD,IAAgB,QAC1BwgD,EAAYz+G,QACbuQ,EAAA,MAAI8W,UAAU,iBACXo3F,EAAYt7G,KAAI,SAAC6mB,EAAQ5oB,GAAK,OAC7BmP,EAAA,MACE8W,UAAW0gG,EAAKoB,cAAgB/nH,EAAQ,SAAW,GACnDy8C,QAAS,WACPkqE,EAAKvpC,aAAax0D,GAClB+9F,EAAKsB,gBACP,GAEA94G,EAAA,UAAQhQ,KAAK,UACXgQ,EAAA,QAAM8W,UAAU,2BAA2B0gG,EAAK4B,iBAAiB3/F,IAChE+9F,EAAK6B,eAAe5/F,IAEpB,MAOnB,EAAC29F,EAED6B,YAAA,WACE,IAAMtwD,EAAQ,IAAIlB,MAKlB,OAHAkB,EAAM7kD,IAAI,OAAQ,IAAIs0G,GAAc,IACpCzvD,EAAM7kD,IAAI,QAAS,IAAIy0G,GAAe,IAE/B5vD,CACT,EAACyuD,EAEDmC,kBAAA,SAAkBvB,GAChB,OAAOhtH,KAAKguH,iBAAiBntH,MAAK,SAACgU,GAAC,OAAKA,EAAEi4G,iBAAmBE,EAASrrH,KAAKqD,IAAI,GAClF,EAAConH,EAEDiC,eAAA,SAAerB,GACb,IAAMlmH,EAAS9G,KAAKuuH,kBAAkBvB,GAEtC,OAAIlmH,EACKA,EAAOmmH,YAAYD,GAGrB,WACT,EAACZ,EAEDgC,iBAAA,SAAiBpB,GACf,IAAMlmH,EAAS9G,KAAKuuH,kBAAkBvB,GAEtC,OAAIlmH,EACKA,EAAOimH,WAAWC,GAGpB,WACT,EAACZ,EAEDnpC,aAAA,SAAax0D,GACNA,IAILzuB,KAAK+tH,eAAe74G,KAAKuZ,GACzBzuB,KAAKwuH,mBACP,EAACpC,EAEDoC,iBAAA,WACExuH,KAAK8G,OAAS,GACd9G,KAAKguH,iBAAiBr3G,SAAQ,SAAC7P,GAC7BA,EAAO26C,OAAO,GAChB,GACF,EAAC2qE,EAEDyB,eAAA,WAAiB,IAAA91B,EACf,OAAOA,EAAA,IAAG53F,OAAMsT,MAAAskF,EAAI/3F,KAAKguH,iBAAiBpmH,KAAI,SAACd,GAAM,OAAKA,EAAOo8G,WAAW,IAC9E,EAACkJ,EAEDkC,iBAAA,WAAmB,IAAAG,EAAA,KACjBzuH,KAAK4tH,YAAc,EAEnB5tH,KAAKguH,iBAAiBr3G,SAAQ,SAAC7P,GAC7BA,EAAO26C,OAAOgtE,EAAK3nH,OACrB,IAEA9G,KAAK0qB,MAAM2N,MAAMs3D,cAAa71B,EAAC,CAAC,EAAI95D,KAAK0qB,MAAM2N,MAAM23C,YAAa,CAAAm8C,SAAUnsH,KAAKmsH,aACnF,EAACC,EAEDD,SAAA,SAASlvE,GAAa,IAAAyxE,EAAA,KAUpB,YAVa,IAANzxE,IAAAA,EAAS,CAAC,GACjBj9C,KAAK+tH,eAAep3G,SAAQ,SAACq2G,GAC3B,IAAMlmH,EAAS4nH,EAAKH,kBAAkBvB,GAElClmH,EACFA,EAAOomH,YAAYjwE,EAAQ+vE,GAE3B1yF,QAAQC,KAAK,wCAAyCyyF,EAE1D,IACO,CAAElmH,OAAW9G,KAAK8G,OAAM,KAAIm2C,EAAO+T,GAAK,IACjD,EAACo7D,EAED0B,eAAA,WACE,IAAM7wE,EAAS,CACbvnC,KAAMV,EAAEwrC,MAAM3L,MAAM,SAGtB70C,KAAKmsH,SAASlvE,GAEdjoC,EAAEwrC,MAAM1kC,IAAI09C,IAAAA,MAAU,qBAAsBvc,GAC9C,EAAC0wE,CAAA,CA1M6B,CAAStyD,KCTzC,MAAM,GAA+Bk8C,OAAOC,KAAK/D,OAAO,+B,eCoBnCkb,GAAiB,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAn7G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA80D,EAAAC,GAAA,IAAAxC,EAAAuC,EAAAhvH,UA2RnC,OA3RmCysH,EACpC7pE,OAAA,SAAOH,GACLwsE,EAAAjvH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKq4B,MAAQ,IAAI6zF,EAAmB,CAAC,GACrClsH,KAAKq4B,MAAMs3D,cAAcn2B,IAAAA,OAAWvc,UAEpCj9C,KAAK47D,UAAY,kBAEjB,IAY2FizD,EAAAC,EAZvFC,EAAa,GACb/uH,KAAKi9C,SAAS+T,GAChBtxD,MAAMigB,KAAK3f,KAAKi9C,SAAS+T,EAAEg+D,SAAS,oBAAoBr4G,SAAQ,SAAC/P,GAC/DmoH,EAAW75G,KAAKtO,EAAM,GACxB,IAEF5G,KAAKivH,oBAAsBF,EACxB32G,KAAK,KACLrM,MAAM,KACNjF,QAAO,SAAC6iB,GAAE,OAAKA,CAAE,IAEpB3pB,KAAKkvH,2BAA6B,GAC9B11D,IAAAA,aAAiB9jC,IAAI,mBAAqB8jC,IAAAA,MAAU4J,UAAU,yBAE/C,OAAjByrD,EAAI7uH,KAAKi9C,WAAW,OAAH6xE,EAAbD,EAAe79D,IAAf89D,EAAkB50D,SAAS,kBAC7Bl6D,KAAKkvH,2BAA2B,kBAAoB,gBAIxD11D,IAAAA,QAAYtkD,KAAK,QAASskD,IAAAA,WAAekH,MAAM,kEACjD,EAAC0rD,EAEDjqE,SAAA,SAASC,GACPwsE,EAAAjvH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,GAEfoX,IAAAA,SAAa6G,IAAY7G,IAAAA,WAAekH,MAAM,sCAChD,EAAC0rD,EAEDznF,KAAA,WACE,OACE3vB,EAAA,OAAK8W,UAAU,aACZ0hE,IAAAA,UAAoB7S,OACrB3lE,EAAA,OAAK8W,UAAU,aACb9W,EAAA,OAAK8W,UAAU,oBACb9W,EAAA,OAAK8W,UAAU,yBACb9W,EAAA,UAAKwoD,IAAUx9D,KAAK06E,eAAez3D,aAErCjO,EAAA,OAAK8W,UAAU,mCACb9W,EAAA,OAAK8W,UAAU,qBACb9W,EAAA,MAAI8W,UAAU,0BAA0B0xC,IAAUx9D,KAAK0tF,YAAYzqE,YACnEjO,EAAA,MAAI8W,UAAU,4BAA4B0xC,IAAUx9D,KAAKwnF,cAAcvkE,aAEzEjO,EAAC42G,EAAiB,CAACvzF,MAAOr4B,KAAKq4B,WAM3C,EAEA+zF,EAMA1xC,aAAA,WACE,IAAM/c,EAAQ6vB,IAAAA,UAAoB9S,eAalC,OAXA/c,EAAM/vD,WACJ,MACA2tE,IAAAA,UACE,CACE3a,gBAAiB,SACjB90C,UAAW,oBAEb9rB,KAAKwpF,WAAWvmE,YAIb06C,CACT,EAEAyuD,EAMA5iC,SAAA,WACE,IAAM7rB,EAAQ6vB,IAAAA,UAAoBhE,WAC5BvsC,EAASj9C,KAAKmwG,eAcpB,OAZAxyC,EAAM7kD,IACJ,qBACAuiE,IAAAA,UACE,CACEjrD,KAAMopC,IAAAA,MAAU,qBAAsBvc,GACtCijB,KAAM,uBAER1G,IAAAA,WAAekH,MAAM,sCAEvB,IAGK/C,CACT,EAACyuD,EAED1+B,UAAA,WACE,IAAM/vB,EAAQ,IAAIlB,KACZ0xB,EAAUnuF,KAAKq4B,MAAM81D,UAErBC,EAAc,CAAC,EACrB,IAAK,IAAMnnF,KAAKknF,EACdC,EAAYnnF,GAAKuyD,IAAAA,WAAekH,MAAM,+BAAiCz5D,GAmCzE,OAhCA02D,EAAM7kD,IACJ,OACA+6F,IAAAA,UAAiB,CACfrzG,QAAS4tF,EACTrnF,MAAO/G,KAAKq4B,MAAM23C,YAAYt6D,MAAQ8jD,IAAAA,MAAU4J,UAAU,4BAC1DrK,SAAU/4D,KAAKmvH,aAAaz/E,KAAK1vC,QAEnC,KAGF29D,EAAM7kD,IACJ,eACA3U,IAAAA,UACE,CACE48D,UAAW,gBACXD,MAAOtH,IAAAA,WAAekH,MAAM,+CAC5BE,gBAAiB,cACjB90C,UAAW,uBAEb9rB,KAAKovH,aAAansG,WAEpB,IAGF06C,EAAM7kD,IACJ,SACA60G,GAAYjuE,UAAU,CACpBrnB,MAAOr4B,KAAKq4B,QAEd,IAGKslC,CACT,EAACyuD,EAEDgD,WAAA,WAAa,IAAAnoB,EAAA,KACLtpC,EAAQ,IAAIlB,KA4DlB,OA1DAjD,IAAAA,MACGvU,IAAI,UACJn+C,QAAO,SAAC23E,GAAK,MAAoB,MAAfA,EAAM90D,MAA+B,MAAf80D,EAAM90D,IAAY,IAC1DhT,SAAQ,SAAC8nE,GACR9gB,EAAM7kD,IACJ2lE,EAAMsJ,aACN4kC,EAAgBjtE,UACd,CACE5zB,UAAW,oBACXo0C,KAAMue,EAAMve,OACZ5vC,QAAS22E,EAAKgoB,oBAAoB/0D,SAASukB,EAAM90D,MACjD24B,QAAS,WACP,IAAM34B,EAAK80D,EAAM90D,KACbs9E,EAAKgoB,oBAAoB/0D,SAASvwC,GACpCs9E,EAAKgoB,oBAAsBhoB,EAAKgoB,oBAAoBnoH,QAAO,SAACvD,GAAC,OAAKA,GAAKomB,CAAE,KAEzEs9E,EAAKgoB,oBAAoB/5G,KAAKyU,GAE9Bs9E,EAAKioB,2BAA6B,IAGpCjoB,EAAKkoB,aAAaloB,EAAKhqD,SAASvnC,KAClC,GAEF+oE,EAAMsJ,cAGZ,IAEEvuB,IAAAA,aAAiB9jC,IAAI,mBAAqB8jC,IAAAA,MAAU4J,UAAU,0BAChEzF,EAAM7kD,IACJ,UACA6zG,EAAgBjtE,UACd,CACE5zB,UAAW,oBACXo0C,KAAM,aACN5vC,QAA+D,iBAAtDtwB,KAAKkvH,2BAA2B,kBACzC5sE,QAAS,WACP,IAAM34B,EAAK,iBACiC,iBAAxCs9E,EAAKioB,2BAA2BvlG,GAClCs9E,EAAKioB,2BAA2BvlG,GAAM,IAEtCs9E,EAAKioB,2BAA2BvlG,GAAM,eAEtCs9E,EAAKgoB,oBAAsB,IAG7BhoB,EAAKkoB,aAAaloB,EAAKhqD,SAASvnC,KAClC,GAEF8jD,IAAAA,WAAekH,MAAM,sDAEvB,IAGF/C,EAAM7kD,IAAI,YAAaskD,KAAAA,YAAuB,KAGzCO,CACT,EAACyuD,EAED5kC,YAAA,WAAc,IAAAglC,EAAA,KACN7uD,EAAQ,IAAIlB,KAkBlB,OAhBAkB,EAAM7kD,IACJ,UACA2qD,IAAAA,UAAiB,CACft6D,MAAOqwD,IAAAA,WAAekH,MAAM,iDAC5BR,KAAM,cACNp0C,UAAW,sBACXw2B,QAAS,WACPkqE,EAAKn0F,MAAMs2D,UACPn1B,IAAAA,QAAY1M,OACd0M,IAAAA,MAAU34D,KAAK,QAAS24D,IAAAA,QAAY1M,KAAKnjC,MACzC3U,EAAEwqC,SAEN,KAIGme,CACT,EAEAyuD,EAKA+C,aAAA,SAAaz5G,GACX,IAAMunC,EAASj9C,KAAKi9C,SAEhBvnC,IAAS8jD,IAAAA,MAAU4J,UAAU,mCACxBnmB,EAAOvnC,KAEdunC,EAAOvnC,KAAOA,EAGhB,IAAI25G,EAAQ,GACZ,IAAK,IAAMvoH,KAAU9G,KAAKkvH,2BACxBG,GAASrvH,KAAKkvH,2BAA2BpoH,GAAU,IAGrD,GAAI9G,KAAKivH,oBAAoBxqH,OAAS,EAAG,CACvC,IAAM6qH,EAAUtvH,KAAKivH,oBAAoBnvH,QAAO,SAAC01B,EAAM2zE,GACrD,OAAU3zE,GAAOA,EAAO,IAAM,IAAE,SAAS2zE,CAC3C,GAAG,IAEHlsD,EAAOkvE,SAAW,CAAE5iG,OAAQ+lG,EAC9B,MACEryE,EAAOkvE,SAAW,CAAE5iG,OAAQ,GAAIynC,EAAGq+D,EAAMvwE,QAG3C9+C,KAAKq4B,MAAMs3D,cAAc1yC,GAEzB,IAAMsyE,EAAWz1D,EAAA,GAAQ7c,UAClBsyE,EAAYpD,SAEnBn3G,EAAEwrC,MAAM1kC,IAAI09C,IAAAA,MAAU,qBAAsB+1D,GAC9C,EAACnD,EAEDjc,aAAA,WACE,MAAO,CACLz6F,KAAMV,EAAEwrC,MAAM3L,MAAM,QACpBmc,EAAGh8C,EAAEwrC,MAAM3L,MAAM,KAErB,EAACu3E,EAEDnvE,OAAA,WACE,OAAOj9C,KAAKmwG,cACd,EAACwe,CAAA,CA3RmC,CAAShzD,KCpB/C,MAAM,GAA+B47C,OAAOC,KAAK/D,OAAO,gB,eCKnC+b,GAAI,SAAAC,GAAA,SAAAD,IAAA,QAAAvoB,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GACO,OADP2rE,EAAAwoB,EAAA1vH,KAAA0T,MAAAg8G,EAAA,OAAAtvH,OAAAmZ,KAAA,MACvB/I,KAAOmrE,KAAAA,UAAgB,QAAOurB,CAAA,QADPptC,EAAA21D,EAAAC,GACOD,CAAA,CADP,CAAS9zC,MCGrBi0C,GAAa,CACxBhD,gBAAAA,EACAgB,YAAAA,GACAtC,cAAAA,EACAO,kBAAAA,EACAJ,sBAAAA,EACAmD,kBAAAA,GACApD,sBAAAA,GCXWqE,GAAc,CACzB/C,aAAAA,GACAU,YAAAA,GACAH,WAAAA,ICUWyC,GAAoB,WAC3Br2D,IAAAA,MAAU4J,UAAU,4BAA8B5J,IAAAA,MAAU4J,UAAU,mCACxEpjE,KAAKK,EAAE,iBAAiBoB,MAAK,WAC3B,IAAIpB,EAAEL,MAAM+E,SAAS,wBAArB,CAEA,IAAM8N,EAAOxS,EAAEL,MAAMa,KAAK,sBAAsB0P,OAC1CkuE,EAAQjlB,IAAAA,MAAU8vC,MAAM,SAAU,aAAcz2F,EAAK0C,MAAM,IAEjE,GAAIkpE,EAAO,CACT,IAAMR,EAAO59E,EAAE,sCAAsCm5D,IAAAA,MAAU,qBAAsB,CAAExI,EAAG,SAASytB,EAAM90D,OAAS,UAElHs0D,EAAKl9E,GAAG,SAAS,SAAUwC,GACzByR,EAAEwrC,MAAM1kC,IAAI9b,KAAK2iB,aAAa,SAC9Bpf,EAAEmC,gBACJ,IAEArF,EAAEL,MAAM6C,SAAS,wBAAwBy9B,KAAK29C,EAChD,CAdoD,CAetD,GAEJ,EAEAzkB,IAAAA,aAAiB1gD,IAAI,sBAAsB,SAAC0gD,GAC1CA,EAAIzY,OAAO+uE,mBAAqB,CAC9BzvE,KAAM,SACNX,UAAWivE,IAGbn1D,EAAImiB,MAAMqtB,OAAO,2BAA6BwmB,IAE9C/uH,EAAAA,EAAAA,QAAO4iF,IAAAA,UAA6B,QAAQ,SAAU1+C,EAAM2e,GACrD3e,GAAS60B,EAAI2J,MAAMC,UAAU,6BAA8B5J,EAAI2J,MAAMC,UAAU,4CAIpF9f,EAAQA,EAAM98C,cAEdm+B,EAAK5gB,OACH,EACA,EACA/O,EACE,KACAqmE,IAAAA,UACE,CACEjrD,KAAMopC,EAAIhZ,MAAM,qBAAsB,CAAEwQ,EAAG1N,IAC3C4c,KAAM,iBAER1G,EAAIiH,WAAWC,MAAM,gDAAiD,CAAEpd,MAAAA,OAIhF,KAEA7iD,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,SAAC7vB,GACnCnE,EAAI2J,MAAMC,UAAU,4BAA8B5J,EAAI2J,MAAMC,UAAU,mBACxEzF,EAAM7kD,IACJ,qBACAuiE,IAAAA,UACE,CACEjrD,KAAMopC,EAAIhZ,MAAM,sBAChB0f,KAAM,uBAER1G,EAAIiH,WAAWC,MAAM,sCAEvB,GAGN,KAEAjgE,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,WAAY2jC,KAC1CpvH,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,WAAY2jC,GAC5C,G;;;;;;;MCvFA,IAAIr3D,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,sECL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAzC,SAAS35C,IActB,OAbAA,EAAWr4C,OAAOs+B,OAASt+B,OAAOs+B,OAAOrQ,OAAS,SAAU/uC,GAC1D,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GAEvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG1B,CAED,OAAOnM,CACR,EACMm5D,EAASrmD,MAAMzT,KAAM0T,UAC7B,CCfc,SAASmkD,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACR,EACMomD,EAAgBpmD,EAAG7G,EAC3B,CCLc,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC1B,CCLD,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,c,ICEpDrkE,E,SAEJ,iBAAgBo8B,GAAD,OACbp8B,IACCA,EAAO,CAAC,OAAQ,QAAQtvC,QAAO,SAAC2R,EAAG3E,GAGlC,OAFA2E,EAAE3E,GAAO0sD,IAAAA,WAAekH,MAAf,mBAAwC8K,EAAxC,cAA6D1+D,EAA7D,UAEF2E,CACR,GAAE,CAAC,GANN,ECDO,IAAIjR,EAEE8K,EAAa,WAKxB,OAJK9K,IACHA,EAAUuvH,EAAqB,0BAG1BvvH,CACR,EAEYwvH,EAA+B,WAC1C1kH,IAEA,IAAIvE,EAAQyyD,IAAAA,KAAS,0CAMrB,GAJKh5D,EAAQuG,KACXA,EAAQ,MAGNyyD,IAAAA,QAAY1M,KAAM,CACpB,IAAMmjE,EAAaz2D,IAAAA,QAAY1M,KAAK2kC,cAAcy+B,sBAE9C1vH,EAAQyvH,KACVlpH,EAAQkpH,EAEX,CAED,OAAOlpH,GAAS,MACjB,EC7BD,mBAAe,MAAM,yBAA0BwwG,OAAOjK,YAAct4F,EAAEwrC,MAAMjkC,MAAM29C,SAASV,IAAAA,MAAU,aAArG,ECAO,ICGM22D,EAAQ,GACnB3vH,QAAAA,EACA8K,WAAAA,EACA0kH,6BAAAA,EACAI,gBAAAA,EACAC,oBCHgD,CAChD,CACElI,aAAc,aACdjoD,KAAM,cACNowD,SAAU,0DACVxjC,eAAgB,yDAElB,CACEq7B,aAAc,SACdjoD,KAAM,cACNowD,SAAU,sDACVxjC,eAAgB,qDAElB,CACEq7B,aAAc,OACdjoD,KAAM,aACNowD,SAAU,oDACVxjC,eAAgB,mDAElB,CACEq7B,aAAc,SACdjoD,KAAM,oBACNowD,SAAU,qDACVxjC,eAAgB,oDAElB,CACEq7B,aAAc,OACdjoD,KAAM,mBACNowD,SAAU,mDACVxjC,eAAgB,oDFlCC,CACnBijC,qBAAAA,IGHF,MAAM,EAA+BxY,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCYnC8c,EAAAA,SAAAA,G,4EACnB5rF,KAAA,WACE,IAAM6rF,EAAaxwH,KAAK0qB,MAAMgsB,OAE9B,OACE,SAAK5qB,UAAS,uBAAwB0kG,EAAa,WAAa,IAAMluE,QAAStiD,KAAK0qB,MAAM43B,SACvF4d,IAAKlgE,KAAK0qB,MAAMw1C,KAAM,CAAEp0C,UAAW,4BACpC,UAAMA,UAAU,4BAA4B0tC,IAAAA,WAAekH,MAAM1gE,KAAK0qB,MAAM4lG,WAC5E,SAAKxkG,UAAU,kCAAkC0tC,IAAAA,WAAekH,MAAM1gE,KAAK0qB,MAAMoiE,iBAChF0jC,GAActwD,IAAK,eAAgB,CAAEp0C,UAAW,oCAGtD,E,EAZkBykG,CAA+Bl1D,KCZpD,MAAM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,uB,aCenCgd,EAAAA,SAAAA,G,wIACnBtI,kBAAAA,E,EACAzpD,aAAAA,E,EACAgyD,oBAAsC59G,E,oCAEtCyvC,OAAA,SAAOH,GAA2D,MAChE,YAAMG,OAAN,UAAaH,GACbpiD,KAAK0+D,QAAUtR,KAAO,GACtBptD,KAAKmoH,aAAenoH,KAAK0qB,MAAMsxD,MAAMmsC,gBAAkB,aAEvD,IAAM12B,EAAW,SAAGj4B,IAAAA,QAAY1M,WAAf,EAAG,EAAkB2kC,cAChC82B,EAAc92B,EAAW,0BACzB+2B,EAAc/2B,EAAW,2BAE1B82B,GAAeC,IAAsC,eAAtBxoH,KAAKmoH,aACvCnoH,KAAK0wH,gBAAiB,EAEtB1wH,KAAK0wH,gBAAiB,CAEzB,E,EAED5kG,UAAA,WACE,MAAO,iCACR,E,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAekH,MAAM,4CAA6C,CACvEz7D,QAASjF,KAAK0qB,MAAMsxD,MAAMnpE,QAE7B,E,EAEDujB,QAAA,WAAU,aACFq7D,EAAW,SAAGj4B,IAAAA,QAAY1M,WAAf,EAAG,EAAkB2kC,cAItC,OAHoBA,EAAW,0BACXA,EAAW,0BAG7B,SAAK3lE,UAAU,cACZ9rB,KAAK2wH,kBAAkB1tG,UACxB,SAAK6I,UAAU,cACb,EAAC,IAAD,CAAQA,UAAU,yBAAyBw2B,QAAS,kBAAM,EAAKomE,iBAAiB,EAAKP,aAAjC,EAAgDzpD,QAAS1+D,KAAK0+D,WAC/GlF,IAAAA,WAAekH,MAAM,sDAK/B,E,EAEDiwD,gBAAA,WACE,IAAMhzD,EAAQ,IAAIlB,KAWlB,OATAkB,EAAM7kD,IACJ,oBACA,SAAKgT,UAAU,cACb,eAAQ0tC,IAAAA,WAAekH,MAAM,wDAAyD,CAAEz7D,QAASjF,KAAK0qB,MAAMsxD,MAAMnpE,UACjH7S,KAAK4wH,0BAA0B3tG,WAElC,IAGK06C,CACR,E,EAEDizD,wBAAA,WAAsD,WAC9CjzD,EAAQ,IAAIlB,KACdD,EAAW,IAiBf,OAfA2zD,EAAME,oBAAoB15G,SAAQ,SAACnV,EAAQqE,GACzC,IAAM6kB,EAAQ,KACTlpB,EADM,CAET8gD,QAAS,WACP,EAAK6lE,aAAe3mH,EAAO2mH,aAC3B,EAAKuI,gBAAiB,CACvB,EACDh6E,OAAQ,EAAKyxE,eAAiB3mH,EAAO2mH,aACrCn/F,SAAkC,SAAxBxnB,EAAO2mH,cAA2B,EAAKz9F,MAAMsxD,MAAM/P,aAG/DtO,EAAM7kD,IAAN,uBAAiCjT,EAAS,EAAC0qH,EAA2B7lG,GAAW8xC,GACjFA,GAAY,CACb,IAEMmB,CACR,E,EAED+qD,iBAAA,SAAiBP,GAAsB,WAC/B/7F,EAAMpsB,KAAK0qB,MAAMsxD,MAEvBh8E,KAAK0+D,SAAQ,GAEb1+D,KAAKmoH,aAAeA,EAEpB3uD,IAAAA,QACW,CACP3iB,IAAQ2iB,IAAAA,MAAU4J,UAAU,UAAzB,SAA2Ch3C,EAAIzC,KAA/C,gBACHmN,OAAQ,OACR3zB,KAAM,CACJxB,KAAM3B,KAAK6wH,iBAGd55F,MAAK,SAAC65F,GAAD,OAAct3D,IAAAA,MAAU6iB,YAAYy0C,EAApC,IACL75F,MAAK,WACJ,EAAKynC,SAAQ,GAEb1pD,EAAEwqC,SACF,EAAK7yC,MACN,GACJ,E,EAEDkkH,YAAA,WACE,MAAO,CAAE1I,aAAcnoH,KAAKmoH,aAC7B,E,EA/GkBsI,CAA0B5nD,KCf/C,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCOnCsd,EAAAA,SAAAA,G,oFACnBxuE,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK0+D,QAAUtR,KAAO,GACtBptD,KAAK0wH,eAAiBtjE,KAAO,EAC9B,E,EAEDlL,eAAA,SAAeE,GACb,YAAMF,eAAN,UAAqBE,GAErB,IAAM+lE,EAAenoH,KAAK0qB,MAAMy9F,eAAgB,EAE1C12B,EAAcj4B,IAAAA,QAAY1M,KAAK2kC,cAC/B82B,EAAc92B,EAAW,0BACzB+2B,EAAc/2B,EAAW,2BAE1B82B,GAAeC,KAAiC,IAAjBL,EAClCnoH,KAAK0wH,oBAAe59G,GAEpB9S,KAAK0wH,gBAAe,EAEvB,E,EAED/rF,KAAA,SAAKyd,GACH,IAAM+lE,EAAenoH,KAAK0qB,MAAMy9F,eAAgB,EAC5C3mH,EAAS2uH,EAAME,oBAAoBxvH,MAAK,SAAC4vC,GAAD,OAASA,EAAI03E,eAAiBA,CAA9B,IAExCE,EAAa7mH,EAASA,EAAO0+D,KAAO,cACpCkoD,EAAc5mH,EAASg4D,IAAAA,WAAekH,MAAMl/D,EAAO8uH,UAAY92D,IAAAA,WAAekH,MAAM,oDAExF1gE,KAAK0qB,MAAMoB,WAAa9rB,KAAK0qB,MAAMoB,WAAa,IAAzB,2CAAiFq8F,EACxGnoH,KAAK0qB,MAAMw1C,KAAOmoD,EAElB,IACME,EADc/uD,IAAAA,QAAY1M,KAAK2kC,cACN,0BAEzB4iB,EAAch0C,IAClB7G,IAAAA,WAAekH,MACb6nD,EAAc,0DAA4D,4DAI9E,OACE,EAAC,IAAD,CACEh4G,KAKmC,kBAA1BvQ,KAAK0wH,iBAAiC,GAAKrc,EAEpDpuC,eAAgBjmE,KAAK0wH,iBACrBpuH,SAAS,SACT8G,MAAO,KAVT,YAYSu7B,KAZT,UAYcljB,OAAOs+B,OAAO,CAAC,EAAGqC,EAAO,CAAE9sB,SAAU8yF,KAGtD,E,EA3DkB2I,CAAgCttD,KCArD,MCPM,EAA+B8zC,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCQnCud,EAAAA,SAAAA,G,oFACnBrsF,KAAA,WACE,IAAMpU,EAAWipC,IAAAA,YAAgBy3D,WAC3BzwH,EAAUR,KAAKQ,UAErB,OAAO2D,IAAAA,UACL,CACEy8D,gBAAiB,SACjBE,MAAOtgE,EAAQ+vB,IAAay/F,KAE9BvuG,OAAOvB,KAAK1f,GAASoH,KAAI,SAACkF,GACxB,IAAM4pC,EAAS5pC,IAAQyjB,EAEvB,OAAOkzC,IAAAA,UACL,CACE/sB,OAAAA,EACAwpB,MAAMxpB,GAAS,eACf4L,QAAS,WACPkX,IAAAA,YAAgBy3D,WAAankH,EAE7B0sD,IAAAA,YAAgBm1B,SACjB,GAEHnuF,EAAQsM,GAEX,IAEJ,E,EAEDtM,QAAA,WACE,OAAO8K,GACR,E,EA/BkB0lH,CAAoC31D,KCGzD,MCXM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,iC,eCGnCyd,EAAAA,SAAAA,G,oFACnBhxD,KAAA,WACE,MAAO,iBACR,E,EAED9vC,KAAA,WACE,IACM8tC,EADel+D,KAAK0qB,MAAM4zD,aACAC,UAEhC,OAAO/kB,IAAAA,MAAU0E,WAAWA,EAC7B,E,EAED9nC,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,0DAA2D,CACrF5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,WAC9B39E,MAAOnJ,KAAK0qB,MAAM4zD,aAAaC,UAAUp1E,SAE5C,E,EAEDwmE,QAAA,WACE,OAAO,IACR,E,EArBkBuhD,CAAkCrqC,KCHvD,iBACG,GAAQ,cADX,EAEEkiC,OAAQ,cAFV,EAGEoI,KAAM,kBAHR,EAIEnI,OAAQ,oBAJV,EAKEr8G,KAAM,mBALR,G,ICKqBg8G,EAAAA,SAAAA,G,oFACnBzoD,KAAA,WACE,OAAOkxD,EAAMD,IACd,E,EAED/gG,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAC1BpgB,EAAaogB,EAAaC,UAC1BnoD,EAAUkoD,EAAaloD,WAAa,CAAC,EAE3C,OAAOojC,IAAAA,MAAU0E,WAAWA,EAAY9nC,EAAQ6wD,WACjD,E,EAED7wD,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,oDAAqD,CAAE5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YAClH,E,EAEDnX,QAAA,WACE,OAAO,IACR,E,EAnBkBg5C,CAA4B9hC,KCF5BwqC,EAAAA,SAAAA,G,oFACnBnxD,KAAA,WACE,MAAO,iBACR,E,EAED9vC,KAAA,WACE,IACM8tC,EADel+D,KAAK0qB,MAAM4zD,aACAC,UAEhC,OAAO/kB,IAAAA,MAAU0E,WAAWA,EAC7B,E,EAED9nC,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,8DAA+D,CACzF5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,WAC9B39E,MAAOnJ,KAAK0qB,MAAM4zD,aAAaC,UAAUp1E,SAE5C,E,EAEDwmE,QAAA,WACE,OAAO,IACR,E,EArBkB0hD,CAAqCxqC,KCH1D,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,4B,cCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,2B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,iC,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,8B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,4B,eCSxD,MCTM,GAA+B8D,OAAOC,KAAK/D,OAAO,qC,eCQ3Ckc,GAAa,CACxBqB,4BAAAA,EACAE,0BAAAA,EACAG,6BAAAA,EACA1I,oBAAAA,EACA8H,kBAAAA,EACAF,uBAAAA,EACAQ,wBAAAA,GCFFv3D,IAAAA,aAAiB1gD,IACf,mBACA,WACO0gD,IAAAA,aAAiB9jC,IAAI,gBlBR5B8jC,IAAAA,MAAUwvC,OAAOqQ,KAAK15G,UAAUwoH,aAAezsC,IAAAA,UAAgB,iBAE/Dj7E,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,gBAAgB,SAAU7vB,GACpD,GAAK39D,KAAKu6G,cAAiB/gD,IAAAA,QAAY1M,KAAvC,CAEA,IAAM1gC,EAAMpsB,KAAKu6G,aAEb58C,EAAMjoC,IAAI,kBAAkBioC,EAAMf,YAAY,gBAAiB,IAEnEe,EAAM7kD,IACJ,qBACA,EAACi4G,EAAD,CACEjlG,UAAU,4BACVq8F,aAAc/7F,EAAI+7F,eAClB7lE,QAAS,kBAAMkX,IAAAA,MAAU9sD,KAAK+jH,EAAmB,CAAEz0C,MAAO5vD,GAAjD,IAEX,EAbiD,CAepD,IkBHK,yBAA0BmrF,OAAOjK,cCfvC7sG,EAAAA,EAAAA,QAAOg9E,KAAAA,UAAsB,UAAU,SAAUtf,GAC/C,GAAKiyD,KAAsBpwH,KAAKq5G,OAAhC,CAIA,IAAMj6D,EAAgBp/C,KAAKq5G,OACxBzxG,KAAI,SAACwkB,GAAD,OAASA,EAAI+7F,cAAb,IACJrhH,QAAO,SAACuxB,GAAD,MAAW,CAAC,OAAQ,UAAU6hC,SAAS7hC,EAAvC,IAEJrzB,EAAOo6C,EAAc8a,SAAS,QAAU,UAAY,YAEtD9a,EAAc36C,QAChB05D,EAAOrlD,IACL,aACAukE,KAAAA,UAAgB,CACdvc,MAAOtH,IAAAA,WAAekH,MAAf,+BAAoD17D,EAApD,gBACPk7D,KAAM,kBACNl7D,KAASA,EAAL,SAdT,CAkBF,KfjBDvE,EAAAA,EAAAA,QAAO0vF,IAAAA,UAA+B,iBAAiB,SAAUlzC,GAC/D,GAAKmzE,KAAsB52D,IAAAA,QAAY1M,KAAvC,CAEK9sD,KAAKixH,aACRjxH,KAAKixH,WAAajB,KAGpB,IAAMiB,EAAajxH,KAAKixH,WAEa,cAAjCz3D,IAAAA,QAAYj9C,IAAI,cAA+C,SAAf00G,IAClDh0E,EAAOn2C,OAAO,kBAAmB,SAE1Bm2C,EAAOn2C,OAAOqhH,aAX4B,CAapD,KAED1nH,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,aAAa,SAAU7vB,GAC5CyyD,KAAsB52D,IAAAA,QAAY1M,MAIvC6Q,EAAM7kD,IAAI,cAAe,EAACk4G,EAAD,MAC1B,KWxBDvwH,EAAAA,EAAAA,QAAOwxF,KAAAA,UAAwB,iBAAiB,SAAUt0B,GAAO,WAC/DA,EAAM7kD,IACJ,kBACAs4E,KAAAA,UACE,CACEtwB,MAAOtH,IAAAA,WAAekH,MAAM,+CAC5B50C,UAAW,wBAEb,CACE,SAAKA,UAAU,cACb,WAAI0tC,IAAAA,WAAekH,MAAM,qDACxBmzC,KAAAA,UAAiB,CAChBrzG,QAAS8K,IACTvE,MAAO/G,KAAK8sD,KAAK2kC,cAAcy+B,uBAAyBF,IACxDj3D,SAAU,SAAChyD,GACT,EAAK+lD,KAAK2lC,gBAAgB,CAAEy9B,sBAAuBnpH,IAASkwB,MAAK,WAC/DjiB,EAAEwqC,QACH,GACF,OAMZ,KGLCga,IAAAA,uBAA2B83D,aAAe3I,EAC1CnvD,IAAAA,uBAA2B+3D,mBAAqBL,EAChD13D,IAAAA,uBAA2Bg4D,iBAAmBH,GE1BhD5wH,EAAAA,EAAAA,QAAO4wF,KAAAA,UAA4B,qBAAqB,SAAU1zB,GAChEA,EAAM7kD,IAAI,qBAAsB,CAC9BjG,KAAM,qBACNqtD,KAAM,kBACNY,MAAOtH,IAAAA,WAAekH,MAAM,gEAG9B/C,EAAM7kD,IAAI,eAAgB,CACxBjG,KAAM,eACNqtD,KAAM,kBACNY,MAAOtH,IAAAA,WAAekH,MAAM,0DAG9B/C,EAAM7kD,IAAI,mBAAoB,CAC5BjG,KAAM,mBACNqtD,KAAM,kBACNY,MAAOtH,IAAAA,WAAekH,MAAM,mEAE/B,KFNGpmC,QAAQjW,MAAM,+CAiBjB,IACA,E;;;;;;;MGlCH,IAAIm0C,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCNA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,2B,ICKnCge,EAAa,YCJnB,IAAwB9+D,EAAUC,EDIf,kDCJeA,EDIf,GCJKD,EDIL,GCHvBhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDCO,kBAqD/B,OArD+B,EAChCrQ,OAAA,SAAOH,GACL,YAAMG,OAAM,UAACH,GACbpiD,KAAK0xH,SAAWtkE,IAAOoM,IAAAA,QAAAA,KAAAA,cACzB,EAAC,EAED1tC,UAAA,WACE,MAAO,2BACT,EAAC,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,+CAC9B,EAAC,EAEDpjC,QAAA,WACE,OACE,SAAKtK,UAAU,cACb,SAAKA,UAAU,uBACb,SAAKA,UAAU,cACb,WAAO9mB,KAAK,OAAOylE,aAAa,MAAM53D,KAAK,WAAWiZ,UAAU,cAAc+sC,KAAM74D,KAAK0xH,SAAU1oG,SAAUhpB,KAAK0+D,WAEpH,SAAK5yC,UAAU,cACb,EAAC,IAAM,CAACA,UAAU,uCAAuC9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SAClFlF,IAAAA,WAAAA,MAAqB,2DAMlC,EAAC,EAED0L,SAAA,SAAS3hE,GAAG,WACVA,EAAEmC,iBAEE1F,KAAK0xH,aAAel4D,IAAAA,QAAAA,KAAAA,eAKxBx5D,KAAK0+D,SAAU,EAEflF,IAAAA,QAAAA,KAAAA,KAEI,CAAEk4D,SAAU1xH,KAAK0xH,YACjB,CACE1nD,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAGnCi3B,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,OAAM,OACpB,WACL,EAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,KAjBAx/C,KAAK2M,MAkBT,EAAC,EArD+B,C,MAASk8D,IEL3C,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCGxD,SACE,IAAIgF,IAAAA,OAAaxN,KACd7nC,UAAmB,oBCOxB5J,IAAAA,aAAAA,IAAqB,oBAAoB,YACvC/4D,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,gBAAgB,SAAUt0B,GACN,aAA7CnE,IAAAA,MAAAA,UAAoB,sBAEpBx5D,KAAK8sD,KAAK6kE,mBACZh0D,EAAM7kD,IACJ,iBACA,EAAC,IAAM,CAACgT,UAAU,SAASw2B,QAAS,kBAAMkX,IAAAA,MAAAA,KAAeo4D,EAAc,GACpEp4D,IAAAA,WAAAA,MAAqB,2DAI9B,KAEA/4D,EAAAA,EAAAA,QAAO0nF,IAAAA,UAAyB,UAAU,WACxCnoF,KAAK0xH,SAAWtkE,IAAOptD,KAAK0qB,MAAMoiC,KAAK6J,cACzC,KAEAl2D,EAAAA,EAAAA,QAAO0nF,IAAAA,UAAyB,UAAU,SAAUxqB,GACD,aAA7CnE,IAAAA,MAAAA,UAAoB,sBAEnBx5D,KAAK0qB,MAAMoiC,KAAK6kE,mBAErBh0D,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,eAAQ0tC,IAAAA,WAAAA,MAAqB,uDAC7B,WACE1tC,UAAU,cACV84C,YAAavE,IAAY7G,IAAAA,WAAAA,MAAqB,oDAC9CX,KAAM74D,KAAK0xH,YAGf,IAEJ,KAEAjxH,EAAAA,EAAAA,QAAO0nF,IAAAA,UAAyB,QAAQ,SAAUxmF,GACC,aAA7C63D,IAAAA,MAAAA,UAAoB,sBAEnBx5D,KAAK0qB,MAAMoiC,KAAK6kE,mBAEjB3xH,KAAK0xH,aAAe1xH,KAAK0qB,MAAMoiC,KAAK6J,gBACtCh1D,EAAK+vH,SAAW1xH,KAAK0xH,WAEzB,KAEAjxH,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,UAAU,WACW,aAA7C1Q,IAAAA,MAAAA,UAAoB,uBAExBx5D,KAAK0xH,SAAWtkE,IAAOptD,KAAK0qB,MAAM8wB,UAAY,IAChD,KAEA/6C,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,WAAW,WACU,aAA7C1Q,IAAAA,MAAAA,UAAoB,sBAEpBA,IAAAA,MAAAA,UAAoB,8BAAgCA,IAAAA,MAAAA,UAAoB,oCAC1Ex5D,KAAKK,EAAE,mBAAmBwlB,QAE9B,KAEAplB,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,UAAU,SAAUvM,GACC,aAA7CnE,IAAAA,MAAAA,UAAoB,sBAEpBA,IAAAA,MAAAA,UAAoB,+BACtBmE,EAAM7kD,IACJ,WACA,SAAKgT,UAAU,cACb,WACEA,UAAU,cACVjZ,KAAK,WACL7N,KAAK,OACL4/D,YAAavE,IAAY7G,IAAAA,WAAAA,MAAqB,wDAC9CX,KAAM74D,KAAK0xH,SACX1oG,SAAUhpB,KAAK0+D,SAAW1+D,KAAKoqE,WAAW,YAC1CynD,SAAUr4D,IAAAA,MAAAA,UAAoB,sCAGlC,IAGEA,IAAAA,MAAAA,UAAoB,oCACtBmE,EAAM94D,OAAO,YAGnB,KAEApE,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,cAAc,SAAUvoE,GACpD,GAAiD,aAA7C63D,IAAAA,MAAAA,UAAoB,sBAEpBA,IAAAA,MAAAA,UAAoB,+BACtB73D,EAAK+vH,SAAW1xH,KAAK0xH,WACjBl4D,IAAAA,MAAAA,UAAoB,oCAAoC,CAC1D,IAAMj4C,EAAM,IAAIuwG,YAAY,GAC5BnyD,OAAOC,gBAAgBr+C,GACvB5f,EAAK65C,SAAWj6B,EAAInJ,KAAK,GAC3B,CAEJ,GACF,G;;;;;;;MC9GA,IAAIogD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,wBCL/C,SAAS8wD,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,C,OCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,c,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCanCse,EAAQ,SAAAtG,GAAA,SAAAsG,IAAA,OAAAtG,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAk4D,EAAAtG,GAAA,IAAAW,EAAA2F,EAAApyH,UA4B1B,OA5B0BysH,EAC3BznF,KAAA,WACE,OACE3vB,EAAA,UAAQ8W,UAAU,iBAChB9W,EAAA,OAAK8W,UAAU,aACb9W,EAAA,MAAI8W,UAAU,kBAAkB0xC,IAAUx9D,KAAK29D,QAAQ16C,aAI/D,EAEAmpG,EAKAzuD,MAAA,WACE,IAAMA,EAAQ,IAAIlB,KACZqd,EAAO95E,KAAK0qB,MAAMovD,KASxB,OAPAnc,EAAM7kD,IACJ,QACA9D,EAAA,MAAI8W,UAAU,kBACZ9W,EAACqtC,IAAI,CAACjyB,KAAMopC,IAAAA,MAAUsgB,KAAKA,IAAQA,EAAK3wE,WAIrCw0D,CACT,EAACo0D,CAAA,CA5B0B,CAAS12D,KCPjB22D,EAAQ,SAAApD,GAAA,SAAAoD,IAAA,OAAApD,EAAAn7G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAm4D,EAAApD,GAAA,IAAAxC,EAAA4F,EAAAryH,UAkG1B,OAlG0BysH,EAC3B7pE,OAAA,SAAOH,GACLwsE,EAAAjvH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAObpiD,KAAK85E,KAAO,KAEZ95E,KAAKk6E,WAELl6E,KAAK47D,UAAY,WACnB,EAACwwD,EAEDznF,KAAA,WACE,IAAMm1C,EAAO95E,KAAK85E,KAElB,OACE9kE,EAAA,OAAK8W,UAAWkyC,IAAU,SAAa,MAAJ8b,OAAI,EAAJA,EAAMm4C,WAAY,iBAAkB,UAAa,MAAJn4C,OAAI,EAAJA,EAAMnwD,KAAM,YAAe,MAAJmwD,OAAI,EAAJA,EAAMhb,QAC3G9pD,EAAA,OAAK8W,UAAU,cACZguD,EACG,CACE95E,KAAK26E,OACL3lE,EAAA,OAAK8W,UAAU,6BACb9W,EAAA,OAAK8W,UAAU,aAAa9rB,KAAKo2B,aAGrCssC,IAAAA,UAA2B,CAAE52C,UAAW,6BAIpD,EAEAsgG,EAMA1/G,KAAA,SAAKotE,GACH95E,KAAK85E,KAAOA,EAEZtgB,IAAIlZ,QAAQprC,KAAK,OAAQ4kE,EAAK3wE,SAC9BqwD,IAAIm0B,SAAS7T,EAAK3wE,SAElB6L,EAAEwqC,QACJ,EAEA4sE,EAGAzxC,KAAA,WACE,OAAOo3C,EAASryE,UAAU,CAAEo6B,KAAM95E,KAAK85E,MACzC,EAEAsyC,EAGAh2F,QAAA,WACE,OAAOphB,EAAE6tC,MAAM7iD,KAAK85E,KAAKuS,cAC3B,EAEA+/B,EAKAziG,GAAA,WACE,IAAMA,EAAK3U,EAAEwrC,MAAM3L,MAAM,MAAM9oC,MAAM,KAAK,GAC1C,OAAK0D,MAAMF,SAASoa,IAGX3U,EAAEwrC,MAAM3L,MAAM,MAFdlrB,CAIX,EAEAyiG,EAIAlyC,SAAA,WAAW,IAAA+sB,EAAA,KACHt9E,EAAK3pB,KAAK2pB,KAEVmwF,EAAYtgD,IAAIk0C,uBAChB5zB,GAASp6E,MAAMU,QAAQ05G,IAAcA,GAActgD,IAAImiB,MAAM3vD,QAAQ,QAASrC,GAEhFmwD,EACF95E,KAAK0M,KAAKotE,GAEVn6B,QAAQsF,IAAI,CACVuU,IAAImiB,MAAM96E,KAAK,QAAS8oB,GAAIsN,MAAK,SAACxI,GAChCw4E,EAAKv6F,KAAK+hB,EACZ,IACAzZ,EAAEwqC,UAGR,EAACwyE,CAAA,CAlG0B,CAASr2D,KCDjBu2D,EAAQ,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAA1+G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAq4D,EAAAC,GAAA,IAAA/F,EAAA8F,EAAAvyH,UAqB1B,OArB0BysH,EAC3B7pE,OAAA,SAAOH,GACL+vE,EAAAxyH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEboX,IAAIlZ,QAAQprC,KAAK,WAAYgrD,IAAK,gBAClC1G,IAAIyC,OAAOtvD,OACX6sD,IAAI0C,MAAMC,OACZ,EAACiwD,EAED1/G,KAAA,SAAKotE,GACH95E,KAAK85E,KAAOA,EACZtgB,IAAIm0B,SAAS,IACb34E,EAAEwqC,QACJ,EAAC4sE,EAEDzxC,KAAA,WACE,OAAO6S,IAAAA,UAAoB7S,MAC7B,EAACyxC,EAEDziG,GAAA,WACE,OAAO6vC,IAAI73D,KAAK,iBAClB,EAACuwH,CAAA,CArB0B,CAASF,GCLtC,MAAM,EAA+Bza,OAAOC,KAAK/D,OAAY,I,aCA7D,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCOnC93C,EAAI,SAAA8zD,GAAA,SAAA9zD,IAAA,QAAAsrC,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAUW,OAVX2rE,EAAAwoB,EAAA1vH,KAAA0T,MAAAg8G,EAAA,OAAAtvH,OAAAmZ,KAAA,MACvBnQ,MAAQuyE,IAAAA,UAAgB,SAAQurB,EAChCt1D,KAAO+pC,IAAAA,UAAgB,OAAQA,IAAAA,eAAoBurB,EACnDmrB,SAAW12C,IAAAA,UAAgB,WAAYA,IAAAA,eAAoBurB,EAC3D7wE,QAAUslD,IAAAA,UAAgB,WAAUurB,EACpC5a,YAAc3Q,IAAAA,UAAgB,eAAcurB,EAC5Cr3B,aAAe/mC,IAAS,cAAeq2B,EAAAA,iBAAgB+nC,EACvDnoC,KAAO4c,IAAAA,UAAgB,QAAOurB,EAC9Bh7B,SAAWyP,IAAAA,UAAgB,YAAWurB,EACtCmX,aAAe1iC,IAAAA,UAAgB,gBAAeurB,EAC9CgrB,OAASv2C,IAAAA,UAAgB,UAASurB,CAAA,CA4BjC,OAtCsBptC,EAAA8B,EAAA8zD,GAUW9zD,EAAAh8D,UAElCw+D,OAAA,WACE,IAAMR,EAAQ,IAAIlB,KAwBlB,OAtBIz8D,KAAKisE,YACPtO,EAAM7kD,IACJ,SACAukE,IAAAA,UAAgB,CACdr4E,KAAM,SACNk7D,KAAM,eACNY,MAAOtH,IAAAA,WAAekH,MAAM,oCAK9B1gE,KAAKo+G,gBACPzgD,EAAM7kD,IACJ,aACAukE,IAAAA,UAAgB,CACdr4E,KAAM,aACNk7D,KAAM,qBACNY,MAAOtH,IAAAA,WAAekH,MAAM,wCAK3B/C,CACT,EAAChC,CAAA,CAtCsB,CAAS+f,KCHlCliB,IAAI4yC,aAAatzF,IAAI,aAAa,SAAC0gD,GACjCA,EAAIzY,OAAOsxE,SAAW,CAAEhyE,KAAM,cAAeX,UAAWwyE,GAExD14D,EAAIzY,OAAO+4B,KAAO,CAAEz5B,KAAM,SAAUX,UAAWsyE,GAC/Cx4D,EAAImiB,MAAMqtB,OAAOha,MAAQrzB,EAQzBnC,EAAIhZ,MAAMs5B,KAAO,SAACA,GAChB,OAAOtgB,EAAIhZ,MAAM,OAAQ,CACvB72B,GAAImwD,EAAKnwD,KAAO,IAAMmwD,EAAKhb,QAE/B,CACF,G;;;;;;;MCpBA,IAAItG,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,IACzB0oC,GCLRomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,MCJ3E0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,M,+BCLvD,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,c,MCExDj6C,GAAAA,aAAAA,IAAqB,qCAAqC,eCF1D,MAAM,EAA+B+9C,OAAOC,KAAK/D,OAAe,OCA1D,EAA+B8D,OAAOC,KAAK/D,OAAc,M,aCA/D,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,e,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,GAGFomD,EAAgBpmD,EAAG7G,GCLb,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GCJ3B,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,e,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kB,aCAnB8D,OAAOC,KAAK/D,OAAO,qBAAxD,MCAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCOnC6e,EAAAA,SAAAA,G,oFACnB/vE,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAN,UAAaH,GAGbpiD,KAAKuyH,cAAgBvyH,KAAK0qB,MAAMk+F,MAAQ5oH,KAAK0qB,MAAMk+F,MAAMA,QAAU,KAGnE5oH,KAAK8sD,KAAO9sD,KAAK0qB,MAAMk+F,MAAQ5oH,KAAK0qB,MAAMk+F,MAAM97D,OAAS9sD,KAAK0qB,MAAMoiC,KAGpE9sD,KAAKwyH,cAAe,EAGpBxyH,KAAK4oH,MAAQ5oH,KAAK0qB,MAAMk+F,MAAQ5oH,KAAK0qB,MAAMk+F,MAAQpvD,IAAImiB,MAAMytB,aAAa,cAG1EppG,KAAK20E,YAAcvnB,IAAOptD,KAAK4oH,MAAMj0C,eAGrC30E,KAAKyyH,WAAa,GAElBzyH,KAAK0yH,oBAAsB,GAE3B1yH,KAAK0+D,SAAU,EAGV1+D,KAAK0qB,MAAMk+F,QACd5oH,KAAK0+D,SAAU,EAEflF,IAAImiB,MACD96E,KAAK,SAAU,CACdwgF,QAAS,aAEVpqD,MAAK,SAACknC,GACLA,EAAOxnD,SAAQ,SAACiyG,GAEd,GAAIA,EAAM+J,WAAY,CACpB,IAAMA,EAAW/J,EAAM+J,WAElB,EAAKF,WAAWE,EAAShpG,MAM5B,EAAK8oG,WAAWE,EAAShpG,MAAMw0C,OAAOjpD,KAAK0zG,GAL3C,EAAK6J,WAAWE,EAAShpG,MAAQ,CAC/BgpG,SAAAA,EACAx0D,OAAQ,CAACyqD,SAQb,EAAK8J,oBAAoBx9G,KAAK0zG,MAIlC,EAAKlqD,SAAU,EAGf1pD,EAAEwqC,c,EAKV1zB,UAAA,WACE,MAAO,2B,EAGT3iB,MAAA,WACE,OAAOqwD,IAAIiH,WAAWC,MAAf,uCAA2D1gE,KAAK4oH,MAAMhtC,OAAS,SAAW,QAA1F,W,EAGTxlD,QAAA,WACE,OACE,aACE,SAAKtK,UAAU,cACb,SAAKA,UAAU,QAAQ9rB,KAAK0nE,SAASzkD,YAGvC,SAAK6I,UAAU,gBACb,EAAC,IAAD,CAAQA,UAAW,yBAA0B9mB,KAAM,SAAU05D,QAAS1+D,KAAK0+D,QAAS11C,SAAUhpB,KAAKwyH,cAChGh5D,IAAIiH,WAAWC,MAAM,8C,EAOhCgH,OAAA,WAAS,WACD/J,EAAQ,IAAIlB,KAkFlB,OA/EAkB,EAAM7kD,IACJ,QACA,SAAKgT,UAAU,sBACb,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,oDAG3B,SAAK50C,UAAW,UACd,YACE/kB,MAAO/G,KAAKuyH,cAAgBvyH,KAAKuyH,cAAc5oG,KAAO,QACtDX,WAAYhpB,KAAK0qB,MAAMk+F,MACvB7vD,SAAU,SAACx1D,GACc,UAAnBA,EAAE5C,OAAOoG,QACb,EAAKwrH,cAAgB/4D,IAAImiB,MAAM3vD,QAAQ,SAAUzoB,EAAE5C,OAAOoG,OAG1D,EAAK6rH,kBAAkB,EAAKL,iBAE9BzmG,UAAU,4BAEV,YAAQ/kB,MAAO,SAAUyyD,IAAIiH,WAAWC,MAAM,qDAG5C1gE,KAAK0qB,MAAMk+F,OACXnnG,OAAOmd,OAAO5+B,KAAKyyH,YAAY7qH,KAAI,gBAAG+qH,EAAH,EAAGA,SAAUx0D,EAAb,EAAaA,OAAb,OACjC,cAAU2C,MAAO6xD,EAAS9/G,QACvBsrD,EAAOv2D,KAAI,SAACghH,GAAD,OACV,YAAQ7hH,MAAO6hH,EAAMj/F,MAAOi/F,EAAM/1G,gBAKxC7S,KAAK0qB,MAAMk+F,OAAS5oH,KAAK0yH,oBAAoBjuH,QAAU,GACvD,cAAUq8D,MAAOtH,IAAIiH,WAAWC,MAAM,qDACnC1gE,KAAK0yH,oBAAoB9qH,KAAI,SAACghH,GAAD,OAC5B,YAAQ7hH,MAAO6hH,EAAMj/F,MAAOi/F,EAAM/1G,cAMrC7S,KAAK0qB,MAAMk+F,OAAS,YAAQ7hH,MAAO/G,KAAKuyH,cAAc5oG,MAAO3pB,KAAKuyH,cAAc1/G,SAErF,OAAGggH,MAAM,yCAGV7yH,KAAKwyH,cAAgB,OAAG1mG,UAAW,gBAAiB0tC,IAAIiH,WAAWC,MAAM,uDAE5E,IAIF/C,EAAM7kD,IACJ,oBACA,SAAKgT,UAAW,sBACd,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,wDAAzB,MAEF,WAAI1gE,KAAKuyH,cAAgBvyH,KAAKuyH,cAAc59C,cAAgBnb,IAAIiH,WAAWC,MAAM,qDAEnF,IAIF/C,EAAM7kD,IACJ,cACA,SAAKgT,UAAU,sBACb,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,6DAE3B,cACE50C,UAAU,cACV84C,YAAapL,IAAIiH,WAAWC,MAAM,2DAClC7H,KAAM74D,KAAK20E,eAGf,IAGKhX,G,EAGTi1D,kBAAA,SAAkBhK,GAChB,IAAIkK,GAAa,EAEjB9yH,KAAK8sD,KAAKimE,aAAanrH,KAAI,SAACorH,GACtBA,EAAUpK,SAAWA,IACvBkK,GAAa,MAIjB9yH,KAAKwyH,aAAeM,EAEpB99G,EAAEwqC,U,EAGJ0lB,SAAA,SAAS3hE,GAAG,WACVA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf1+D,KAAK4oH,MACF1gD,KAAK,CACJyM,YAAa30E,KAAK20E,cAClB1M,cAAejoE,KAAK0qB,MAAMk+F,MACtB,GACA,CACEA,MAAO5oH,KAAKuyH,cACZzlE,KAAM9sD,KAAK8sD,QAGlB71B,MACC,WAEM,EAAKvM,MAAMk+F,MACbpvD,IAAI0C,MAAMxvD,KAAKumH,EAAY,CACzBrK,MAAO,EAAKl+F,MAAMk+F,MAAMA,QACxBsK,cAAe,EAAKxoG,MAAMk+F,QAG5B,EAAKj8G,OAGPqI,EAAEwqC,YAEJ,SAAC1F,GACC,EAAK4kB,SAAU,EACf,EAAKy0D,aAAar5E,O,EA1NPw4E,CAAuBzpD,KCAvBoqD,EAAAA,SAAAA,G,oFACnB1wE,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK0+D,SAAU,G,EAGjB5yC,UAAA,WACE,MAAO,gB,EAGT3iB,MAAA,WACE,OAAOqwD,IAAIiH,WAAWC,MAAM,yD,EAG9BtqC,QAAA,WAAU,WACR,OACE,aACE,SAAKtK,UAAU,cAAc9rB,KAAK2B,OAAOshB,WACzC,SAAK6I,UAAU,gBACb,EAAC,IAAD,CACEsE,KAAMopC,IAAIhZ,MAAM,cAAe,CAC7B72B,GAAI3pB,KAAK0qB,MAAMk+F,MAAMj/F,OAEvBmC,UAAW,SACX/Y,MAAO,CACL+5B,OAAQ,WAGT0sB,IAAIiH,WAAWC,MAAM,2DAGvB1gE,KAAK0qB,MAAMwoG,eAAiB15D,IAAI2J,MAAMC,UAAU,iBAC/C,EAAC,IAAD,CACEt3C,UAAW,yBACXw2B,QAAS,WACHsqB,QAAQpT,IAAIiH,WAAWC,MAAM,yEAC/B,EAAKhC,SAAU,EACf,EAAKh0C,MAAMwoG,cAAX,SAAkCj8F,MAAK,kBAAM,EAAKtqB,YAGtD+xD,QAAS1+D,KAAK0+D,SAEblF,IAAIiH,WAAWC,MAAM,kE,EAQlC/+D,KAAA,WAAO,WACCg8D,EAAQ,IAAIlB,KAiHlB,OA9GAkB,EAAM7kD,IACJ,OACA,SAAKgT,UAAW,sBACd,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,iDAAzB,MAEF,WAAI1gE,KAAK0qB,MAAMk+F,MAAM/1G,UAKzB8qD,EAAM7kD,IACJ,cACA,SAAKgT,UAAW,sBACd,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,wDAAzB,MAEF,WAAI1gE,KAAK0qB,MAAMk+F,MAAMj0C,iBAKrB30E,KAAK0qB,MAAMwoG,gBAAkBlzH,KAAK0qB,MAAMwoG,cAAcv+C,eAAiBnb,IAAI2J,MAAMC,UAAU,kBAC7FzF,EAAM7kD,IACJ,iBACA,SAAKgT,UAAW,sBACd,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,2DAAzB,MAGF,WACG1gE,KAAK0qB,MAAMwoG,cAAcv+C,cACxB30E,KAAK0qB,MAAMwoG,cAAcv+C,cAEzB,WAAInb,IAAIiH,WAAWC,MAAM,gEAG7B,WACGlH,IAAI2J,MAAMC,UAAU,iBACnB,OACEhzC,KAAM,IACNkyB,QAAS,SAAC/+C,GACRA,EAAEmC,iBACF8zD,IAAI0C,MAAMxvD,KAAK4lH,EAAgB,CAC7B1J,MAAO,EAAKl+F,MAAMwoG,kBAIrB15D,IAAIiH,WAAWC,MAAM,sEAS9B1gE,KAAK0qB,MAAMwoG,eACbv1D,EAAM7kD,IACJ,cACA,SAAKgT,UAAW,sBACd,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,sDAAzB,MAEF,WAAI8qB,IAASxrF,KAAK0qB,MAAMwoG,cAAcE,iBAMxCpzH,KAAK0qB,MAAMwoG,eACbv1D,EAAM7kD,IACJ,WACA,SAAKgT,UAAW,sBACd,WACE,WAAI0tC,IAAIiH,WAAWC,MAAM,qDAAzB,MAEF,WACG1gE,KAAK0qB,MAAMk+F,MAAM+J,YAAc3yH,KAAK0qB,MAAMk+F,MAAM+J,WAAW9/G,QAG1D7S,KAAK0qB,MAAMk+F,MAAM+J,YAAcn5D,IAAIiH,WAAWC,MAAM,uDAgB1D1gE,KAAK0qB,MAAMk+F,OAAS5oH,KAAK0qB,MAAMk+F,MAAMyK,gBACvC11D,EAAM7kD,IACJ,gBACA,SAAKgT,UAAW,sBACd,WACG0tC,IAAIiH,WAAWC,MAAM,wDAAyD,CAC7EjqD,MAAOzW,KAAK0qB,MAAMk+F,MAAMyK,oBAO3B11D,G,EArKUs1D,CAAmBpqD,KCHnBwU,EAAAA,SAAAA,G,4EAcnBjB,YAAA,WACE,MAAO,WAAap8E,KAAK47E,OAAS,IAAM57E,KAAK2B,KAAKgoB,GAAK,K,EAftC0zD,CAAci2C,IAAM53C,IAAO,CAC9C7oE,KAAM6oE,IAAAA,UAAgB,QACtBxb,KAAMwb,IAAAA,UAAgB,QACtB63C,MAAO73C,IAAAA,UAAgB,SACvB5qD,MAAO4qD,IAAAA,UAAgB,SACvB/G,YAAa+G,IAAAA,UAAgB,eAC7B3J,UAAW2J,IAAAA,UAAgB,aAC3B1M,UAAW0M,IAAAA,UAAgB,aAC3B23C,aAAc33C,IAAAA,UAAgB,gBAC9Bi3C,SAAUj3C,IAAAA,OAAa,YACvB1pB,gBAAiB0pB,IAAAA,UAAgB,mBACjC83C,UAAW93C,IAAAA,UAAgB,aAC3B+3C,WAAY/3C,IAAAA,UAAgB,iBCbTg4C,EAAAA,SAAAA,G,4EAUnBt3C,YAAA,WACE,MAAO,qBAAuBp8E,KAAK47E,OAAS,IAAM57E,KAAK2B,KAAKgoB,GAAK,K,EAXhD+pG,CAAsBJ,IAAM53C,IAAO,CACtD7oE,KAAM6oE,IAAAA,UAAgB,QACtB63C,MAAO73C,IAAAA,UAAgB,SACvB/G,YAAa+G,IAAAA,UAAgB,eAC7Bi4C,UAAWj4C,IAAAA,UAAgB,aAC3B1M,UAAW0M,IAAAA,UAAgB,aAC3Bk4C,QAASl4C,IAAAA,UAAgB,WACzB4wB,MAAO5wB,IAAAA,QAAc,SACrBvd,OAAQud,IAAAA,QAAc,aCRHm4C,EAAAA,SAAAA,G,4EAQnBz3C,YAAA,WACE,MAAO,gBAAkBp8E,KAAK47E,OAAS,IAAM57E,KAAK2B,KAAKgoB,GAAK,K,EAT3CkqG,CAAkBP,IAAM53C,IAAO,CAClD5uB,KAAM4uB,IAAAA,OAAa,QACnBktC,MAAOltC,IAAAA,OAAa,SACpB/G,YAAa+G,IAAAA,UAAgB,eAC7BihC,UAAWjhC,IAAAA,UAAgB,aAC3B03C,WAAY13C,IAAAA,UAAgB,cAC5Bo4C,WAAYp4C,IAAAA,UAAgB,iBCT9B,MAAM,EAA+B67B,OAAOC,KAAK/D,OAAO,+B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCInCogB,EAAAA,SAAAA,G,oFACnBtxE,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAKoS,SAAiC,IAAvBpS,KAAK0qB,MAAMtY,QAC1BpS,KAAK+zH,iBAAiD,IAA/B/zH,KAAK0qB,MAAMqpG,iB,EAGpCpvF,KAAA,WAEE,OAAK3kC,KAAK0qB,MAAMk+F,MAAM72C,aAAgB/xE,KAAK+zH,iBAKtB,IAAjB/zH,KAAKoS,QAA0BpS,KAAK4oH,QAEjC,EAAC,IAAD,CAASr4G,KAAI,IAAKvQ,KAAK0qB,MAAMk+F,MAAMj0C,cAAgB30E,KAAK0qB,MAAMk+F,MAAMj0C,cAAgB,KAAO30E,KAAK4oH,SAN9F,M,EASXA,MAAA,WAAQ,WACAoL,GAAkBh0H,KAAK0qB,MAAMk+F,MAAM72C,aAAe/xE,KAAK+zH,gBAG7D,OAAI/zH,KAAK0qB,MAAMk+F,MAAM93F,QAEjB,SACE1O,IAAKpiB,KAAK0qB,MAAMk+F,MAAM93F,QACtBhF,UAAW,iBACXw2B,QAAS,WACH,EAAK53B,MAAM43B,SACb,EAAK53B,MAAM43B,WAGfvvC,MAAO,CACL05B,QAASunF,EAAiB,QAAMlhH,KAOtC,UACEgZ,UAAS,uBAAyB9rB,KAAK0qB,MAAMk+F,MAAMj/F,KACnD24B,QAAS,WACH,EAAK53B,MAAM43B,SACb,EAAK53B,MAAM43B,WAGfvvC,MAAO,CACLi/C,gBAAiBhyD,KAAK0qB,MAAMk+F,MAAM52D,kBAClC36C,MAAOrX,KAAK0qB,MAAMk+F,MAAM6K,aACxBQ,YAAaj0H,KAAK0qB,MAAMk+F,MAAM52D,kBAC9BvlB,QAASunF,EAAiB,QAAMlhH,IAGlC,OAAGgZ,UAAW9rB,KAAK0qB,MAAMk+F,MAAM1oD,OAAQntD,MAAO,CAAEsE,MAAOrX,KAAK0qB,MAAMk+F,MAAM4K,eAd1E,IAc6FxzH,KAAK0qB,MAAMk+F,MAAM/1G,S,EAxD/FghH,CAAkBx4D,KCJxB,SAAS64D,EAAqBpnE,GAC3C,IAAM2lE,EAAa,GACb0B,EAAgB,GAEtBrnE,EAAKimE,aAAanrH,KAAI,SAACorH,GACrB,IAAKA,EAAW,OAAO,KAGvB,GAAIA,EAAUpK,QAAQ+J,WAAY,CAChC,IAAMA,EAAWK,EAAUpK,QAAQ+J,WAE9BF,EAAWE,EAAShpG,MAOvB8oG,EAAWE,EAAShpG,MAAMw0C,OAAOjpD,KAAK89G,GANtCP,EAAWE,EAAShpG,MAAQ,CAC1B9W,KAAM8/G,EAAS9/G,OACf8/G,SAAAA,EACAx0D,OAAQ,CAAC60D,SAQbmB,EAAcj/G,KAAK89G,MAKvB,IAAIoB,EAAmB3yG,OAAOvB,KAAKuyG,GAChC/8G,MAAK,SAAChM,EAAGE,GAAJ,OAAU6oH,EAAW/oH,GAAGipH,SAASY,QAAUd,EAAW7oH,GAAG+oH,SAASY,WACvE3rH,KAAI,SAAC+qH,GAAD,OAAcF,EAAWE,MAWhC,OARIwB,EAAc1vH,QAAU,GAC1B2vH,EAAiBl/G,KAAK,CACpBrC,KAAM2mD,IAAIiH,WAAWC,MAAM,oDAC3BiyD,SAAU,KACVx0D,OAAQg2D,IAILC,E,ICpCYC,EAAAA,SAAAA,G,4EACnB1vF,KAAA,WACE,IAAM8tF,EAAayB,EAAqBl0H,KAAK0qB,MAAMoiC,MAEnD,OACE,SAAKhhC,UAAU,cACU,IAAtB2mG,EAAWhuH,QACV,SAAKqnB,UAAW,eACd,WAAI0tC,IAAIiH,WAAWC,MAAM,uDAI5B+xD,EAAWhuH,QAAU,GACpBguH,EAAW7qH,KAAI,YAAgC,IAA7BiL,EAA6B,EAA7BA,KAAM8/G,EAAuB,EAAvBA,SAAUx0D,EAAa,EAAbA,OAChC,OAAIw0D,IAAaA,EAASgB,YAAoB,KAG5C,SAAK7nG,UAAW,sBACd,YAAKjZ,GAEJ8/G,GAAYA,EAASh+C,eAAiB,WAAIg+C,EAASh+C,eAEnDxW,EACEzoD,MAAK,SAAChM,EAAGE,GAAJ,OAAUF,EAAEk/G,QAAQ2K,QAAU3pH,EAAEg/G,QAAQ2K,WAC7C3rH,KAAI,SAACorH,GAAD,OACH,EAAC,EAAD,CACEpK,MAAOoK,EAAUpK,QACjBtmE,QAAS,kBACPkX,IAAI0C,MAAMxvD,KAAKumH,EAAY,CACzBrK,MAAOoK,EAAUpK,QACjBsK,cAAeF,gB,EA9BpBqB,CAAsBh5D,KCDtBi5D,EAAAA,SAAAA,G,oFACnB/xE,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK8sD,KAAO,KAEZ9sD,KAAK0+D,SAAU,EAEf1+D,KAAKqpF,SAASr0E,EAAEwrC,MAAM3L,MAAM,c,EAG9Bze,QAAA,WACE,OAAKp2B,KAAK8sD,MAAQ9sD,KAAK0+D,QACd,EAAC,IAAD,CAAkB7oD,KAAM,KAG1Bw+G,EAAc30E,UAAU,CAC7BoN,KAAM9sD,KAAK8sD,Q,EAIfpgD,KAAA,SAAKogD,GAAM,WACT,YAAMpgD,KAAN,UAAWogD,GACX9sD,KAAK8sD,KAAOA,EAEZ0M,IAAImiB,MACD96E,KAAK,QAASisD,EAAKnjC,KAAM,CACxB03D,QAAS,0DAEVpqD,MAAK,WACJ,EAAKynC,SAAU,EACf1pD,EAAEwqC,a,EA/BW80E,CAA0BrrC,KCJ/C,MAAM,EAA+BsuB,OAAOC,KAAK/D,OAAO,mB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,wB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mB,aCInC8gB,EAAAA,SAAAA,G,4EACnB5vF,KAAA,WACE,IAAK3kC,KAAK0qB,MAAMyzC,OACd,OAAO,KAGT,IAAMA,EAASn+D,KAAK0qB,MAAMyzC,OAE1B,OACE,WAAOvvD,MAAO,OAAQkd,UAAW,cAC/B,eACE,YACE,QAAI9B,MAAM,OAAOwvC,IAAIiH,WAAWC,MAAM,oDACtC,QAAI12C,MAAM,OAAOwvC,IAAIiH,WAAWC,MAAM,2DAG1C,eACGvC,EAAOv2D,KAAI,SAACghH,GACX,OACE,YACE,YACE,EAAC,IAAD,CAAMx4F,KAAMopC,IAAIhZ,MAAM,cAAe,CAAE72B,GAAIi/F,EAAMj/F,QAC/C,EAAC,EAAD,CAAWi/F,MAAOA,EAAOx2G,SAAS,MAGtC,YACGw2G,EAAMj0C,cAEP,SAAK7oD,UAAW,sBACb0tC,IAAIiH,WAAWC,MAAM,wDAAyD,CAC7EjqD,MAAOmyG,EAAMyK,0B,EA9BdkB,CAAkBl5D,KCAlBm5D,EAAAA,SAAAA,G,4EACnB7vF,KAAA,WACE,IAAK3kC,KAAK0qB,MAAMyzC,OACd,OAAO,KAGT,IAAMA,EAASn+D,KAAK0qB,MAAMyzC,OAE1B,OACE,QAAIryC,UAAW,qBACZqyC,EAAOv2D,KAAI,SAACghH,GACX,OACE,YACE,EAAC,IAAD,CAAMx4F,KAAMopC,IAAIhZ,MAAM,cAAe,CAAE72B,GAAIi/F,EAAMj/F,OAASmC,UAAW,kBACnE,SAAKA,UAAW,sBACd,EAAC,EAAD,CAAW88F,MAAOA,EAAOx2G,SAAS,IAElC,OAAG0Z,UAAW,oBAAqB88F,EAAMj0C,eAEzC,WACGnb,IAAIiH,WAAWC,MAAM,wDAAyD,CAC7EjqD,MAAOmyG,EAAMyK,0B,EArBdmB,CAAsBn5D,KCGtBo5D,GAAAA,SAAAA,G,oFACnBlyE,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK47D,UAAY,aAEjB57D,KAAK0+D,SAAU,EAEflF,IAAIlZ,QAAQprC,KAAK,qBAEjBskD,IAAIm0B,SAASn0B,IAAIiH,WAAWC,MAAM,oDAGlClH,IAAImiB,MAAM96E,KAAK,oBAAoBo2B,MAAK,WACtC,EAAKynC,SAAU,EAEf1pD,EAAEwqC,a,EAIN7a,KAAA,WACE,IAAM8tF,EAAaj5D,IAAImiB,MAAM12B,IAAI,mBAAmBvvC,MAAK,SAAChM,EAAGE,GAAJ,OAAUF,EAAE6pH,QAAU3pH,EAAE2pH,WAEjF,OACE,SAAKznG,UAAU,aACZ0hE,IAAAA,UAAAA,OAED,SAAK1hE,UAAU,aACb,SAAKA,UAAU,oBACb,SAAKA,UAAU,yBACb,YAAK0xC,IAAUgwB,IAAAA,UAAAA,eAAmCvqE,aAEpD,SAAK6I,UAAU,mCACb,QAAIA,UAAW,sBAAuB0tC,IAAIiH,WAAWC,MAAM,oDAE1D1gE,KAAK0+D,SAAW,EAAC,IAAD,CAAkB7oD,KAAM,WAEvC7V,KAAK0+D,SACL+zD,EAAW7qH,KAAI,SAAC+qH,GACd,IAAMx0D,EAASw0D,EAASx0D,SAASzoD,MAAK,SAAChM,EAAGE,GAAJ,OAAUF,EAAE6pH,QAAU3pH,EAAE2pH,WAE9D,OACE,SAAKznG,UAAW,iBACd,YAAK6mG,EAAS9/G,QACb8/G,EAASh+C,eAAiB,WAAIg+C,EAASh+C,eAEvCg+C,EAASiB,WAAa,EAACW,EAAD,CAAWp2D,OAAQA,KAExCw0D,EAASiB,WAAa,EAACY,EAAD,CAAer2D,OAAQA,a,EAhDhDs2D,CAA2B94D,KCPhD,MAAM,GAA+B47C,OAAOC,KAAK/D,OAAO,kB,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,qB,eCOnCihB,GAAAA,SAAAA,G,oFACnBnyE,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAGbpiD,KAAK0qB,MAAM2N,MAAMs3D,cAAc,CAC7B7oF,OAAQ,CACN8hH,MAAO5oH,KAAK0qB,MAAMiqG,SAEpBj/G,KAAM,iB,EAIVivB,KAAA,WACE,IAAMtM,EAAQr4B,KAAK0qB,MAAM2N,MAErBqmC,EAAU,KAkBd,OAhBIrmC,EAAM63C,oBAAsB73C,EAAM83C,gBACpCzR,EAAUgE,IAAAA,UAA2B,CACnC7sD,KAAM,UAECwiB,EAAM+3C,YACf1R,EAAU+E,IAAAA,UACR,CACE33C,UAAW,SACXo0C,KAAM,sBACN5d,QAASjqB,EAAMg4C,SAAS3gC,KAAKrX,IAE/BmhC,IAAIiH,WAAWC,MAAM,iDAKrBroC,EAAM63C,oBAAsB73C,EAAMguB,UAC7B,EAAC,IAAD,MAILhuB,EAAMguB,UACD,SAAKv6B,UAAW,uBAAwB0tC,IAAIiH,WAAWC,MAAM,mDAIpE,aACE,QAAI50C,UAAW,iBACZuM,EAAMm4C,WAAW5oE,KAAI,SAAC6oE,GACrB,OAAOA,EAAG9S,MAAM/1D,KAAI,SAACorH,GACnB,OACE,YACE,EAAC,IAAD,CACE5iG,KAAMopC,IAAIhZ,MAAM,cAAe,CAC7BhF,SAAUw3E,EAAUlmE,OAAOtR,aAE7B1vB,UAAW,sBAEV2yC,KAAOu0D,EAAUlmE,QAElB,SAAKhhC,UAAW,0BACd,YAAKknG,EAAUlmE,OAAO6J,eAEtB,WACG6C,IAAIiH,WAAWC,MAAM,uDAAwD,CAC5EhoD,KAAM0nD,KAAU4yD,EAAUI,2BAW3C10D,GAAW,SAAK5yC,UAAU,8BAA8B4yC,K,EA1E5Cg2D,CAAsBr5D,KCAtBu5D,GAAAA,SAAAA,G,oFACnBryE,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK47D,UAAY,aAEjB,IAAMi5D,EAAQr7D,IAAImiB,MAAM3vD,QAAQ,SAAUhX,EAAEwrC,MAAM3L,MAAM,OAExD70C,KAAK0+D,SAAWm2D,EAEXA,GAYHr7D,IAAIlZ,QAAQprC,KAAK,gBAAiB2/G,EAAMhiH,QAExC7S,KAAK2tF,SAASknC,IAZdr7D,IAAImiB,MAAM96E,KAAV,UAAyBmU,EAAEwrC,MAAM3L,MAAM,OAAS5d,MAAK,SAAC2xF,GACpD,EAAKlqD,SAAU,EAEflF,IAAIlZ,QAAQprC,KAAK,gBAAiB0zG,EAAM/1G,QAExC,EAAK86E,SAASi7B,GAEd5zG,EAAEwqC,a,EASRmuC,SAAA,SAASi7B,GACPpvD,IAAIm0B,SAAYi7B,EAAM/1G,OAAtB,MAAkC2mD,IAAIiH,WAAWC,MAAM,qD,EAGzD/7B,KAAA,WACE,IAAMikF,EAAQpvD,IAAImiB,MAAM3vD,QAAQ,SAAUhX,EAAEwrC,MAAM3L,MAAM,OAExD,OACE,SAAK/oB,UAAU,aACZ0hE,IAAAA,UAAAA,OAED,SAAK1hE,UAAU,aACb,SAAKA,UAAU,oBACb,SAAKA,UAAU,yBACb,YAAK0xC,IAAUgwB,IAAAA,UAAAA,eAAmCvqE,aAEpD,SAAK6I,UAAU,mCACb,EAAC,IAAD,CAAYsE,KAAMopC,IAAIhZ,MAAM,UAAW0f,KAAM,sBAAuBp0C,UAAW,+BAC5E0tC,IAAIiH,WAAWC,MAAM,oDAGvB1gE,KAAK0+D,SAAW,EAAC,IAAD,CAAkB7oD,KAAM,WAEvC7V,KAAK0+D,SACL,SAAK5yC,UAAW,qBACd,OAAGA,UAAW88F,EAAM1oD,SAEpB,SAAKp0C,UAAW,0BACd,YAAK88F,EAAM/1G,QACX,WAAI+1G,EAAMj0C,iBAKfi0C,GACC,YACGpvD,IAAIiH,WAAWC,MAAM,2DAA4D,CAChFjqD,MAAOmyG,EAAMyK,mBAKjBrzH,KAAK0+D,SAAWlF,IAAI2J,MAAMC,UAAU,8BACpC,EAACsxD,GAAD,CAAer8F,MAAOmhC,IAAIs7D,mBAAoBH,QAAS/L,EAAMj/F,Y,EAvExDirG,CAAsBj5D,KCH5B,SAASo5D,MACtBt0H,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,SAAU7vB,GAShD,OARAA,EAAM7kD,IACJ,SACA,EAAC,IAAD,CAAYonD,KAAK,kBAAkB9vC,KAAMopC,IAAIhZ,MAAM,WAChDgZ,IAAIiH,WAAWC,MAAM,oDAExB,IAGK/C,KCdX,SAAStL,GAAkB1xD,EAAQiP,GACjC,IAAK,IAAI3I,EAAI,EAAGA,EAAI2I,EAAMnL,OAAQwC,IAAK,CACrC,IAAIqrD,EAAa1iD,EAAM3I,GACvBqrD,EAAW/uB,WAAa+uB,EAAW/uB,aAAc,EACjD+uB,EAAWn2B,cAAe,EACtB,UAAWm2B,IAAYA,EAAW7uB,UAAW,GACjDhiB,OAAOya,eAAev7B,EAAQ2xD,EAAWxlD,IAAKwlD,ICNlD,MAAM,GAA+BilD,OAAOC,KAAK/D,OAAO,oC,ICEnCuhB,GAAAA,SAAAA,GACnB,WAAY/3E,EAAQ68B,GAAU,gBAAVA,IAAAA,EAAO,GACzB,YAAM78B,EAAQ68B,EAAM,KADQ,KFOjB,IAAsBh2E,EAAayuD,E,cAAbzuD,E,GAAayuD,E,iBEHhD,WACE,MAAO,mBFGOF,GAAkBvuD,EAAYnE,UAAW4yD,G,EETtCyiE,C,OAA2BjmC,ICFhD,MAAM,GAA+BwoB,OAAOC,KAAK/D,OAAO,iC,ICEnCwhB,GAAAA,SAAAA,G,oFACnB/0D,KAAA,WACE,MAAO,I,EAGT9vC,KAAA,WACE,OAAOopC,IAAIhZ,MAAM,cAAe,CAC9BhF,SAAUge,IAAIskB,QAAQhxB,KAAKtR,c,EAI/BplB,QAAA,WACE,OAAOojC,IAAIiH,WAAWC,MAAM,0D,EAG9BiP,QAAA,WACE,IAAM4O,EAAUv+E,KAAK0qB,MAAM4zD,aAAaC,UAExC,OACE,aACE,OAAGzyD,UAAS,QAAUyyD,EAAQqqC,QAAQ1oD,SAErCqe,EAAQqqC,QAAQ/1G,S,EAtBJoiH,C,OAAkCpuC,ICFvD,MAAM,GAA+B0wB,OAAOC,KAAK/D,OAAO,qC,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,a,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,GAA+B8D,OAAOC,KAAK/D,OAAO,6B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,0B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,qB,eCQnCyhB,GAAAA,SAAAA,G,oFACnB3yE,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK0+D,SAAU,EAEf1+D,KAAKohF,MAAQ5nB,IAAI2J,MAAMC,UAAU,4BACjCpjE,KAAKm1H,eAAiBn1H,KAAK0qB,MAAMoiC,KAC9BimE,aACAjsH,QAAO,SAACksH,GAAD,OAAeA,EAAUc,gBAChClsH,KAAI,SAACorH,GAAD,OAAeA,EAAUrpG,S,EAGlCmC,UAAA,WACE,MAAO,kC,EAGT3iB,MAAA,WACE,OAAOqwD,IAAIiH,WAAWC,MAAM,4D,EAG9BtqC,QAAA,WAAU,WACR,OACE,aACE,SAAKtK,UAAU,cAAc9rB,KAAK2B,OAAOshB,WACzC,SAAK6I,UAAU,gBACb,EAAC,IAAD,CAAQA,UAAW,yBAA0Bw2B,QAAS,kBAAM,EAAK4lB,QAAQxJ,QAAS1+D,KAAK0+D,SACpFlF,IAAIiH,WAAWC,MAAM,uD,EAOhC/+D,KAAA,WAAO,WACCg8D,EAAQ,IAAIlB,KAEZg2D,EAAayB,EAAqBl0H,KAAK0qB,MAAMoiC,MA2EnD,OAxEA6Q,EAAM7kD,IACJ,OACA,SAAKgT,UAAW,sBACd,WAAI0tC,IAAIiH,WAAWC,MAAM,kEACzB,WACGlH,IAAIiH,WAAWC,MAAM,iEAAkE,CACtF0gB,MAAO5nB,IAAI2J,MAAMC,UAAU,iCAOnCqvD,EAAW7qH,KAAI,YAAgC,IAA7BiL,EAA6B,EAA7BA,KAAM8/G,EAAuB,EAAvBA,SAAUx0D,EAAa,EAAbA,OAChCR,EAAM7kD,IAAN,mBACoB65G,EAAWA,EAAShpG,KAAO,iBAC7C,SAAKmC,UAAW,+BACd,SAAKA,UAAW,oCAAqCjZ,GAGpDsrD,EACEzoD,MAAK,SAAChM,EAAGE,GAAJ,OAAUF,EAAEk/G,QAAQ2K,QAAU3pH,EAAEg/G,QAAQ2K,WAC7C3rH,KAAI,SAACorH,GACJ,IAAMhqG,EAAW,EAAKmsG,eAAe1wH,QAAU,EAAK28E,QAA0D,IAAjD,EAAK+zC,eAAej0G,QAAQ8xG,EAAUrpG,MAEnG,OACE,EAAC,IAAD,CACEpZ,KACEyY,EACIwwC,IAAIiH,WAAWC,MAAM,8DAA+D,CAClF0gB,MAAO5nB,IAAI2J,MAAMC,UAAU,8BAE7B,GAEN9gE,SAAS,UAET,SACEwpB,UAAW,oCACXw2B,QAAS,WACP,IAAIt5B,EAAJ,CAIA,IAAMwsF,EAAe,EAAK2f,eAAej0G,QAAQ8xG,EAAUrpG,MAGvD6rF,GAAgB,EAClB,EAAK2f,eAAepxG,OAAOyxF,EAAc,GAGzC,EAAK2f,eAAejgH,KAAK89G,EAAUrpG,SAIvC,SAAKmC,UAAW,6CACd,EAAC,EAAD,CAAW88F,MAAOoK,EAAUpK,QAAStmE,QAAS,gBAGhD,SAAKx2B,UAAW,4CACbqlE,KAAAA,UAAiB,CAChB94D,MAAO,EAAK88F,eAAej0G,QAAQ8xG,EAAUrpG,OAAS,EACtDX,SAAAA,eAWb20C,G,EAGTuK,KAAA,WAAO,WACLloE,KAAK0+D,SAAU,EAEf1+D,KAAK0qB,MAAMoiC,KACRob,KAAK,CAAEktD,eAAgBp1H,KAAKm1H,iBAC5Bl+F,MAAK,WAEJ,EAAKvM,MAAMoiC,KAAKimE,aAAanrH,KAAI,SAACorH,GAChCA,EAAUj3C,eAAe,CACvB+3C,WAAY,EAAKqB,eAAej0G,QAAQ8xG,EAAUrpG,OAAS,OAI/D,EAAKhd,UAVT,OAYS,eACNsqB,MAAK,WACJ,EAAKynC,SAAU,EACf1pD,EAAEwqC,a,EArIW01E,CAAkCrsD,KCRvD,MAAM,GAA+B0uC,OAAOC,KAAK/D,OAAO,oC,eCqBxDj6C,IAAI4yC,aAAatzF,IAAI,gCAAgC,SAAC0gD,GACpDA,EAAImiB,MAAMqtB,OAAO7qC,OAASkf,EAC1B7jB,EAAImiB,MAAMqtB,OAAOqsB,gBAAkB3B,EACnCl6D,EAAImiB,MAAMqtB,OAAO+pB,WAAac,EAE9B5oB,IAAAA,UAAAA,WAA4BvvB,IAAAA,QAAc,cAC1CuvB,IAAAA,UAAAA,iBAAkCvvB,IAAAA,OAAa,oBAG/CliB,EAAIzY,OAAO,eAAiB,CAC1BV,KAAM,sBACNX,UAAW40E,GAIb96D,EAAIzY,OAAOod,OAAS,CAClB9d,KAAM,UACNX,UAAW+0E,IAWbj7D,EAAIzY,OAAO,eAAiB,CAC1BV,KAAM,cACNX,UAAWk1E,IAGbG,KAEAv7D,EAAIs7D,mBAAqB,IAAIE,GAAmB,IAGhDx7D,EAAIi3C,uBAAuB6kB,cAAgBL,IAG3Cx0H,EAAAA,EAAAA,QAAO4wF,KAAAA,UAA4B,qBAAqB,SAAU1zB,GAChEA,EAAM7kD,IAAI,gBAAiB,CACzBjG,KAAM,gBACNqtD,KAAM,kBACNY,MAAOtH,EAAIiH,WAAWC,MAAM,kEAKhCjgE,EAAAA,EAAAA,QAAOwoF,IAAAA,UAAoB,YAAY,SAAUtrB,GAC/CA,EAAM7kD,IACJ,SACAuiE,IAAAA,UACE,CACEjrD,KAAMopC,EAAIhZ,MAAM,cAAe,CAC7BhF,SAAUx7C,KAAK8sD,KAAKtR,aAEtB3oC,KAAM,SACNqtD,KAAM,mBAER,CACE1G,EAAIiH,WAAWC,MAAM,mDACrB,UAAM50C,UAAU,gBAAgB9rB,KAAK8sD,KAAKimE,aAAatuH,UAG3D,QAIJhE,EAAAA,EAAAA,QAAOoqF,IAAc,sBAAsB,SAAUltB,EAAO7Q,GAEtD0M,EAAI2J,MAAMC,UAAU,iBACtBzF,EAAM7kD,IACJ,OACA,EAAC,IAAD,CACEonD,KAAK,kBACL5d,QAAS,kBACPkX,EAAI0C,MAAMxvD,KAAK4lH,EAAgB,CAC7BxlE,KAAMA,MAIT0M,EAAIiH,WAAWC,MAAM,uDC9F9BjgE,EAAAA,GAAAA,QAAOyoF,KAAAA,UAAoB,aAAa,SAAUvrB,GAAO,MAEjD7Q,EAAO9sD,KAAK0qB,MAAMoiC,KAGxB,GAAK0M,KAAAA,MAAAA,UAAoB,yBAA4B1M,EAAKimE,WAA1D,CAEA,IAAMA,EAAU,SAAGjmE,EAAKimE,cAAR,EAAwB,GAGxC,KAAIA,EAAWtuH,OAAS,IAAMsuH,EAA9B,CAEA,IAAM3xC,EAAQ5nB,KAAAA,MAAAA,UAAoB,4BAG9B+7D,EAAgBxC,EAAWjsH,QAAO,SAACksH,GACrC,OAAOA,EAAUc,gBAIU,IAAzByB,EAAc9wH,SAChB8wH,EAAgBxC,EAAWx9G,MAAM,EAAG6rE,IAGtC,IAAMjjB,EAASo3D,EAAc3tH,KAAI,SAACorH,GAChC,OACE,EAAC,EAAD,CACEpK,MAAOoK,EAAUpK,QACjBtmE,QAAS,kBACPkX,KAAAA,MAAAA,KAAey5D,EAAY,CACzBrK,MAAOoK,EAAUpK,QACjBsK,cAAeF,UAOzB,GAAI70D,EAAO15D,OAASsuH,EAAWtuH,OAAQ,CACrC,IAAMgS,EAAQs8G,EAAWtuH,OAAS8wH,EAAc9wH,OAChD05D,EAAOjpD,KACL,EAAC,KAAD,CACEkb,KAAMopC,KAAAA,MAAU,cAAe,CAC7Bhe,SAAUsR,EAAKtR,aAEjB1vB,UAAU,yBAET0tC,KAAAA,WAAAA,MAAqB,uDAAwD,CAAE/iD,MAAAA,OAMjFq2C,IAAS0M,KAAAA,QAAAA,MAAoBA,KAAAA,MAAAA,UAAoB,0BAA6BA,KAAAA,MAAAA,UAAoB,wBACrG2E,EAAOjpD,KACL,EAAC,IAAD,CAAS3E,KAAMipD,KAAAA,WAAAA,MAAqB,oEAClC,OACEppC,KAAM,IACNtE,UAAU,wBACVw2B,QAAS,SAAC/+C,GACRA,EAAEmC,iBACF8zD,KAAAA,MAAAA,KAAe07D,GAA2B,CAAEpoE,KAAAA,MAG9C,OAAGhhC,UAAW,uCAMtB6xC,EAAM7kD,IAAI,SAAUqlD,SDgCtB19D,EAAAA,EAAAA,QAAO0vF,KAAAA,UAA+B,iBAAiB,SAAUlzC,GAGxD,MAFuB,iBAAnBA,EAAOokC,QAChBpkC,EAAOokC,QAAU,CAACpkC,EAAOokC,SAEzB,SAAApkC,EAAOokC,UAAP,EAAgBnsE,KAAK,kBAAmB,gC;;;;;;;2BEnH5C,IAAI60G,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,I,gBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,c,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,kB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,gC,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,4B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,6B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,0B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAc,O,cCA3C/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,6B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,gB,gLCUpCj6C,IAAI4yC,aAAatzF,IACf,iBACA,WACEmyF,IAAKtrG,UAAU61H,cAAgB95C,IAAMtY,UAAU,iBAe/C3iE,iBAAOymF,IAAiBvnF,UAAW,eAAe,SAAUg+D,GAC1DA,EAAM7kD,IACJ,OACA,SAAKgT,UAAU,SACb,SAAKA,UAAU,cACb,YAAK0tC,IAAIiH,WAAWC,MAAM,mEAC1B,WAAIlH,IAAIiH,WAAWC,MAAM,+EAOjCiqC,mBAASx8B,IAAoB,eAAe,SAAU5B,EAAUC,GAAc,WACtE1f,EAAO0M,IAAIskB,QAAQhxB,KAEzB,OAAO,IAAInN,SAAQ,SAAChpB,EAASC,GAC3B,GAAIk2B,EAAM,CACR,GA/BkB,SAACoR,EAAYpR,GACnC,IAAKoR,IAAepR,GAAQA,EAAK0oE,gBAAiB,OAAO,EAEzD,IAAM73C,EAAiBzf,EAAWyf,iBAC5BD,EAAexf,EAAWwf,eAE1B+3C,EAAYj8D,IAAI2J,MAAMC,UAAU,mBAChCsyD,EAAYj8D,MAAMikB,EAAazhE,WAAWnD,IAAI28G,EAAW,UAAU75G,SAAS69C,SAElF,OAAoB,GAAbg8D,IAAoBC,GAAa/3C,GAAkB7wB,EAsBlD6oE,CAAgB,EAAM7oE,GAAO,CAC/B,IAAMqb,EAAO,EAAK/F,WAElB,MAA2B,YAAvB+F,EAAKjxB,eAA+BixB,EAAKkS,WAC3C7gB,IAAIuN,SAASrjC,KAAKwjD,IAAkB,CAAE/e,SACtC3O,IAAIuN,SAASr6D,OAIbrM,EAAE,QAAQQ,KAAK,cAAcwC,IAAI,UAAW,SAErCszB,EAAQ6iC,IAAIuN,YAErBvN,IAAIgzC,OAAO9/F,KAAK87D,IAAO,CAAExjE,KAAM,SAAWw0D,IAAIiH,WAAWC,MAAM,8DAExD9pC,KAGT,OAAI,EAAK+0C,YACFnS,IAAIuN,SAAS8d,iBAAiB,KAASrY,GAC1ChT,IAAIuN,SAASrjC,KAAKskC,IAAe,CAC/Blb,OACAoR,WAAY,IAGhB1E,IAAIuN,SAASr6D,OAET6/D,GAAY/S,IAAIu3C,kBAAkB,KAAUv3C,IAAIuN,SAAS6d,gBAC3DprB,IAAInf,QAAQ99B,IAAI,UAAU6rD,WAAW,SAGhCzxC,EAAQ6iC,IAAIuN,WAEZnwC,IAMX,OAFA4iC,IAAI0C,MAAMxvD,KAAKk+D,KAERh0C,aAIZ;;;;;;;MCxFH,IAAI4hC,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAe,OCA1D,EAA+B8D,OAAOC,KAAK/D,OAAO,e,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAc,M,aCAhD,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCNA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCAzC,SAASmiB,EAAYC,EAAOC,GACzC,QADiD,IAARA,IAAAA,EAAW,GACtC,IAAVD,EAAa,MAAO,UAExB,IACME,EAAKD,EAAW,EAAI,EAAIA,EAGxB7uH,EAAIhE,KAAKwV,MAAMxV,KAAK6rD,IAAI+mE,GAAS5yH,KAAK6rD,IAJlC,OAMV,OAAO9kB,YAAY6rF,EAAQ5yH,KAAKuU,IANtB,KAM6BvQ,IAAI05D,QAAQo1D,IAAO,IAJ5C,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAII9uH,EACxE,CCLmD,IAE9B+uH,EAAgB,SAAAC,GCNtB,IAAwBtjE,EAAUC,EDMZ,SAAAojE,IAAA,OAAAC,EAAAxiH,MAAA,KAAAC,YAAA,KCNYk/C,EDMZqjE,GCNEtjE,EDMFqjE,GCL1Br2H,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDGU,IAAAw5D,EAAA4J,EAAAr2H,UAsIlC,OAtIkCysH,EACnC7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKk2H,QAAUlsF,WAAWwvB,IAAAA,MAAAA,UAAoB,iCAAmC,MAEjFx5D,KAAK8oE,WAAa,CAChB1yC,QAASojC,IAAAA,WAAAA,MAAqB,mCAAoC,CAAE3jD,KAAM+/G,EAAY51H,KAAKk2H,QAAUjzH,KAAKuU,IAAI,EAAG,QAGnHxX,KAAK0+D,SAAU,EACf1+D,KAAKm2H,MAAQn2H,KAAK0qB,MAAMoiC,KAAKspE,mBAAqBp2H,KAAK0qB,MAAMoiC,KAAKqpE,QAClEn2H,KAAK6T,QAAU,EACjB,EAACu4G,EAEDh2F,QAAA,WACE,IAAI1L,EAAQ,CAAC,EACToB,EAAY,gCAOhB,OALI9rB,KAAKm2H,QACPzrG,EAAM3X,MAAQ,CAAEsjH,gBAAiB,OAAOr2H,KAAKm2H,MAAK,KAClDrqG,GAAa,uBAGR,CACL9W,EAAA,MAAAyM,OAAAs+B,OAAA,CAAKj0B,UAAWA,GAAepB,GAC5B1qB,KAAK0+D,QAAU1pD,EAAC0tD,IAAgB,MAAM,IAGzC1tD,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,QAAQ9rB,KAAKs2H,cAAcrzG,YAGhD,EAACmpG,EAEDtgG,UAAA,WACE,MAAO,0BACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,uCAC9B,EAAC4yD,EAEDkK,YAAA,WACE,IAAM34D,EAAQ,IAAIlB,KAIlB,OAFAkB,EAAM7kD,IAAI,UAAW9Y,KAAK6mE,eAAe5jD,WAElC06C,CACT,EAACyuD,EAEDvlD,aAAA,WACE,IAAMlJ,EAAQ,IAAIlB,KAgBlB,OAdAkB,EAAM7kD,IACJ,SACA9D,EAACyuD,IAAM,CAACvD,KAAK,gBAAgBp0C,UAAU,SAASw2B,QAAStiD,KAAKuqF,WAAW76C,KAAK1vC,OAC3Ew5D,IAAAA,WAAAA,MAAqB,0CAI1BmE,EAAM7kD,IACJ,SACA9D,EAACyuD,IAAM,CAACvD,KAAK,eAAep0C,UAAU,SAASw2B,QAAStiD,KAAK6E,OAAO6qC,KAAK1vC,OACtEw5D,IAAAA,WAAAA,MAAqB,0CAInBmE,CACT,EAACyuD,EAED7hC,WAAA,WAAa,IAAA0c,EAAA,KACG5mG,EAAE,uBAGb6N,SAAS,QACTvB,OACAlB,QACA1K,GAAG,UAAU,SAACwC,GACb0jG,EAAKzc,OAAOnqF,EAAEkD,EAAE5C,QAAQ,GAAG+pF,MAAM,GACnC,GACJ,EAAC0hC,EAED5hC,OAAA,SAAO55D,GACL,IAAI5wB,KAAK0+D,QAAT,CAEA,IAAM/8D,EAAO,IAAIgrD,SACjBhrD,EAAK8lC,OAAO,QAAS7W,GAErB5wB,KAAK0+D,SAAU,EACf1+D,KAAK6T,QAAU,QACfmB,EAAEwqC,SAEFga,IAAAA,QACW,CACP1iC,OAAQ,OACR+f,IAAQ2iB,IAAAA,MAAAA,UAAoB,UAAS,UAAUx5D,KAAK0qB,MAAMoiC,KAAKnjC,KAAI,SACnEqrB,UAAW,SAAC5Z,GAAG,OAAKA,CAAG,EACvBj4B,KAAMxB,IAEPs1B,KAAKj3B,KAAKy5C,QAAQ/J,KAAK1vC,MAAOA,KAAK2qF,QAAQj7C,KAAK1vC,MAhB3B,CAiB1B,EAACosH,EAEDvnH,OAAA,WACE7E,KAAK0+D,SAAU,EACf1+D,KAAK6T,QAAU,UACfmB,EAAEwqC,SAEFga,IAAAA,QACW,CACP1iC,OAAQ,SACR+f,IAAQ2iB,IAAAA,MAAAA,UAAoB,UAAS,UAAUx5D,KAAK0qB,MAAMoiC,KAAKnjC,KAAI,WAEpEsN,KAAKj3B,KAAKy5C,QAAQ/J,KAAK1vC,MAAOA,KAAK2qF,QAAQj7C,KAAK1vC,MACrD,EAACosH,EAED3yE,QAAA,SAAQK,GACN0f,IAAAA,MAAAA,YAAsB1f,GAEtB95C,KAAKu2H,UAAU,WACfv2H,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SACFx/C,KAAK2M,MACP,EAACy/G,EAEDzhC,QAAA,WACE3qF,KAAKu2H,UAAU,SACfv2H,KAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,EAAC4sE,EAEDmK,UAAA,SAAUvxH,GACRhF,KAAK8oE,WAAW1yC,QAAUojC,IAAAA,WAAAA,MAAqB,6BAA6Bx5D,KAAK6T,QAAO,IAAI7O,GAC5FhF,KAAK8oE,WAAW9jE,KAAOA,CACzB,EAACgxH,CAAA,CAtIkC,CAASntD,KEG9CrP,IAAAA,aAAAA,IAAqB,uBAAuB,WAC1CyxC,IAAAA,UAAAA,MAAuBvvB,IAAAA,UAAgB,SACvCuvB,IAAAA,UAAAA,gBAAiCvvB,IAAAA,UAAgB,mBACjDuvB,IAAAA,UAAAA,mBAAoCvvB,IAAAA,UAAgB,uBAEpDj7E,EAAAA,EAAAA,QAAOyoF,IAAAA,UAAoB,QAAQ,SAAUvkD,GAC3C,GAAKA,EAAKja,MAAM3X,OAAU/S,KAAK0qB,MAAMoiC,KAAKqpE,QAA1C,CAEA,IAAIK,EAAWx2H,KAAK0qB,MAAMoiC,KAAKqpE,QAC3BM,EAAez2H,KAAK0qB,MAAMoiC,KAAKspE,kBAE9BI,IAEDx2H,KAAK0qB,MAAM0+D,wBAAwBlvB,SAAS,iBAAmBu8D,IACjED,EAAWC,GAGb9xF,EAAKja,MAAM3X,MAAQ0O,OAAOs+B,OAAOpb,EAAKja,MAAM3X,MAAO,CACjD,qBAAsB,OAAOyjH,EAAQ,MAZkB,CAc3D,KAEA/1H,EAAAA,EAAAA,QAAOoqF,IAAc,sBAAsB,SAAUltB,EAAO7Q,GAC1D,GAAKA,EAAK4pE,qBASV,OAPA/4D,EAAM7kD,IACJ,QACA9D,EAACyuD,IAAM,CAACvD,KAAK,eAAe5d,QAAS,kBAAMkX,IAAAA,MAAAA,KAAew8D,EAAkB,CAAElpE,KAAAA,GAAO,GAClF0M,IAAAA,WAAAA,MAAqB,qCAInBmE,CACT,GACF,G;;;;;;;;;QC5CA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AAAA;AAAA,wC;;;;;;;;;;;;ACAA;AAAA;AAAe,SAAS7D,QAAT,GAAoB;AACjCA,UAAQ,GAAGr4C,MAAM,CAACs+B,MAAP,IAAiB,UAAUp/C,MAAV,EAAkB;AAC5C,SAAK,IAAIsG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyM,SAAS,CAACjP,MAA9B,EAAsCwC,CAAC,EAAvC,EAA2C;AACzC,UAAIs2B,MAAM,GAAG7pB,SAAS,CAACzM,CAAD,CAAtB;;AAEA,WAAK,IAAI6F,GAAT,IAAgBywB,MAAhB,EAAwB;AACtB,YAAI9b,MAAM,CAAC9hB,SAAP,CAAiB8M,cAAjB,CAAgC1M,IAAhC,CAAqCw9B,MAArC,EAA6CzwB,GAA7C,CAAJ,EAAuD;AACrDnM,gBAAM,CAACmM,GAAD,CAAN,GAAcywB,MAAM,CAACzwB,GAAD,CAApB;AACD;AACF;AACF;;AAED,WAAOnM,MAAP;AACD,GAZD;;AAcA,SAAOm5D,QAAQ,CAACrmD,KAAT,CAAe,IAAf,EAAqBC,SAArB,CAAP;AACD,C;;;;;;;;;;;;AChBD;AAAA;AAAA;AAAA;AACe,SAASmmD,cAAT,CAAwBlH,QAAxB,EAAkCC,UAAlC,EAA8C;AAC3DD,UAAQ,CAAChzD,SAAT,GAAqB8hB,MAAM,CAACugB,MAAP,CAAc4wB,UAAU,CAACjzD,SAAzB,CAArB;AACAgzD,UAAQ,CAAChzD,SAAT,CAAmBiM,WAAnB,GAAiC+mD,QAAjC;AACAD,oEAAc,CAACC,QAAD,EAAWC,UAAX,CAAd;AACD,C;;;;;;;;;;;;ACLD;AAAA;AAAe,SAASiF,eAAT,CAAyBpmD,CAAzB,EAA4B7G,CAA5B,EAA+B;AAC5CitD,iBAAe,GAAGp2C,MAAM,CAACixC,cAAP,IAAyB,SAASmF,eAAT,CAAyBpmD,CAAzB,EAA4B7G,CAA5B,EAA+B;AACxE6G,KAAC,CAAC+6C,SAAF,GAAc5hD,CAAd;AACA,WAAO6G,CAAP;AACD,GAHD;;AAKA,SAAOomD,eAAe,CAACpmD,CAAD,EAAI7G,CAAJ,CAAtB;AACD,C;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEe;AACb,mCAAiC+rH,yDADpB;AAEb,yCAAuCC,+DAF1B;AAGb,mCAAiCC,yDAHpB;AAIb,wCAAsCC,8DAAUA;AAJnC,CAAf,E;;;;;;;;;;;;;;;;;;;;ACLA;AACA;;IAEqBH,K;;;;;;;;;SACnBhyF,I,GAAA,gBAAO;AACL,SAAKja,KAAL,CAAWoB,SAAX,GAAuB,KAAKpB,KAAL,CAAWoB,SAAX,IAAwB,EAA/C;AAEA,SAAKpB,KAAL,CAAWoB,SAAX,IAAwB,oBAAxB;;AAEA,QAAI,KAAKpB,KAAL,CAAWw1C,IAAf,EAAqB;AACnB,WAAKx1C,KAAL,CAAWoB,SAAX,IAAwB,UAAxB;AACD;;AAED,QAAIA,SAAS,qBAAkB,KAAKpB,KAAL,CAAWqsG,eAAX,IAA8B,EAAhD,CAAb;AAEA,WACE;AAAK,eAAS,EAAEjrG;AAAhB,OACG,KAAKo0C,IAAL,EADH,EAEE,WAAW,KAAKx1C,KAAhB,CAFF,CADF;AAMD,G;;SAEDw1C,I,GAAA,gBAAO;AACL,QAAI,CAAC,KAAKx1C,KAAL,CAAWw1C,IAAhB,EAAsB;AAEtB,QAAM82D,SAAS,GAAG,KAAKtsG,KAAL,CAAWw1C,IAA7B;AAEA,WAAO,KAAKx1C,KAAL,CAAWw1C,IAAlB;AAEA,WAAO;AAAM,eAAM;AAAZ,OAAgCA,0DAAI,CAAC82D,SAAD,CAApC,CAAP;AACD,G;;;EA5BgC37D,uD;;;;;;;;;;;;;;;;;;;;ACHnC;;IAEqBw7D,K;;;;;;;;;SACnBlyF,I,GAAA,cAAKyd,KAAL,EAAY;AACV,QAAIrvC,KAAK,GAAG,EAAZ;AACA,QAAI+Y,SAAS,GAAG,CAAC,aAAD,CAAhB;AAEA,QAAI,KAAKpB,KAAL,CAAWoB,SAAf,EAA0BA,SAAS,CAAC5W,IAAV,CAAe,KAAKwV,KAAL,CAAWoB,SAA1B;;AAE1B,QAAI,KAAKpB,KAAL,CAAWrT,KAAf,EAAsB;AACpBtE,WAAK,CAACi/C,eAAN,SAA4B,KAAKtnC,KAAL,CAAWrT,KAAvC;AACAyU,eAAS,CAAC5W,IAAV,CAAe,SAAf;AACD;;AAED,WACE;AAAM,eAAS,EAAE4W,SAAS,CAAC1T,IAAV,CAAe,GAAf,CAAjB;AAAsC,WAAK,EAAErF;AAA7C,OACE;AAAM,eAAS,EAAC;AAAhB,OAAoCqvC,KAAK,CAAC9sB,QAA1C,CADF,CADF;AAKD,G;;;EAjBgC+lC,uD;;;;;;;;;;;;;;;;;;;;ACFnC;;IAEqBy7D,U;;;;;;;;;SACnBnyF,I,GAAA,cAAKyd,KAAL,EAAY;AACV,QAAIt2B,SAAS,GAAG,CAAC,kBAAD,CAAhB;AAEA,QAAI,KAAKpB,KAAL,CAAWoB,SAAf,EAA0BA,SAAS,CAAC5W,IAAV,CAAe,KAAKwV,KAAL,CAAWoB,SAA1B;AAE1B,WAAO;AAAM,eAAS,EAAEA,SAAS,CAAC1T,IAAV,CAAe,GAAf;AAAjB,OAAuCgqC,KAAK,CAAC9sB,QAA7C,CAAP;AACD,G;;;EAPqC+lC,uD;;;;;;;;;;;;;;;;;;;;ACFxC;;IAEqBu7D,W;;;;;;;;;SACnBjyF,I,GAAA,gBAAO;AACL,QAAI7Y,SAAS,GAAG,CAAC,mBAAD,CAAhB;AAEA,QAAI,KAAKpB,KAAL,CAAWoB,SAAf,EAA0BA,SAAS,CAAC5W,IAAV,CAAe,KAAKwV,KAAL,CAAWoB,SAA1B;AAE1B,QAAI,KAAKpB,KAAL,CAAWusG,IAAf,EAAqBnrG,SAAS,CAAC5W,IAAV,CAAe,yBAAf;AAErB,QAAI,KAAKwV,KAAL,CAAWwsG,KAAf,EAAsBprG,SAAS,CAAC5W,IAAV,CAAe,0BAAf;AAEtB,QAAI,KAAKwV,KAAL,CAAWysG,SAAf,EAA0BrrG,SAAS,CAAC5W,IAAV,CAAe,8BAAf;AAE1B,WACE;AAAK,eAAS,EAAE4W,SAAS,CAAC1T,IAAV,CAAe,GAAf;AAAhB,OACE;AAAK,eAAS,EAAC,uBAAf;AAAuC,WAAK,EAAE;AAAExJ,aAAK,EAAK,KAAKwoH,WAAL,EAAL;AAAP;AAA9C,MADF,CADF;AAKD,G;;SAEDA,W,GAAA,uBAAc;AACZ,WAAO,KAAK1sG,KAAL,CAAWmO,QAAlB;AACD,G;;;EArBsCwiC,uD;;;;;;;;;;;;;;;;;;;;ACFzC;AACA;AACA;AAEe,sJACVo4C,sDADL;AAEE,kCAAgC4jB,oEAFlC;AAGE,wCAAsCC,0EAAsBA;AAH9D,I;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;AACA;;IAQqBD,gB;;;;;;;;;SACnB1yF,I,GAAA,gBAAO;AACL,SAAKxU,QAAL,GAAgB,IAAhB;;AAEA,QAAMmwC,IAAI,qBAAS37B,IAAT,WAAV,CAHK,CAKL;;;AACA27B,QAAI,CAAC51C,KAAL,CAAWoB,SAAX,GAAuB,mBAAgB,KAAKuM,KAAL,CAAW+pD,QAAX,MAAyB,MAAzC,UAAqD9hB,IAAI,CAAC51C,KAAL,CAAWoB,SAAX,CAAqBnoB,OAArB,CAA6B,iBAA7B,EAAgD,EAAhD,CAA5E;AAEA,WAAO28D,IAAP;AACD,G;;SAED2hB,W,GAAA,uBAAc;AAAA;;AACZ,QAAMtkB,KAAK,GAAG,IAAIlB,mEAAJ,EAAd;AAEAkB,SAAK,CAAC7kD,GAAN,CAAU,aAAV,EAAyB,IAAIw+G,+DAAJ,CAA2B,UAACp5D,UAAD,EAA4B;AAC9E,WAAI,CAAC7lC,KAAL,CAAWkqD,QAAX,CAAoBrkB,UAAU,CAAC/0D,KAAX,EAApB;;AACA,WAAI,CAACuhB,KAAL,CAAWs1D,QAAX,CAAoB9hB,UAApB;AACD,KAHwB,EAGtB,KAAKxzC,KAAL,CAAWs+F,MAHW,CAAzB;AAKA,WAAOrrD,KAAP;AACD,G;;;EArB4E6jB,qE;;;;;;;;;;;;;;ACT/E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAGA;;IAEqB81C,sB;AAKnB,kCAAYt3C,QAAZ,EAAwDgpC,MAAxD,EAAwE;AAAA,SAJ9DnkG,OAI8D,GAJpD,IAAI66D,GAAJ,EAIoD;AAAA,SAH9DM,QAG8D;AAAA,SAF9DgpC,MAE8D;AACtE,SAAKnkG,OAAL,GAAe,IAAI66D,GAAJ,EAAf;AAEA,SAAKM,QAAL,GAAgBA,QAAhB;AACA,SAAKgpC,MAAL,GAAcA,MAAd;AACD;;;;SAEDvnE,M,GAAA,gBAAO6B,KAAP,EAAsB;AAAA;;AACpBA,SAAK,GAAGA,KAAK,CAAC98C,WAAN,EAAR;AAEA,SAAKqe,OAAL,CAAa/I,GAAb,CAAiBwnC,KAAjB,EAAwB,EAAxB;AAEA,QAAMrG,MAAM,GAAG;AACbn2C,YAAM,EAAE;AAAEkqD,SAAC,EAAE1N;AAAL,OADK;AAEbw2B,UAAI,EAAE;AAAEsH,aAAK,EAAE;AAAT;AAFO,KAAf;AAKA,QAAMz3D,EAAE,GAAGnN,MAAM,CAAC8mC,KAAD,CAAjB;;AAEA,QAAI,CAAC9mC,MAAM,CAAC/M,KAAP,CAAaka,EAAb,CAAD,IAAqBA,EAAE,KAAK,KAAKq/F,MAArC,EAA6C;AAC3C,aAAOxvD,uDAAG,CAACmiB,KAAJ,CACJ96E,IADI,CACC,aADD,EACgB8oB,EADhB,EAEJsN,IAFI,CAEC,UAACriB,CAAD,EAAO;AACX,aAAI,CAACiQ,OAAL,CAAa/I,GAAb,CAAiBwnC,KAAjB,EAAwB,CAAC1uC,CAAD,CAAxB;AACD,OAJI,WAKE;AAAA,eAAM,EAAN;AAAA,OALF,CAAP;AAMD;;AAED,WAAO4kD,uDAAG,CAACmiB,KAAJ,CAAU96E,IAAV,CAAe,aAAf,EAA8Bo8C,MAA9B,EAAsChmB,IAAtC,CAA2C,UAACpS,OAAD,EAAa;AAC7D,WAAI,CAACA,OAAL,CAAa/I,GAAb,CACEwnC,KADF,EAEEz+B,OAAO,CAAC/d,MAAR,CAAe,UAAC8N,CAAD;AAAA,eAAmBA,CAAC,CAAC+U,EAAF,OAAW,KAAI,CAACq/F,MAAnC;AAAA,OAAf,CAFF;AAID,KALM,CAAP;AAMD,G,CAED;;;SACArkF,I,GAAA,cAAK2e,KAAL,EAAsC;AAAA;;AACpCA,SAAK,GAAGA,KAAK,CAAC98C,WAAN,EAAR;AAEA,WAAO,CAAE,KAAKqe,OAAL,CAAatI,GAAb,CAAiB+mC,KAAjB,KAA2B,EAA7B,EAAkD17C,GAAlD,CAAsD,UAACs2D,UAAD,EAA4B;AACvF,aACE;AAAI,iBAAS,EAAC,wBAAd;AAAuC,sBAAY,gBAAgBA,UAAU,CAACv0C,EAAX;AAAnE,SACE,EAAC,sEAAD;AAAQ,eAAO,EAAE;AAAA,iBAAM,MAAI,CAACq2D,QAAL,CAAc9hB,UAAd,CAAN;AAAA;AAAjB,SAEE;AAAK,iBAAS,EAAC;AAAf,SAA4CA,UAAU,CAACv0C,EAAX,EAA5C,CAFF,EAGE;AAAK,iBAAS,EAAC;AAAf,SAA+Co2C,sEAAS,CAAC7B,UAAU,CAAC/0D,KAAX,EAAD,EAAqBm6C,KAArB,CAAxD,CAHF,CADF,CADF;AASD,KAVM,CAAP;AAWD,G;;;;;;;;;;;;;;;;;AC/DH;AAAA;AAAA;AAAA;AAAA;CAEA;;AACA;AAEA7hC,MAAM,CAACs+B,MAAP,CAAc0zD,yDAAd,EAAsB2X,+CAAtB,E;;;;;;;;;;;ACLA,6B;;;;;;;;;;;ACAA,iD;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,gE;;;;;;;;;;;ACAA,6D;;;;;;;;;;;ACAA,iD;;;;;;;;;;;ACAA,+D;;;;;;;;;;;ACAA,oD;;;;;;;;;;;MCCA,IAAI5yD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,GCLRomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,MCJ3E0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,M,+BCLvD,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCGnC8jB,EAAAA,WAGnB,aAAc,KAFPC,yBAEO,EACZx3H,KAAKw3H,oBAAsBpqE,IAAO,I,2BAGpCl4C,KAAA,SAAK6wG,GACH/lH,KAAKw3H,oBAAL,UAA6Bx3H,KAAKw3H,sBAAlC,CAAyDzR,M,EAG3DlhH,OAAA,SAAOkhH,GACL/lH,KAAKw3H,oBAAoBx3H,KAAKw3H,sBAAsB1wH,QAAO,SAAC6iB,GAAD,OAAgBA,IAAOo8F,O,EAGpFrwF,IAAA,SAAIqwF,GACF,OAAO/lH,KAAKw3H,sBAAsBt9D,SAAS6rD,I,EAhB1BwR,GCHN,SAAS1/D,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,GAEFomD,EAAgBpmD,EAAG7G,GCJb,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GCJ3B,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCcnCgkB,EAAAA,SAAAA,G,wIACnBxnD,WAA8B,E,EAC9B8qC,eAAyB,E,EACzB2c,mBAA6B,G,EAC7BC,mBAAoC,K,EACpCl2E,OAAS,IAAIquD,K,oCAEbhkF,UAAA,WACE,MAAO,kB,EAGT3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,uC,EAG9BpjC,QAAA,WAAU,WACR,OACE,SAAKtK,UAAU,cACb,UAAMA,UAAU,OAAOo5C,SAAUllE,KAAKklE,SAASx1B,KAAK1vC,OAClD,SAAK8rB,UAAU,cACb,eAAQ0tC,IAAAA,WAAAA,MAAqB,8CAA+C,CAAE/iD,MAAOzW,KAAK0qB,MAAMooD,QAAQruE,UACxG,WAAOqnB,UAAU,cAAc8rG,UAAQ,EAAC7wH,MAAO/G,KAAK0qB,MAAMooD,QAAQ16D,KAAK,SAEzE,SAAK0T,UAAU,cACb,EAAC,IAAD,CAAQuM,MAAOr4B,KAAK+6G,cAAehiD,SAAU,kBAAO,EAAKgiD,eAAiB,EAAKA,gBAC5EvhD,IAAAA,WAAAA,MAAqB,iDAGzBx5D,KAAK+6G,cACJ,SAAKjvF,UAAU,cACb,WAAO+rG,IAAI,mBAAmBr+D,IAAAA,WAAAA,MAAqB,iDACnD,OAAG1tC,UAAU,YAAY0tC,IAAAA,WAAAA,MAAqB,iDAC9C,WAAO7vC,GAAG,kBAAkBmC,UAAU,cAAc+lG,UAAU,EAAM54D,QAAS,SAAC11D,GAAD,OAAa,EAAKm0H,mBAAqBn0H,EAAE5C,OAAOoG,UAG/H,SAAK+kB,UAAU,cACb,WAAO+rG,IAAI,eAAer+D,IAAAA,WAAAA,MAAqB,6CAQ/C,EAAC,IAAD,CACEnhC,MAAOr4B,KAAKyhD,OACZunE,OAAQhpH,KAAK0qB,MAAMwzC,WAAWv0C,KAC9Bq2D,SAAU,SAAC9hB,GAAD,OAA6B,EAAKy5D,mBAAqBz5D,EAAWv0C,SAIlF,SAAKmC,UAAU,4BACb,EAAC,IAAD,CACEA,UAAU,yBACV9mB,KAAK,SACL05D,QAA4B,WAAnB1+D,KAAKiwE,UACdjnD,SAA6B,UAAnBhpB,KAAKiwE,YAA2BjwE,KAAK23H,qBAAuB33H,KAAK03H,oBAE1El+D,IAAAA,WAAAA,MAAqB,wCAExB,EAAC,IAAD,CACE1tC,UAAU,SACVw2B,QAAStiD,KAAK83H,QAAQpoF,KAAK1vC,MAC3B0+D,QAA4B,UAAnB1+D,KAAKiwE,UACdjnD,SAA6B,WAAnBhpB,KAAKiwE,YAA4BjwE,KAAK23H,qBAAuB33H,KAAK03H,oBAE3El+D,IAAAA,WAAAA,MAAqB,2C,EAQlC73D,KAAA,WACE,IAAMA,EAAgC,CACpCo2H,mBAAoB/3H,KAAK0qB,MAAMwzC,WAAWv0C,KAC1CmpD,QAAS9yE,KAAK0qB,MAAMooD,SAUtB,OAPI9yE,KAAK+6G,eACPp5G,EAAKo5G,eAAgB,EACrBp5G,EAAK+1H,mBAAqB13H,KAAK03H,oBAE/B/1H,EAAKg2H,mBAAqB33H,KAAK23H,mBAG1Bh2H,G,EAGTm2H,QAAA,WAAU,WACR93H,KAAKklE,SAAS,MAAM,GAAMjuC,MAAK,SAAC6iB,GAC9B,OAAQA,EAASn4C,KAAKuG,WAAW8wC,QAC/B,IAAK,kBACH,EAAK8vB,WAAa,CAAE9jE,KAAM,QAASoxB,QAASojC,IAAAA,WAAAA,MAAqB,wDACjE,MAEF,IAAK,cACH,EAAKsP,WAAa,CAAE9jE,KAAM,UAAWoxB,QAASojC,IAAAA,WAAAA,MAAqB,oDACnE,MAEF,IAAK,eACH,EAAKsP,WAAa,CAAE9jE,KAAM,UAAWoxB,QAASojC,IAAAA,WAAAA,MAAqB,qDAOvExkD,EAAEwqC,a,EAIN0lB,SAAA,SAAS3hE,EAAQu0H,GAAkB,WAC7Bv0H,GAAGA,EAAEmC,iBAET1F,KAAKiwE,UAAY6nD,EAAU,QAAU,SACrC,IAAIjhF,EAAM,kBAIV,OAFIihF,IAASjhF,GAAO,UAEb2iB,IAAAA,QACI,CACP1iC,OAAQ,OACR+f,IAAK,GAAG2iB,IAAAA,MAAAA,UAAoB,WAAa3iB,EACzC1zC,KAAM,CAAExB,KAAM3B,KAAK2B,QACnBqoE,aAAc,SAACzmE,GACb,IAAM8gB,EAAQ9gB,EAAEu2C,SAASqV,OAAO,GAGhC,GAFA,EAAK8gB,WAAY,EAEE,sCAAf5rD,EAAMta,KACR,MAAMxG,EAGR,EAAKulE,WAAa,CAChB9jE,KAAM,QACNoxB,QAASojC,IAAAA,WAAAA,MAAqB,mEAGhCxkD,EAAEwqC,YAGLvoB,MAAK,SAAC6iB,GAQL,OAPA,EAAKm2B,WAAY,EACZ6nD,IACH9iH,EAAEwqC,SACFz9C,OAAOkuB,SAAS66C,SAChBtR,IAAAA,MAAAA,SAGK1f,M,EAtJM29E,CAAsD5uD,KCd3E,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCGnCukB,EAAAA,SAAAA,G,oFACnB93D,KAAA,WACE,MAAO,uB,EAGT4sB,eAAA,WACE,MAAO,iD,EAGTD,gBAAA,WACE,IACMlrF,EADO3B,KAAK0qB,MAAMy9C,KACD/xC,UAEvB,MAAO,CACL6hG,kBACE,EAAC,IAAD,CAAMnsG,UAAU,6BAA6BsE,KAAMopC,IAAIhZ,MAAM,kBAAmB,CAAE72B,GAAIhoB,EAAKg2H,mBAAoB59C,KAAMp4E,EAAK6+D,UACvH7+D,EAAKu2H,uBAGVzhH,MAAO9U,EAAK8U,Q,EAnBGuhH,CAAsBrrC,KCH3C,MAAM,EAA+B4qB,OAAOC,KAAK/D,OAAO,iC,ICGnC0kB,EAAAA,SAAAA,G,oFACnBj4D,KAAA,WACE,MAAO,uB,EAGT9vC,KAAA,WACE,OAAOopC,IAAIhZ,MAAM,aAAc,CAAE72B,GAAI3pB,KAAK0qB,MAAM4zD,aAAaloD,UAAUuhG,sB,EAGzEvhG,QAAA,WACE,OAAOojC,IAAIiH,WAAWC,MAAM,uDAAwD,CAClFw3D,sBACE,UAAMpsG,UAAU,2CAA2C9rB,KAAK0qB,MAAM4zD,aAAaloD,UAAU8hG,0B,EAZhFC,C,MAA8BtxC,ICenDrtB,IAAAA,aAAAA,IAAqB,2BAA2B,WAoB9C,GAlBAikB,IAAAA,UAAAA,aAAoC/B,IAAAA,UAAgB,iBAEpDj7E,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAUtf,GAC3Cn+D,KAAKo4H,gBACPj6D,EAAOrlD,IACL,aACA,EAAC,IAAD,CAAO9T,KAAK,iBAAiB87D,MAAOtH,IAAAA,WAAAA,MAAqB,oDAAqD0G,KAAK,yBAClH,OAMP1G,IAAAA,eAAAA,UAA+Bw+D,EAG/Bx+D,IAAAA,uBAAAA,UAAuC2+D,EAElC3+D,IAAAA,KAAAA,UAAAA,GAAAA,WAAAA,aAAL,CAIA,IAAMnhC,EAAQ,IAAIk/F,GAElB92H,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,UAAU,WACtClsF,KAAK8tE,QAAQt/C,OAAM,kBAAM6J,EAAMm/F,6BAGjC/2H,EAAAA,EAAAA,QAAO4mF,IAAAA,UAAgB,WAAW,SAAU9gC,GACJ,YAAlCvmD,KAAK0qB,MAAMy9C,KAAKjxB,eAA+B7e,EAAM3C,IAAI11B,KAAK0qB,MAAMy9C,KAAKx+C,OAC3E48B,EAAQrxC,KAAK,oBAIjBzU,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAAUvuB,GACjDtlC,EAAM3C,IAAI11B,KAAK0qB,MAAMy9C,KAAKx+C,OAC5Bg0C,EAAM7kD,IACJ,SACA,UAAMgT,UAAU,cACbo0C,IAAK,uBADR,IACiC1G,IAAAA,WAAAA,MAAqB,4CAM5D/4D,EAAAA,EAAAA,QAAOirE,IAAAA,UAA0B,YAAY,WAC3CrzC,EAAMm/F,oBAAoB,QAG5B/2H,EAAAA,EAAAA,QAAOirE,IAAAA,UAA0B,gBAAgB,SAAU/N,GAAO,WAC5DtlC,EAAMm/F,sBAAsB/yH,QAC9Bk5D,EAAM7kD,IACJ,YACA,EAAC,IAAD,CACEonD,KAAK,sBACLp0C,UAAU,SACVw2B,QAAS,kBACPkX,IAAAA,MAAAA,KAAei+D,EAAgB,CAC7B3kD,QAASz6C,EAAMm/F,sBACft5D,WAAY,EAAKA,eAIpB1E,IAAAA,WAAAA,MAAqB,gDACtB,UAAM1tC,UAAU,0BAA0BuM,EAAMm/F,sBAAsB/yH,cAM9EhE,EAAAA,EAAAA,QAAO6mF,IAAc,sBAAsB,SAAU3pB,EAAOwK,GAC1D,GAA2B,YAAvBA,EAAKjxB,cAAT,CAEA,IAAMmhF,EAAYhgG,EAAM3C,IAAIyyC,EAAKx+C,MAAQ,SAAW,OAEpDg0C,EAAM7kD,IACJ,WACA,EAAC,IAAD,CACEonD,KAAK,qBACL5d,QAAS,WACW,SAAd+1E,EACFhgG,EAAMnjB,KAAKizD,EAAKx+C,MAEhB0O,EAAMxzB,OAAOsjE,EAAKx+C,MAGpB3U,EAAEwqC,WAGHga,IAAAA,WAAAA,MAAA,+BAAoD6+D,c;;;;;;;MC5G7D,IAAI7/D,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,cCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,C,MCKA4uD,GAAAA,aAAAA,IAAqB,sCAAsC,WAC1D,ICZD,MAAM,EAA+B+9C,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCmBlD6kB,EAAc,YClBL,IAAwB3lE,EAAUC,EDkB7B,kDAwBlB,OC1C+CA,EDkB7B,GClBmBD,EDkBnB,GCjBThzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDeP,YAEnBjuB,KAAA,WACC,IAAMo6B,EAAOvF,IAAAA,MAAAA,UAAoB,sBAC3B0E,EAAal+D,KAAK0qB,MAAMwzC,WACxBkE,EAAWpiE,KAAK0qB,MAAM03C,UAAYlE,EAAWmE,aAE7CvV,EAAOoR,EAAWkE,EAAW,iBAAmB,UAChDzwB,EAAOusB,EAAWkE,EAAW,eAAiB,eAChDm2D,EAAuB,gBAATx5D,GAA0BqD,GAC9B,WAATrD,GACS,mBAATA,GAA6BqD,GAAYlE,EAAWyf,kBAAoBzf,EAAWpR,OAGxF,OAFAyrE,IAAAA,GAAgB/+D,IAAAA,MAAAA,UAAoB,6CAA4E,MAA9B0E,EAAWs6D,qBAAXt6D,EAAWs6D,wBAG5F,cACEp2D,EAAWlC,IAAK,gBAAkB,GAAI,IACtCq4D,EAAa95D,IAAO3R,EAAM,CAAChhC,UAAW,+BAAiCs2C,EAAW,gBAAkB,MAAQ,GAC5G5I,IAAAA,WAAAA,MAAqB,+BAAiC4I,EAAW,UAAY,WAAa,QAAS,CACnGtV,KAAAA,EACAkV,IAAK5B,IAAUzuB,KAInB,EAAC,EAxBkB,CAASwwB,KA2B7B3I,IAAAA,aAAAA,IAAqB,sCAAsC,YAE1D/4D,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,aAAa,SAAUlQ,GACT,iBAA9CnE,IAAAA,MAAAA,UAAoB,uBAGxBmE,EAAMh6D,QACL,eACA20H,EAAe54E,UAAU,CACxBwe,WAAYl+D,KAAK0qB,MAAMwzC,WACvBkE,UAAWpiE,KAAKwvE,kBAGnB,KAEAm7B,EAAAA,EAAAA,UAAS98B,IAAAA,UAA8B,QAAQ,SAAUzrB,GACxD,IAAIhsB,EAAUgsB,IACR8b,EAAal+D,KAAK0qB,MAAMwzC,WACxBkE,GAAYpiE,KAAKwvE,iBAAmBtR,EAAWmE,aAErD,GAC+C,iBAA9C7I,IAAAA,MAAAA,UAAoB,uBAChBA,IAAAA,MAAAA,UAAoB,2CAA2E,MAA9B0E,EAAWs6D,qBAAXt6D,EAAWs6D,wBAC5Ep2D,EAEJ,OAAOhsC,EAGR,IAAM02B,EAAOoR,EAAWyf,iBAExB,SAAS86C,EAAgB3sG,GACxB,OAAO,SAAUtJ,GAChB,OAAOA,GAAQA,EAAKkI,OAASlI,EAAKkI,MAAMoB,WAAa3T,OAAOqK,EAAKkI,MAAMoB,WAAW/f,MAAM,KAAKmuD,SAASpuC,EACvG,CACD,CAkCA,OAhCA,SAAS4sG,EAAcl2G,GACtB,GAAIA,GAAQA,EAAK8S,UAAY51B,MAAMU,QAAQoiB,EAAK8S,UAAW,CAC1D,IAAMhsB,EAAYkZ,EAAK8S,SAASz0B,KAAK43H,EAAgB,+BAErD,GAAInvH,EAAW,CACd,IAAMqvH,EAAiBrvH,EAAUgsB,SAASklE,WAAU,SAAUh4E,GAC7D,OAAOA,GAAQA,EAAK8S,UAAY51B,MAAMU,QAAQoiB,EAAK8S,WAAa9S,EAAK8S,SAASz0B,KAAK43H,EAAgB,6BACpG,IAcA,YAbAnvH,EAAUgsB,SAASvR,OAAO40G,EAAgB,EACzC,EAAC,IAAO,CACPpoH,KAAMipD,IAAAA,WAAAA,MAAqB,0CAA2C,CACrE1M,KAAAA,EACAkV,IAAK5B,IAAUlC,EAAWwf,kBAE3Bp7E,SAAS,SAET,EAAC,IAAI,CAACwpB,UAAU,yCAAyCsE,KAAM08B,EAAO0M,IAAAA,MAAAA,KAAe1M,GAAQ,KAC3F2R,IAAO3R,GAAQ,KAAM,CAAC3jD,MAAO,OAKlC,CAEAqZ,EAAK8S,SAAS3e,SAAQ,SAAU+rC,GAC/Bg2E,EAAch2E,EACf,GACD,CACD,CAEAg2E,CAActiG,GAEPA,CACR,GACD,G;;;;;;;2BEnHE,IAAI2zF,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,I,gBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAc,O,cCA3C/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAe,Q,cCA5C/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,gB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,iB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,mB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,iB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,mB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,oB,uMCArB,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,IAGcA,EAAG7G,G,ICJPguH,E,YCDN,IAAwBjmE,EAAUC,E,wIDG/CimE,UAAYn9C,IAAMtY,UAAU,aAAcsY,IAAMiB,e,EAChDm8C,OAASp9C,IAAMc,OAAO,U,EACtBu8C,WAAar9C,IAAMc,OAAO,c,SCLqB5pB,E,GAAVD,E,GAC5BhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,G,GDFc8oB,KEWzCliB,IAAI4yC,aAAatzF,IAAI,gCAAgC,WACjD0gD,IAAImiB,MAAMqtB,OAAOgwB,gBAAkBJ,EACnC3tB,IAAKtrG,UAAUs5H,aAAev9C,IAAMgB,QAAQ,gBAC5CuuB,IAAKtrG,UAAUu5H,mBAAqBx9C,IAAMgB,QAAQ,sBAElDj8E,iBAAOyoF,IAASvpF,UAAW,aAAa,SAASg+D,GAC7C,IAAM7Q,EAAO9sD,KAAK0qB,MAAMoiC,KAElBr2C,GAAgC,IAAxBq2C,EAAKmsE,eAA2B,EAAInsE,EAAKmsE,eAAex0H,OAEtEk5D,EAAM7kD,IAAI,gBACN,cACKonD,IAAK,cACL,IACA1G,IAAIiH,WAAWC,MAAM,iEAAkE,CAACy4D,UAAW1iH,SAKhHhW,iBAAOwoF,IAAStpF,UAAW,gBAAgB,SAASg+D,GAChD,IAAMy7D,EAAa,IAAI38D,IAEnB48D,EAAQr5H,KAAK8sD,KAAKosE,qBAEtB74H,EAAEoB,KAAK43H,GAAO,SAASpyH,EAAGqO,GACtB,IAAMgkH,GAA2B,IAAhBhkH,EAAGwjH,SAAqBt/D,IAAIiH,WAAWC,MAAM,iEAAmErB,kBAAQ/pD,EAAGwjH,SAASt9E,YAEjJv5B,EACA,SAAK6J,UAAU,yBACV2yC,KAAuB,IAAhBnpD,EAAGwjH,SAAqB,KAAOxjH,EAAGwjH,UAC1C,aACKQ,EACD,UAAMxtG,UAAU,mBAAmB3iB,MAAOmM,EAAGujH,YAAYU,kBAAmBn5D,IAAU9qD,EAAGujH,gBAIlGvjH,EAAGwjH,WACF72G,EAAO,OAAGmO,KAAMopC,IAAI2J,MAAMC,UAAU,WAAa,MAAQk2D,GAAWr3G,IAGxEm3G,EAAWtgH,IAAI,YAAc7R,EAAGgb,MAGpC07C,EAAM7kD,IAAI,kBAAmBs4E,IAAS1xC,UAAU,CAC5CohB,MAAOtH,IAAIiH,WAAWC,MAAM,iEAC5B50C,UAAW,aACRstG,EAAWn2G,eAItBxiB,iBAAOwoF,IAAStpF,UAAW,QAAQ,WAAW,QAC1C65D,IAAI1W,QAAQ,CACRhsB,OAAQ,OACR+f,IAAK2iB,IAAI2J,MAAMC,UAAU,UAAY,eACrCjgE,KAAM,CACF21H,OAAM,kBAAEt/D,IAAIskB,QAAQhxB,WAAd,EAAE,EAAkBnjC,MAApB,EAA4B,KAClCovG,WAAY/4H,KAAK8sD,KAAKnjC;;;;;;;MCpEtC,IAAI6uC,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAY,I,aCA7D,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAe,OCA1D,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAc,M,aCA/D,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLiC,IAEZ4mE,EAAc,SAAA/J,GAAA,SAAA+J,IAAA,QAAAvyB,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAIM,OAJN2rE,EAAAwoB,EAAA1vH,KAAA0T,MAAAg8G,EAAA,OAAAtvH,OAAAmZ,KAAA,MAEjCu/G,UAAYn9C,IAAAA,UAAgB,aAAcA,IAAAA,eAAoBurB,EAC9Dn6C,KAAO4uB,IAAAA,OAAa,QAAOurB,EAC3B/oC,WAAawd,IAAAA,OAAa,cAAaurB,CAAA,QAJNptC,EAAA2/D,EAAA/J,GAIM+J,CAAA,CAJN,CAAS99C,KCF5C,MAAM,EAA+B67B,OAAOC,KAAK/D,OAAO,qB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,ICGnCgmB,EAAyB,SAAAxD,GAAA,SAAAwD,IAAA,OAAAxD,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAA4/D,EAAAxD,GAAA,IAAA7J,EAAAqN,EAAA95H,UAoDzC,OApDyCysH,EAC1C7pE,OAAA,SAAOH,GAEH6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKk+D,WAAal+D,KAAK0qB,MAAMwzC,WAC7Bl+D,KAAK05H,kBAAoB15H,KAAKk+D,WAAWy7D,WAC7C,EAACvN,EAEDh2F,QAAA,WAEI,OACIphB,EAAA,OAAK8W,UAAU,cACX9W,EAAA,OAAK8W,UAAU,uBACX9W,EAAA,SAAIwkD,IAAIiH,WAAWC,MAAM,+DAAgE,CAACjqD,MAAOzW,KAAK05H,qBACtG1kH,EAAA,OAAK8W,UAAU,cACV23C,IAAAA,UACG,CACI33C,UAAW,uCACX9mB,KAAM,SACN05D,QAAS1+D,KAAK0+D,SAElBlF,IAAIiH,WAAWC,MAAM,2EAM7C,EAAC0rD,EAEDjjH,MAAA,WAEI,OAAOqwD,IAAIiH,WAAWC,MAAM,+DAChC,EAAC0rD,EAEDtgG,UAAA,WAEI,MAAO,cACX,EAACsgG,EAEDlnD,SAAA,SAAS3hE,GACT,IAAA0jG,EAAA,KACI1jG,EAAEmC,iBACF1F,KAAK0+D,SAAU,EAEf1+D,KAAK0qB,MAAMwzC,WACNgK,KAAK,CAAE0xD,YAAY,IAAO,OACpB,WACH3yB,EAAKn/B,QACT,IAEJ9nE,KAAK2M,MACT,EAAC8sH,CAAA,CApDyC,C,MAAS5wD,ICHvD,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,ICKnComB,EAAwB,SAAA5D,GAAA,SAAA4D,IAAA,OAAA5D,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAAggE,EAAA5D,GAAA,IAAA7J,EAAAyN,EAAAl6H,UA8B1C,OA9B0CysH,EAC3CtgG,UAAA,WACE,MAAO,cACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAIiH,WAAWC,MAAM,8DAC9B,EAAC0rD,EAEDh2F,QAAA,WACE,IAEMgxF,EAFQpnH,KAAK0qB,MAAMy9C,KAAKjK,aAAa47D,cAEvBlyH,KAAI,SAAA+8B,GACtB,IAAMmoB,EAAOnoB,EAAKmoB,OAElB,OAAQ93C,EAAA,UACJA,EAACqtC,IAAI,CAACjyB,KAAMopC,IAAIhZ,MAAMsM,KAAKA,IACtB2R,IAAO3R,GAAM,IAAE,IACftR,IAASsR,IAGpB,IAEA,OACI93C,EAAA,OAAK8W,UAAU,cACX9W,EAAA,MAAI8W,UAAU,uBACTs7F,GAIf,EAACyS,CAAA,CA9B0C,C,MAAShxD,ICCtDrP,IAAAA,aAAAA,IAAqB,mCAAmC,YCFpD/4D,EAAAA,EAAAA,QAAO0vF,IAAAA,UAA+B,WAAW,SAAUvoF,GACb,GAAvC4xD,IAAI2J,MAAMC,UAAU,kBACnBx7D,EAAImyH,QAAU,cACdnyH,EAAIoyH,UAAY,aAExB,ICCAxgE,IAAAA,MAAAA,OAAAA,gBAAmCggE,EAEnC/7C,IAAAA,UAAAA,MAA6B/B,IAAAA,QAAc,eAC3C+B,IAAAA,UAAAA,YAAmC/B,IAAAA,QAAc,eACjD+B,IAAAA,UAAAA,SAAgC/B,IAAAA,UAAgB,YAChD+B,IAAAA,UAAAA,cAAqC/B,IAAAA,UAAgB,iBACrD+B,IAAAA,UAAAA,UAAiC/B,IAAAA,UAAgB,cAEjDj7E,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,aAAa,SAASlQ,GACvD,GAAG39D,KAAK0qB,MAAMwzC,WAAW+7D,gBAAiB,CACtC,IAAMZ,EAAQr5H,KAAK0qB,MAAMwzC,WAAWy7D,YAEhCn5D,EAA8C,GAArChH,IAAAA,MAAAA,UAAoB,cAAqB+G,IAAiB84D,GAASA,EAChF17D,EAAM7kD,IAAI,mBAAoB9D,EAAA,YAAOwrD,GACzC,CACJ,KAEA//D,EAAAA,EAAAA,QAAOsvE,IAAAA,UAA0B,iBAAiB,SAAS9yB,GACvDA,EAAOokC,QAAQnsE,KAAK,cACxB,KCvBAzU,EAAAA,EAAAA,QAAO0tE,IAAoB,sBAAsB,SAASxQ,EAAOO,GAC1DA,EAAWg8D,YAAch8D,EAAWy7D,YAAc,GAEjDh8D,EAAM7kD,IACF,QACA9D,EAACyuD,IAAM,CAACvD,KAAK,mBAAmB5d,QAAS,kBAAMkX,IAAI0C,MAAMxvD,KAAK+sH,EAA2B,CAAEv7D,WAAAA,GAAa,GACnG1E,IAAIiH,WAAWC,MAAM,gFAItC,KCFAjgE,EAAAA,EAAAA,QAAOirE,IAAAA,UAA0B,gBAAgB,SAAS/N,GACtD,GAA0C,GAAvCnE,IAAI2J,MAAMC,UAAU,gBAAvB,CAEA,IAAMi2D,EAAQr5H,KAAKk+D,WAAWm7D,QACxBc,EAAW,IAAI19D,KAErBp8D,EAAEoB,KAAK43H,GAAO,SAASvsH,EAAK63B,GACxB,IAAI20F,GAA2B,IAAhB30F,EAAKmoB,OAAmB0M,IAAIiH,WAAWC,MAAM,wDAA0D/7B,EAAKmoB,OAAOtR,WAE9H4+E,EACAplH,EAAA,OAAK8W,UAAU,yBACV2yC,IAAO95B,EAAKmoB,QACb93C,EAAA,WACKskH,EACDtkH,EAAA,QAAM8W,UAAU,mBAAmB3iB,MAAOw7B,EAAKk0F,YAAYU,kBAAmBn5D,IAAUz7B,EAAKk0F,iBAItF,IAAhBl0F,EAAKmoB,SACJstE,EAAWplH,EAACqtC,IAAI,CAACjyB,KAAMopC,IAAIhZ,MAAMsM,KAAKnoB,EAAKmoB,SAAUstE,IAGzDD,EAASrhH,IAAI,YAAchM,EAAKstH,EACpC,IAEAz8D,EAAM7kD,IACF,wBACA9D,EAACo8E,IAAQ,CAACtlE,UAAU,sBAAsBg1C,MAAOtH,IAAIiH,WAAWC,MAAM,yDACjEy5D,EAASl3G,WA3BiC,CA8BvD,KAEAxiB,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAASvuB,GAClD,GAAgD,GAA7CnE,IAAI2J,MAAMC,UAAU,sBAAvB,CAEA,IAAM+E,EAAOnoE,KAAK0qB,MAAMy9C,KAClBjK,EAAaiK,EAAKjK,aAClBm7D,EAAQn7D,EAAW47D,cACnBpqD,EAAYxR,EAAW2U,QAAQ,GAIrC,GAFAv4C,QAAQw0B,IAAI4gB,QAEK58D,IAAd48D,GAEAA,EAAU/lD,OAASw+C,EAAKx+C,MACpB0vG,GAASA,EAAM50H,OAAS,EAAG,CAC1B,IAEM2iH,EAAQiS,EAAM9jH,MAAM,EAFZ,GAEsB3N,KAAI,SAAA+8B,GACpC,OACI3vB,EAACqtC,IAAI,CAACjyB,KAAMopC,IAAIhZ,MAAMsM,KAAKnoB,EAAKmoB,SAC3BnoB,EAAKmoB,SAAW0M,IAAIskB,QAAQhxB,KAAO0M,IAAIiH,WAAWC,MAAM,kDAAoDllB,IAAS7W,EAAKmoB,QAGvI,IAEA,GAAGusE,EAAM50H,OAVK,EAWd,CACI,IAAMgS,EAAQ4iH,EAAM50H,OAZV,EAcV2iH,EAAMlyG,KACFF,EAACqtC,IAAI,CAACjyB,KAAK,IAAIkyB,QAAS,SAAA/+C,GACpBA,EAAEmC,iBACF8zD,IAAI0C,MAAMxvD,KAAKmtH,EAA0B,CAAC1xD,KAAAA,GAC9C,GACK3O,IAAIiH,WAAWC,MAAM,yDAA0D,CAACjqD,MAAAA,KAG7F,CAEG2wG,EAAM3iH,OAAS,GACdk5D,EAAM7kD,IAAI,SACN9D,EAAA,OAAK8W,UAAU,4BACVo0C,IAAK,cACL1G,IAAIiH,WAAWC,MAAM,uDAAwD,CAC1E4rC,MAAO+a,IAAgBD,MAK3C,CA/CqD,CAiD7D,GJtFJ,G;;;;;;;MKVA,IAAI5uD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,c,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAe,OCA1D,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,iBCAlD,GCA+B8D,OAAOC,KAAK/D,OAAO,4BDAnB8D,OAAOC,KAAK/D,OAAO,qB,aEAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,wC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCInC4mB,EAAc,SAAA5O,GAAA,SAAA4O,IAAA,OAAA5O,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAwgE,EAAA5O,GAAA,IAAAW,EAAAiO,EAAA16H,UA8BhC,OA9BgCysH,EACjCjqE,SAAA,SAASC,GACPqpE,EAAA9rH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,EACjB,EAACgqE,EAEDznF,KAAA,WACE,IAAMvB,EACJpuB,EAAA,UACE8W,UAAU,mCACV9mB,KAAK,SACL,cAAahF,KAAK0qB,MAAM4vG,OACxB/sC,UAAWvtF,KAAKyF,QAAQiqC,KAAK1vC,MAC7BsiD,QAAStiD,KAAK0qB,MAAM43B,SAEnB4d,IAAKlgE,KAAK0qB,MAAMw1C,OAIrB,OAAIlgE,KAAK0qB,MAAMvhB,MACN6L,EAACvM,IAAO,CAAC8H,KAAMvQ,KAAK0qB,MAAMvhB,OAAQi6B,GAGpCA,CACT,EAACgpF,EAED3mH,QAAA,SAAQwN,GACY,MAAdA,EAAMnG,KAA6B,UAAdmG,EAAMnG,MAC7BmG,EAAMvN,iBACN1F,KAAKO,QAAQkL,QAEjB,EAAC4uH,CAAA,CA9BgC,CAASh/D,KC+BvB84C,EAAgB,SAAAsX,GAAA,SAAAtX,IAAA,OAAAsX,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAs6C,EAAAsX,GAAA,IAAAW,EAAAjY,EAAAx0G,UAmtBlC,OAntBkCysH,EACnCznF,KAAA,WACE,OAAOxgC,IAAAA,UACL,CACE2nB,UAAW,8BACX80C,gBAAiB,sBACjBE,MAAOZ,IAAK,oBAEdlgE,KAAKu6H,uBAAuBt3G,UAEhC,EACAmpG,EAIAmO,qBAAA,SAAqBC,GAAS,IAAAvzB,EAAA,KAEtBwzB,EAAc74C,UAAU2uB,UAAU3pG,MAAM,aAAe,IAAM,OAE7DmlC,EAAS,CACb4+E,OAAQ,CAAEj5G,OAAQ,QAClBgpH,KAAM,CAAEhpH,OAAQ,KAAMs7B,OAAQ,KAAMmlE,WAAW,GAC/CwoB,OAAQ,CAAEjpH,OAAQ,IAAKs7B,OAAQ,IAAKmlE,WAAW,GAC/CyoB,cAAe,CAAElpH,OAAQ,KAAMs7B,OAAQ,KAAMmlE,WAAW,GACxD8O,MAAO,CAAEvvG,OAAQ,KAAMkgG,WAAW,EAAMI,sBAAsB,GAC9DjoG,KAAM,CAAE2H,OAAQ,IAAKs7B,OAAQ,IAAK0kE,YAAa,MAAOC,YAAa,OACnE1zB,KAAM,CAAEvsE,OAAQ,IAAKs7B,OAAQ,cAAe6kE,YAAa,WAAYE,QAAS,aAC9EjhF,MAAO,CAAEpf,OAAQ,KAAMs7B,OAAQ,cAAe6kE,YAAa,WAAYE,QAAS,aAChF8oB,eAAgB,CAAEnpH,OAAQ,KAAMkgG,WAAW,EAAMI,sBAAsB,GACvE8oB,aAAc,CAAEppH,OAAQ,MAAOkgG,WAAW,EAAMK,aAAa,GAC7D8oB,QAAS,CAAErpH,OAAQ,KAAMs7B,OAAQ,KAAM0kE,YAAa,MAAOE,WAAW,EAAMO,WAAW,GAEvFnkG,KAAM,CAAE0D,OAAQ,UAAWs7B,OAAQ,WAAYmlE,WAAW,GAC1D6oB,OAAQ,CAAEtpH,OAAQ,YAAas7B,OAAQ,aAAcmlE,WAAW,GAChExjG,MAAO,CAAE+C,OAAQ,WAAYs7B,OAAQ,YAAamlE,WAAW,GAC7D8oB,QAAS,CAAEvpH,OAAQ,aAAcs7B,OAAQ,cAAemlE,WAAW,GACnE+oB,QAAS,CAAExpH,OAAQ,aAAcs7B,OAAQ,cAAemlE,WAAW,GACnEgpB,MAAO,CAAEzpH,OAAQ,WAAYs7B,OAAQ,aAAcmlE,WAAW,GAC9DipB,OAAQ,CAAE1pH,OAAQ,YAAas7B,OAAQ,aAAcmlE,WAAW,GAChEkpB,MAAO,CAAE3pH,OAAQ,WAAYs7B,OAAQ,YAAamlE,WAAW,GAC7DmpB,OAAQ,CAAE5pH,OAAQ,YAAas7B,OAAQ,aAAcmlE,WAAW,GAChEopB,QAAS,CAAE7pH,OAAQ,6BAA8Bs7B,OAAQ,aAAc0kE,YAAa,aAAcS,WAAW,GAC7G0X,KAAM,CAAEn4G,OAAQ,UAAWs7B,OAAQ,WAAYmlE,WAAW,GAC1Dr+B,MAAO,CAAEpiE,OAAQ,WAAYs7B,OAAQ,YAAamlE,WAAW,GAC7DzI,MAAO,CAAEh4F,OAAQ,WAAYs7B,OAAQ,YAAamlE,WAAW,GAC7D8H,MAAO,CAAEvoG,OAAQ,2FAA4Fs7B,OAAQ,WAAYmlE,WAAW,GAC5IqpB,KAAM,CAAE9pH,OAAQ,+CAAgDygG,WAAW,GAC3EspB,MAAO,CAAE/pH,OAAQ,oBAAqBygG,WAAW,GACjDupB,KAAM,CAAEhqH,OAAQ,mBAAoBygG,WAAW,GAC/C1nE,MAAO,CAAE/4B,OAAQ,0GAA2GygG,WAAW,GACvImb,KAAM,CAAE57G,OAAQ,UAAWs7B,OAAQ,WAAYmlE,WAAW,GAC1Dt8F,KAAM,CAAEnE,OAAQ,aAAcs7B,OAAQ,WAAYmlE,WAAW,GAC7D96F,MAAO,CAAE3F,OAAQ,eAAgBs7B,OAAQ,YAAamlE,WAAW,GACjEwpB,IAAK,CAAEjqH,OAAQ,oEAAqEygG,WAAW,GAC/FypB,OAAQ,CAAElqH,OAAQ,wHAAyHs7B,OAAQ,YAAa6kE,YAAa,WAAYE,QAAS,YAAaI,WAAW,GAC1N0pB,IAAK,CAAEnqH,OAAQ,gHAAiHs7B,OAAQ,WAAYmlE,WAAW,KAGjK1xG,EAAAA,EAAAA,QAAOikE,IAAAA,UAA6B,eAAe,SAAU/G,GAC3DA,EAAM7kD,IAAI,OAAQgjH,EAAa,OAAQ,IAAK97H,OAC5C29D,EAAM7kD,IAAI,SAAUgjH,EAAa,SAAU,IAAK97H,OAChD29D,EAAM7kD,IAAI,QAASgjH,EAAa,QAAS,IAAK97H,OAC9C29D,EAAM7kD,IAAI,UAAWgjH,EAAa,UAAW,IAAK97H,OAElD29D,EAAM7kD,IAAI,gBAAiBgjH,EAAa,gBAAiB,IAAK97H,OAC9D29D,EAAM7kD,IAAI,QAASgjH,EAAa,QAAS,IAAK97H,OAC9C29D,EAAM7kD,IAAI,UAAWgjH,EAAa,UAAW,IAAK97H,OAClD29D,EAAM7kD,IAAI,OAAQgjH,EAAa,OAAQ,IAAK97H,OAC5C29D,EAAM7kD,IAAI,OAAQgjH,EAAa,OAAQ,IAAK97H,OAC5C29D,EAAM7kD,IAAI,QAASgjH,EAAa,QAAS,IAAK97H,OAC9C29D,EAAM7kD,IAAI,iBAAkBgjH,EAAa,iBAAkB,IAAK97H,OAChE29D,EAAM7kD,IAAI,eAAgBgjH,EAAa,eAAgB,IAAK97H,MAC9D,IAGA,IAAM+7H,EAAa,SAACpyG,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,EAEMg0C,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAE9D,SAASq/D,EAAanyG,EAAI7c,EAAKkvH,GAC7B,OAAO,SAAUz4H,GACXA,EAAEuJ,MAAQA,IAASvJ,EAAEyd,SAA2B,MAAhBy5G,GAAyBl3H,EAAE0d,SAA2B,SAAhBw5G,KACxEl3H,EAAEmC,iBACFq2H,EAAWpyG,EAAIqyG,GAEnB,CACF,CAEA,SAAS5pH,EAAQS,EAAMynH,GAGrB,OAAO9gE,IAAAA,WAAekH,MAAM,4BAA4B7tD,IAAWynH,EAAS,KAAKG,EAAW,IAAIH,EAAM,IAAM,GAC9G,CAEA,IAAM4B,EAAiB,SAACvyG,GACtB,OAAO,kBAAMoyG,EAAWpyG,EAAIs9E,EAAKv8E,MAAMyxG,WAAW,CACpD,EA+IA,OA1IAx+D,EAAM7kD,IACJ,UAUA3U,IAAAA,UACE,CACE2nB,UAAW,oCAEXg1C,MAAOZ,IAAK,qBAEdlgE,KAAKo8H,UAAUn5G,WAEjB,KAEF06C,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,mBAAoB,KAAM8tD,KAAK,cAAc5d,QAAS45E,EAAe,UAAa,MACnIv+D,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,qBAAsB,KAAM8tD,KAAK,gBAAgB5d,QAAS45E,EAAe,YAAe,MAC3Iv+D,EAAM7kD,IACJ,gBACA9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,4BAA6B,KAAM8tD,KAAK,uBAAuB5d,QAAS45E,EAAe,mBACtH,MAEFv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,oBAAqB,KAAM8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,WAAc,MAC5Iv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,sBAAuB,KAAM8tD,KAAK,8BAA8B5d,QAAS45E,EAAe,aAAgB,MAC5Jv+D,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,mBAAoB,KAAM8tD,KAAK,cAAc5d,QAAS45E,EAAe,UAAa,MACnIv+D,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,mBAAoB,KAAM8tD,KAAK,cAAc5d,QAAS45E,EAAe,UAAa,MACnIv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,oBAAqB,KAAM8tD,KAAK,eAAe5d,QAAS45E,EAAe,WAAc,MACvIv+D,EAAM7kD,IACJ,YACA3U,IAAAA,UACE,CACE2nB,UAAW,gCAEXg1C,MAAOZ,IAAK,iBAEdlgE,KAAKq8H,YAAYp5G,WAEnB,OAEF06C,EAAM7kD,IACJ,iBACA9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,6BAA8B,KAAM8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,oBACjH,MAEFv+D,EAAM7kD,IAAI,eAAgB9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,2BAA4B,KAAM8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,kBAAqB,KAE9Jv+D,EAAM7kD,IACJ,WACA3U,IAAAA,UACE,CACE2nB,UAAW,iCAEXg1C,MAAOZ,IAAK,uBAEdlgE,KAAKs8H,WAAWr5G,WAElB,MAEF06C,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,sBAAuB,KAAM8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,UAAa,MAC5Iv+D,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,wBAAyB,KAAM8tD,KAAK,sBAAsB5d,QAAS45E,EAAe,YAAe,KACpJv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,uBAAwB,KAAM8tD,KAAK,qBAAqB5d,QAAS45E,EAAe,WAAc,MAChJv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,yBAA0B,KAAM8tD,KAAK,uBAAuB5d,QAAS45E,EAAe,aAAgB,KAIxJv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,yBAA0B8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,WAAc,KACxIv+D,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,0BAA2B8tD,KAAK,gBAAgB5d,QAAS45E,EAAe,YAAe,MAC1Iv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,0BAA2B8tD,KAAK,mBAAmB5d,QAAS45E,EAAe,aAAgB,KAC/Iv+D,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,uBAAwB8tD,KAAK,mBAAmB5d,QAAS45E,EAAe,UAAa,MACtIv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,wBAAyB8tD,KAAK,mBAAmB5d,QAAS45E,EAAe,WAAc,KACzIv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,wBAAyB8tD,KAAK,qBAAqB5d,QAAS45E,EAAe,WAAc,MAC3Iv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,wBAAyB8tD,KAAK,eAAe5d,QAAS45E,EAAe,WAAc,KACrIv+D,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,uBAAwB8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,UAAa,MACrIv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,wBAAyB8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,WAAc,KAC1Iv+D,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,uBAAwB8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,UAAa,MACvIv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,wBAAyB8tD,KAAK,eAAe5d,QAAS45E,EAAe,WAAc,KACrIv+D,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,uBAAwB8tD,KAAK,mBAAmB5d,QAAS45E,EAAe,UAAa,KAKtIv+D,EAAM7kD,IACJ,QACA3U,IAAAA,UACE,CACE2nB,UAAW,kCAEXg1C,MAAOZ,IAAK,mBAEdlgE,KAAKqX,QAAQ4L,WAEf,KAEF06C,EAAM7kD,IACJ,OACA3U,IAAAA,UACE,CACE2nB,UAAW,iCAEXg1C,MAAOZ,IAAK,uBAEdlgE,KAAK6V,OAAOoN,WAEd,KAEF06C,EAAM7kD,IACJ,QACA3U,IAAAA,UACE,CACE2nB,UAAW,kCAEXg1C,MAAOZ,IAAK,gBAEdlgE,KAAKqoE,QAAQplD,WAEf,KAEF06C,EAAM7kD,IACJ,MACA3U,IAAAA,UACE,CACE2nB,UAAW,gCAEXg1C,MAAOZ,IAAK,kBAEdlgE,KAAK67H,MAAM54G,WAEb,KAEF06C,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,yBAA0B8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,YAAe,KAC3Iv+D,EAAM7kD,IAAI,MAAO9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,sBAAuB8tD,KAAK,eAAe5d,QAAS45E,EAAe,SAAY,GAExHv+D,CACT,EAEEyuD,EAMFv2G,KAAA,SAAK2kH,GAAS,IAAAhO,EAAA,KACN7uD,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAIxD1wB,GAFc61C,UAAU2uB,UAAU3pG,MAAM,aAE/B,CACb21H,QAAS,CAAE7qH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3EqqB,QAAS,CAAE9qH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3EsqB,QAAS,CAAE/qH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3EuqB,QAAS,CAAEhrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3EwqB,QAAS,CAAEjrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3EyqB,QAAS,CAAElrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3E0qB,QAAS,CAAEnrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3E2qB,QAAS,CAAEprH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3E4qB,QAAS,CAAErrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3E6qB,QAAS,CAAEtrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3E8qB,QAAS,CAAEvrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,GAC3E+qB,QAAS,CAAExrH,OAAQ,wBAAyBs7B,OAAQ,WAAYmlE,WAAW,KA+BvE+pB,EAAiB,SAACvyG,GACtB,OAAO,kBAvBU,SAACA,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,CAkBeoyG,CAAWpyG,EAAI6iG,EAAK9hG,MAAMyxG,WAAW,CACpD,EAeA,OAbAx+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,KAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,MAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,KAC3Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAoB8tD,KAAK,cAAc5d,QAAS45E,EAAe,aAAgB,KAEpHv+D,CACT,EAACyuD,EAED/0G,MAAA,SAAMmjH,GAAS,IAAA/L,EAAA,KACP9wD,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAExDg+D,EAAc74C,UAAU2uB,UAAU3pG,MAAM,aAAe,IAAM,OAE7DmlC,EAAS,CAUboxF,WAAY,CAAEzrH,OAAQ,2BAA4Bs7B,OAAQ,YAAamlE,WAAW,GAClFirB,YAAa,CAAE1rH,OAAQ,4BAA6Bs7B,OAAQ,YAAamlE,WAAW,GACpFkrB,WAAY,CAAE3rH,OAAQ,2BAA4Bs7B,OAAQ,YAAamlE,WAAW,GAClFmrB,aAAc,CAAE5rH,OAAQ,6BAA8Bs7B,OAAQ,YAAamlE,WAAW,GACtForB,aAAc,CAAE7rH,OAAQ,6BAA8Bs7B,OAAQ,YAAamlE,WAAW,GACtFqrB,aAAc,CAAE9rH,OAAQ,6BAA8Bs7B,OAAQ,YAAamlE,WAAW,GACtFsrB,UAAW,CAAE/rH,OAAQ,0BAA2Bs7B,OAAQ,YAAamlE,WAAW,GAChFurB,aAAc,CAAEhsH,OAAQ,6BAA8Bs7B,OAAQ,YAAamlE,WAAW,GACtFwrB,WAAY,CAAEjsH,OAAQ,2BAA4Bs7B,OAAQ,YAAamlE,WAAW,GAClFyrB,YAAc,CAAElsH,OAAQ,4BAA6Bs7B,OAAQ,YAAamlE,WAAW,GACrF0rB,YAAc,CAAEnsH,OAAQ,4BAA6Bs7B,OAAQ,YAAamlE,WAAW,GACrF2rB,YAAc,CAAEpsH,OAAQ,4BAA6Bs7B,OAAQ,YAAamlE,WAAW,IAyBvF,SAAS//F,EAAQS,EAAMynH,GAGrB,OAAO9gE,IAAAA,WAAekH,MAAM,4BAA4B7tD,IAAWynH,EAAS,KAAKG,EAAW,IAAIH,EAAM,IAAM,GAC9G,CAEA,IAAM4B,EAAiB,SAACvyG,GACtB,OAAO,kBAvBU,SAACA,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,CAkBeoyG,CAAWpyG,EAAI8kG,EAAK/jG,MAAMyxG,WAAW,CACpD,EAwBA,OAbAx+D,EAAM7kD,IAAI,aAAc9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,cAAe8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,gBAAmB,KAC1Iv+D,EAAM7kD,IAAI,cAAe9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,eAAgB8tD,KAAK,qBAAqB5d,QAAS45E,EAAe,iBAAoB,KAC9Iv+D,EAAM7kD,IAAI,aAAc9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,cAAe8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,gBAAmB,KAC1Iv+D,EAAM7kD,IAAI,eAAgB9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,gBAAiB8tD,KAAK,sBAAsB5d,QAAS45E,EAAe,kBAAqB,KAClJv+D,EAAM7kD,IAAI,eAAgB9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,gBAAiB8tD,KAAK,sBAAsB5d,QAAS45E,EAAe,kBAAqB,KAClJv+D,EAAM7kD,IAAI,eAAgB9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,gBAAiB8tD,KAAK,sBAAsB5d,QAAS45E,EAAe,kBAAqB,KAClJv+D,EAAM7kD,IAAI,YAAa9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,aAAc8tD,KAAK,mBAAmB5d,QAAS45E,EAAe,eAAkB,KACtIv+D,EAAM7kD,IAAI,eAAgB9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,gBAAiB8tD,KAAK,sBAAsB5d,QAAS45E,EAAe,kBAAqB,KAClJv+D,EAAM7kD,IAAI,aAAc9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,cAAe8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,gBAAmB,KAC1Iv+D,EAAM7kD,IAAI,cAAe9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,eAAgB8tD,KAAK,qBAAqB5d,QAAS45E,EAAe,iBAAoB,KAC9Iv+D,EAAM7kD,IAAI,eAAgB9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,eAAgB8tD,KAAK,qBAAqB5d,QAAS45E,EAAe,iBAAoB,KAC/Iv+D,EAAM7kD,IAAI,cAAe9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,eAAgB8tD,KAAK,qBAAqB5d,QAAS45E,EAAe,iBAAoB,KAEvIv+D,CACT,EAACyuD,EACDgQ,QAAA,SAAQ5B,GAAS,IAAA9L,EAAA,KACT/wD,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAExDg+D,EAAc74C,UAAU2uB,UAAU3pG,MAAM,aAAe,IAAM,OAE7DmlC,EAAS,CACb3hC,GAAI,CAAEsH,OAAQ,MAAOs7B,OAAQ,MAAOmlE,WAAW,GAC/C9nG,GAAI,CAAEqH,OAAQ,OAAQs7B,OAAQ,OAAQmlE,WAAW,GACjD7nG,GAAI,CAAEoH,OAAQ,QAASs7B,OAAQ,QAASmlE,WAAW,GACnD5nG,GAAI,CAAEmH,OAAQ,SAAUs7B,OAAQ,SAAUmlE,WAAW,GACrD3nG,GAAI,CAAEkH,OAAQ,UAAWs7B,OAAQ,UAAWmlE,WAAW,KAGzD1xG,EAAAA,EAAAA,QAAOikE,IAAAA,UAA6B,eAAe,SAAU/G,GAC3DA,EAAM7kD,IAAI,KAAMgjH,EAAa,KAAM,IAAK97H,OACxC29D,EAAM7kD,IAAI,KAAMgjH,EAAa,KAAM,IAAK97H,OACxC29D,EAAM7kD,IAAI,KAAMgjH,EAAa,KAAM,IAAK97H,MAC1C,IAGA,IAAM+7H,EAAa,SAACpyG,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,EAGA,SAASmyG,EAAanyG,EAAI7c,EAAKkvH,GAC7B,OAAO,SAAUz4H,GACXA,EAAEuJ,MAAQA,IAASvJ,EAAEyd,SAA2B,MAAhBy5G,GAAyBl3H,EAAE0d,SAA2B,SAAhBw5G,KACxEl3H,EAAEmC,iBACFq2H,EAAWpyG,EAAIqyG,GAEnB,CACF,CAEA,SAAS5pH,EAAQS,EAAMynH,GAGrB,OAAO9gE,IAAAA,WAAekH,MAAM,4BAA4B7tD,IAAWynH,EAAS,KAAKG,EAAW,IAAIH,EAAM,IAAM,GAC9G,CAEA,IAAM4B,EAAiB,SAACvyG,GACtB,OAAO,kBAAMoyG,EAAWpyG,EAAI+kG,EAAKhkG,MAAMyxG,WAAW,CACpD,EAoBA,OAlBAx+D,EAAM7kD,IAAI,KAAM9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,KAAM,KAAM8tD,KAAK,YAAY5d,QAAS45E,EAAe,QAAW,KAC/Gv+D,EAAM7kD,IAAI,KAAM9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,KAAM,KAAM8tD,KAAK,YAAY5d,QAAS45E,EAAe,QAAW,KAC/Gv+D,EAAM7kD,IAAI,KAAM9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,KAAM,KAAM8tD,KAAK,YAAY5d,QAAS45E,EAAe,QAAW,KAC/Gv+D,EAAM7kD,IAAI,KAAM9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,KAAM,KAAM8tD,KAAK,YAAY5d,QAAS45E,EAAe,QAAW,KAC/Gv+D,EAAM7kD,IAAI,KAAM9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,KAAM,KAAM8tD,KAAK,YAAY5d,QAAS45E,EAAe,QAAW,KAcxGv+D,CACT,EAACyuD,EACD/jD,MAAA,SAAMmyD,GAAS,IAAAuD,EAAA,KACPpgE,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAIxD1wB,GAFc61C,UAAU2uB,UAAU3pG,MAAM,aAE/B,CACbo3H,QAAS,CAAEtsH,OAAQ,0CAA2Cs7B,OAAQ,eAAgBmlE,WAAW,GACjG8rB,SAAU,CAAEvsH,OAAQ,0CAA2Cs7B,OAAQ,eAAgBmlE,WAAW,GAClG+rB,MAAO,CAAExsH,OAAQ,oCAAqCs7B,OAAQ,YAAamlE,WAAW,GACtFgsB,OAAQ,CAAEzsH,OAAQ,sCAAuCs7B,OAAQ,aAAcmlE,WAAW,GAC1FisB,QAAS,CAAE1sH,OAAQ,uDAAwDs7B,OAAQ,cAAemlE,WAAW,GAC7GksB,QAAS,CAAE3sH,OAAQ,wEAAyEs7B,OAAQ,aAAcmlE,WAAW,GAE7HmsB,SAAU,CAAE5sH,OAAQ,yCAA0Cs7B,OAAQ,eAAgBmlE,WAAW,GACjGosB,SAAU,CAAE7sH,OAAQ,0CAA2Cs7B,OAAQ,eAAgBmlE,WAAW,GAClGqsB,OAAQ,CAAE9sH,OAAQ,qCAAsCs7B,OAAQ,aAAcmlE,WAAW,GACzFssB,QAAS,CAAE/sH,OAAQ,wCAAyCs7B,OAAQ,cAAemlE,WAAW,GAE9FusB,SAAU,CAAEhtH,OAAQ,6FAA8Fs7B,OAAQ,eAAgBmlE,WAAW,GACrJwsB,QAAS,CAAEjtH,OAAQ,8EAA+Es7B,OAAQ,cAAemlE,WAAW,GACpIysB,OAAQ,CAAEltH,OAAQ,yEAA0Es7B,OAAQ,aAAcmlE,WAAW,GAC7H0sB,SAAU,CAAEntH,OAAQ,iFAAkFs7B,OAAQ,eAAgBmlE,WAAW,GAEzI2sB,QAAS,CAAEptH,OAAQ,4GAA6Gs7B,OAAQ,cAAemlE,WAAW,GAClK4sB,OAAQ,CAAErtH,OAAQ,sGAAuGs7B,OAAQ,aAAcmlE,WAAW,GAC1J6sB,SAAU,CAAEttH,OAAQ,0HAA2Hs7B,OAAQ,eAAgBmlE,WAAW,GAClL8sB,SAAU,CAAEvtH,OAAQ,gHAAiHs7B,OAAQ,eAAgBmlE,WAAW,KA+BpK+pB,EAAiB,SAACvyG,GACtB,OAAO,kBAvBU,SAACA,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,CAkBeoyG,CAAWpyG,EAAIo0G,EAAKrzG,MAAMyxG,WAAW,CACpD,EAwBA,OAtBAx+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAgD8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,aAAgB,KAC1Jv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAAiB,MAC9Jv+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,eAAe5d,QAAS45E,EAAe,WAAc,MACrJv+D,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAA+C8tD,KAAK,gBAAgB5d,QAAS45E,EAAe,YAAe,MACtJv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAgD8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,aAAgB,MAC1Jv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAgD8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,aAAgB,KAE1Jv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAAiB,MAC9Jv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAAiB,MAC9Jv+D,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAA+C8tD,KAAK,gBAAgB5d,QAAS45E,EAAe,YAAe,MACtJv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAgD8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,aAAgB,MAE1Jv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAAiB,MAC9Jv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAgD8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,aAAgB,MAC1Jv+D,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAA+C8tD,KAAK,gBAAgB5d,QAAS45E,EAAe,YAAe,KACtJv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAAiB,KAE9Jv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAgD8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,aAAgB,KAC1Jv+D,EAAM7kD,IAAI,SAAU9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAA+C8tD,KAAK,gBAAgB5d,QAAS45E,EAAe,YAAe,KACtJv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAAiB,KAC9Jv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,WAAOiJ,EAAiD8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAAiB,KAEvJv+D,CACT,EAACyuD,EACDyP,IAAA,SAAIrB,GAAS,IAAA0E,EAAA,KACLvhE,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAExDg+D,EAAc74C,UAAU2uB,UAAU3pG,MAAM,aAAe,IAAM,OAE7DmlC,EAAS,CACbozF,MAAO,CAAEztH,OAAQ,yDAA0Ds7B,OAAQ,UAAWmlE,WAAW,GACzGitB,KAAM,CAAE1tH,OAAQ,0DAA2Ds7B,OAAQ,UAAWmlE,WAAW,GACzGktB,IAAK,CAAE3tH,OAAQ,oDAAqDs7B,OAAQ,UAAWmlE,WAAW,IAyBpG,SAAS//F,EAAQS,EAAMynH,GAGrB,OAAO9gE,IAAAA,WAAekH,MAAM,4BAA4B7tD,IAAWynH,EAAS,KAAKG,EAAW,IAAIH,EAAM,IAAM,GAC9G,CAEA,IAAM4B,EAAiB,SAACvyG,GACtB,OAAO,kBAvBU,SAACA,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,CAkBeoyG,CAAWpyG,EAAIu1G,EAAKx0G,MAAMyxG,WAAW,CACpD,EAMA,OAJAx+D,EAAM7kD,IAAI,QAAS9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,4BAA6B8tD,KAAK,mBAAmB5d,QAAS45E,EAAe,YAC/Hv+D,EAAM7kD,IAAI,OAAQ9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,2BAA4B8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,WAC5Hv+D,EAAM7kD,IAAI,MAAO9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,0BAA2B8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,UAElHv+D,CACT,EAACyuD,EACDiQ,UAAA,SAAU7B,GAAS,IAAA8E,EAAA,KACX3hE,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAExDg+D,EAAc74C,UAAU2uB,UAAU3pG,MAAM,aAAe,IAAM,OAE7DmlC,EAAS,CACbthC,IAAK,CAAEiH,OAAQ,6EAA8EygG,WAAW,GACxGotB,SAAU,CAAE7tH,OAAQ,sHAAuHygG,WAAW,GACtJqtB,WAAY,CAAE9tH,OAAQ,0HAA2HygG,WAAW,GAC5JstB,UAAW,CAAE/tH,OAAQ,wHAAyHygG,WAAW,IAyB3J,SAAS//F,EAAQS,EAAMynH,GAGrB,OAAO9gE,IAAAA,WAAekH,MAAM,4BAA4B7tD,IAAWynH,EAAS,KAAKG,EAAW,IAAIH,EAAM,IAAM,GAC9G,CAEA,IAAM4B,EAAiB,SAACvyG,GACtB,OAAO,kBAvBU,SAACA,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,CAkBeoyG,CAAWpyG,EAAI21G,EAAK50G,MAAMyxG,WAAW,CACpD,EAOA,OALAx+D,EAAM7kD,IAAI,MAAO9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,sBAAuB8tD,KAAK,sBAAsB5d,QAAS45E,EAAe,UAC1Hv+D,EAAM7kD,IAAI,WAAY9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,2BAA4B8tD,KAAK,yBAAyB5d,QAAS45E,EAAe,eACvIv+D,EAAM7kD,IAAI,aAAc9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,6BAA8B8tD,KAAK,4BAA4B5d,QAAS45E,EAAe,iBAC9Iv+D,EAAM7kD,IAAI,YAAa9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,4BAA6B8tD,KAAK,yBAAyB5d,QAAS45E,EAAe,gBAElIv+D,CACT,EAACyuD,EACDkQ,SAAA,SAAS9B,GAAS,IAAAkF,EAAA,KACV/hE,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAExDg+D,EAAc74C,UAAU2uB,UAAU3pG,MAAM,aAAe,IAAM,OAE7DmlC,EAAS,CACb4zF,IAAK,CAAEjuH,OAAQ,SAAUs7B,OAAQ,UAAWmlE,WAAW,GACvDytB,IAAK,CAAEluH,OAAQ,SAAUs7B,OAAQ,UAAWmlE,WAAW,GACvDjnG,IAAK,CAAEwG,OAAQ,QAASs7B,OAAQ,UAAWmlE,WAAW,GACtDlnG,IAAK,CAAEyG,OAAQ,QAASs7B,OAAQ,UAAWmlE,WAAW,GACtD0tB,IAAK,CAAEnuH,OAAQ,QAASs7B,OAAQ,UAAWmlE,WAAW,GACtD2tB,QAAS,CAAEpuH,OAAQ,+BAAgCs7B,OAAQ,cAAemlE,WAAW,GACrF7lD,WAAY,CAAE56C,OAAQ,6BAA8Bs7B,OAAQ,iBAAkBmlE,WAAW,GACzFjoG,GAAI,CAAEwH,OAAQ,OAAQygG,WAAW,GACjC4tB,WAAY,CAAEruH,OAAQ,gBAAiBs7B,OAAQ,YAAamlE,WAAW,GACvE6tB,YAAa,CAAEtuH,OAAQ,iBAAkBs7B,OAAQ,YAAamlE,WAAW,GACzE+oB,QAAS,CAAExpH,OAAQ,aAAcs7B,OAAQ,cAAemlE,WAAW,IA0BrE,SAAS//F,EAAQS,EAAMynH,GAGrB,OAAO9gE,IAAAA,WAAekH,MAAM,4BAA4B7tD,IAAWynH,EAAS,KAAKG,EAAW,IAAIH,EAAM,IAAM,GAC9G,CAEA,IAAM4B,EAAiB,SAACvyG,GACtB,OAAO,kBAvBU,SAACA,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,CAkBeoyG,CAAWpyG,EAAI+1G,EAAKh1G,MAAMyxG,WAAW,CACpD,EAcA,OAZAx+D,EAAM7kD,IAAI,MAAO9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,sBAAuB8tD,KAAK,yBAAyB5d,QAAS45E,EAAe,UAE7Hv+D,EAAM7kD,IAAI,MAAO9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,sBAAuB8tD,KAAK,2BAA2B5d,QAAS45E,EAAe,UAC/Hv+D,EAAM7kD,IAAI,MAAO9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,sBAAuB8tD,KAAK,0BAA0B5d,QAAS45E,EAAe,UAE9Hv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,0BAA2B8tD,KAAK,wBAAwB5d,QAAS45E,EAAe,cACpIv+D,EAAM7kD,IAAI,aAAc9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,6BAA8B8tD,KAAK,0BAA0B5d,QAAS45E,EAAe,iBAC5Iv+D,EAAM7kD,IAAI,KAAM9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,qBAAsB8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,SACtHv+D,EAAM7kD,IAAI,aAAc9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,6BAA8B8tD,KAAK,wBAAwB5d,QAAS45E,EAAe,iBAC1Iv+D,EAAM7kD,IAAI,cAAe9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,8BAA+B8tD,KAAK,yBAAyB5d,QAAS45E,EAAe,kBAC7Iv+D,EAAM7kD,IAAI,UAAW9D,EAACqlH,EAAc,CAAClxH,MAAOiJ,EAAQ,0BAA2B8tD,KAAK,kBAAkB5d,QAAS45E,EAAe,cAEvHv+D,CACT,EAACw2C,CAAA,CAntBkC,CAAS94C,KAwtB9C7B,IAAAA,aAAiB1gD,IAAI,wBAAwB,YAC3CrY,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,WAAW,WACnC1yB,IAAAA,QAAY1M,MAAQ0M,IAAAA,QAAYx0C,QAAQ0mD,MAC1CrrE,EAAE,oBACC6R,IAAI,SACJnR,GAAG,SAAS,kBACXotE,IAAAA,YAA+BpuE,KAC7By5D,IAAAA,QAAYj9C,IAAI,eAChB,GACA,EACD,IAELlc,EAAE,kBACC6R,IAAI,SACJnR,GAAG,SAAS,kBACXotE,IAAAA,YAA+BpuE,KAC7By5D,IAAAA,QAAYj9C,IAAI,eAChB,GACA,EACD,MAGLlc,EAAE,oBACC6R,IAAI,SACJnR,GAAG,SAAS,kBAAMy4D,IAAAA,MAAU9sD,KAAKk+D,IAAW,IAC/CvqE,EAAE,oBACC6R,IAAI,SACJnR,GAAG,SAAS,kBAAMy4D,IAAAA,MAAU9sD,KAAKk+D,IAAW,IAC/CvqE,EAAE,kBACC6R,IAAI,SACJnR,GAAG,SAAS,kBAAMy4D,IAAAA,MAAU9sD,KAAKk+D,IAAW,IAEnD,KAOAnqE,EAAAA,EAAAA,QAAO+xE,IAAAA,UAAsB,YAAY,YAkE3C,WACC,IAAIK,EAAQjyE,SAASipB,uBAAuB,aAC5C,GAAoB,GAAhBgpD,EAAMpuE,OAEV,IAAK,IAAIwC,EAAI,EAAGA,EAAI4rE,EAAMpuE,OAAQwC,IAGjC,IAFA,IACIg5H,EADOptD,EAAM5rE,GACA4iB,uBAAuB,iBAC/BzhB,EAAI,EAAGA,EAAI63H,EAAMx7H,OAAQ2D,IAAK,CACtC,IAAI83H,EAAOD,EAAM73H,GACbyuC,EAAMqpF,EAAKt2G,qBAAqB,KAAK,GAAGjH,aAAa,QAKzD,GAFAu9G,EAAKliE,UAAUn5D,OAAO,iBAEjBgyC,EAAI2tD,WAAW,uCAApB,CAKA07B,EAAKx4H,UAAY,gEAGjBmvC,EAAMA,EAAI18B,UAAU,EAAG08B,EAAI2Z,YAAY,MAEvC,IAAIvV,EAAM,IAAIC,eAEdD,EAAIM,KAAK,MAAO1E,EAAM,QAAQ,GAE9BoE,EAAIc,aAAe,WAEnBd,EAAIS,OAAS,WACZ,GAAmB,KAAf17C,KAAKg5C,OAAe,KAEnB3vC,EADMrJ,KAAKmgI,YACAv2G,qBAAqB,QAAQ,GAAGliB,UAE/Cw4H,EAAKx4H,UAAY2B,EAMjB,IAFA,IAAIksB,EAAW2qG,EAAK/2G,WAAW,GAExB+2G,EAAKpyG,YACXoyG,EAAK13H,YAAY03H,EAAKpyG,YAGvBoyG,EAAKnsH,YAAYwhB,GAEjB,IAAIxiB,EAAQmtH,EAAK/2G,WAAW,GAAGA,WAAW,GAAGzhB,UACzCsC,EAAMk2H,EAAK/2G,WAAW,GAAGA,WAAW,GAIpC4iB,EAAS,CAAC,EAEdh5B,EAAMhH,MAAM,KAAK4K,SAAQ,SAASpT,GACjC,IAAI4pC,EAAQ5pC,EAAEwI,MAAM,KAEhBxL,EAAU4sC,EAAM,GAChBp6B,EAAQo6B,EAAM,GAEbp6B,IAELg5B,EAAOxrC,GAAWwS,EAAQ,IAG3B,IAEAmtH,EAAK/2G,WAAW,GAAG3gB,YAAY03H,EAAK/2G,WAAW,GAAGA,WAAW,IAE7D,SAAS4yG,EAAWx7H,GACnB,GAAIA,EAAQ4oB,WAAW1kB,OAAS,EAC/B,IAAK,IAAIwC,EAAI,EAAGA,EAAI1G,EAAQ4oB,WAAW1kB,OAAQwC,IAC9C80H,EAAWx7H,EAAQ4oB,WAAWliB,IAIhC,GAAK1G,EAAQurB,UAAb,CAEA,IAAIy6B,EAAUhmD,EAAQurB,UAAU/f,MAAM,KAElCq0H,EAAc,GAElB75E,EAAQ5vC,SAAQ,SAASpT,GACxB68H,GAAer0F,EAAO,IAAMxoC,EAC7B,IAEAhD,EAAQqiB,aAAa,QAASw9G,EAAcC,GAI5C9/H,EAAQ+H,gBAAgB,QAdU,CAenC,CAEAyzH,CAAW/xH,GAGX,IAAIw/B,EAAWx/B,EAAI2Y,aAAa,SAAS5W,MAAM,KAE/Cy9B,EAAS7yB,SAAQ,SAASpT,EAAG0D,GACxB1D,EAAE22D,SAAS,eACd1wB,EAASviC,GAAK,kBAEhB,IAGA+C,EAAI4Y,aAAa,QAAS,eAAiB4mB,EAASpxB,KAAK,MAEzD,IAAI6lE,EAAOr9E,SAAS0E,cAAc,KAClC24E,EAAKr7D,aAAa,OAAQi0B,GAC1BonC,EAAKr7D,aAAa,SAAU,UAC5Bq7D,EAAKv2E,UAAY,mDAEjBw4H,EAAKnsH,YAAYkqE,EAClB,CACD,EAEAhjC,EAAIU,QAAU,WACbukF,EAAKx4H,UAAY,uEAClB,EAEAuzC,EAAIvB,MAvGJ,MAFCwmF,EAAKx4H,UAAY,oEA0GnB,CAEF,CA5LI44H,EACF,IAoBA,IAAI32G,EAAK,EAGH42G,EAAa,WACEvgI,KAAKK,EAAE,SAEfoB,MAAK,SAACwF,EAAGqC,GAClB,IAAM4rE,EAAa70E,EAAEiJ,GAErB,IAAI4rE,EAAWr0E,KAAK,6BAA6B4D,OAAjD,CAEA,IAAM+7H,EAAUtrD,EAAWr0E,KAAK,gCAEhC,GAAK2/H,EAAQ/7H,OAAb,CAEA,IAAMmB,EAASsvE,EAAWr0E,KAAK,QACzBqiB,EAAMyG,IAEZ62G,EAAQl8H,KAAK,OAAQ,aAAa4e,GAE7Bs9G,EAAQz9H,GAAG,cACdy9H,EAAQ,GAAG59G,aAAa,UAAW,WAErChd,EAAOnE,MAAK,SAACwF,EAAGgb,GACd,IAAMqyD,EAAQj0E,EAAE4hB,GACV0H,EAAK,OAAOzG,EAAG,OAAMjc,EAE3BqtE,EAAMzzE,KAAK,uBAAuByD,KAAK,KAAMqlB,GAC7C2qD,EAAMzzE,KAAK,SAASyD,KAAK,MAAOqlB,EAClC,GAhB2B,CAJoC,CAqBjE,GACF,GAEAlpB,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,CAAC,WAAY,YAAaq0C,IACxD9/H,EAAAA,EAAAA,QAAOmxE,IAAAA,UAA+B,YAAY,WAAY,IAAA6uD,EAAA,MAC5DhgI,EAAAA,EAAAA,QAAOT,KAAK0qB,MAAO,YAAY,kBAAM61G,EAAWxgI,KAAK0gI,EAAK,GAC5D,GAEF,IAIA,IAAIJ,EAAiB,oBCx1BrB7mE,IAAAA,aAAiB1gD,IACf,wBACA,YCPArY,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,gBAAgB,SAAUjJ,GACnDA,EAAM7kD,IAAI,uBAAwB9D,EAACm/F,EAAgB,CAACgoB,WAAYn8H,KAAK0qB,MAAMq8C,SAASC,SACxF,GDSA,IACC,I;;;;;;;MEhBH,IAAIxO,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAe,OCA1D,EAA+B8D,OAAOC,KAAK/D,OAAY,I,aCA7D,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCexDj6C,IAAAA,aAAiB1gD,IAAI,2BAA2B,YAE5CrY,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,UAAU,WAElC,IAAIkzC,EAAK3+H,OAAO2+H,IAAM,CAAC,EACvBA,EAAGC,mBAAqB,aACxBD,EAAGE,cAAgB39H,KAAKwV,MAAMwB,KAAK+pB,MAAQ,KAC3C08F,EAAGG,QAAU,WACbH,EAAGI,YAAc,eACjBJ,EAAGK,cAAgB,iBAEnBngI,SAASgrB,iBAAiB,oBAAoB,WAG1C,IAAMnhB,EAAM+uD,IAAAA,MAAU4J,UAAU,WAAa,iDACvCvsB,EAAM2iB,IAAAA,MAAU4J,UAAU,WAG1B49D,EAAcxnE,IAAAA,MAAU4J,UAAU,gCAAkC5J,IAAAA,MAAU4J,UAAU,gCAAkC,WAC1H69D,EAAcznE,IAAAA,MAAU4J,UAAU,gCAAkC5J,IAAAA,MAAU4J,UAAU,gCAAkCvsB,EAC1HqqF,EAAc1nE,IAAAA,MAAU4J,UAAU,gCAAkC5J,IAAAA,MAAU4J,UAAU,gCAAkC34D,EAC1H02H,EAAc3nE,IAAAA,MAAU4J,UAAU,gCAAkC5J,IAAAA,MAAU4J,UAAU,gCALlF,MAQRg+D,EAASxgI,SAAS4wD,cAAc,GAAKwvE,GACzC,GAAII,EAAQ,CAER,IAAIC,EAAUzgI,SAAS0E,cAAc,OACrC+7H,EAAQ35H,UAAY,kCAAmCu5H,EAAa,+CAAgDC,EAAa,YAAaC,EAAa,UAAWA,EAAa,iBACnLE,EAAQv1G,UAAY,+BAEpBzrB,EAAGghI,GAAU15F,aAAcy5F,EAE/B,CAGA,IAMME,EAAe9nE,IAAAA,WAAekH,MAAM,wCACpC6gE,EAAmB/nE,IAAAA,WAAekH,MAAM,4CACxC8gE,EAA6BhoE,IAAAA,MAAU4J,UAAU,+CAAiD,aAAc5J,IAAAA,MAAU4J,UAAU,+CAAgD,cAAgB,aAAcm+D,EAAkB,cACpOE,EAAiBjoE,IAAAA,MAAU4J,UAAU,mCAAqC5J,IAAAA,MAAU4J,UAAU,mCATlF,SAUZs+D,EAAyBloE,IAAAA,MAAU4J,UAAU,2CAA6C5J,IAAAA,MAAU4J,UAAU,2CAT1F,oBAUpBu+D,EAA2BnoE,IAAAA,MAAU4J,UAAU,6CAA+C5J,IAAAA,MAAU4J,UAAU,6CAT5F,2DAUtBw+D,EAA6BpoE,IAAAA,MAAU4J,UAAU,+CAAiD5J,IAAAA,MAAU4J,UAAU,+CAT7G,GAUTy+D,EAAyBroE,IAAAA,MAAU4J,UAAU,2CAA6C5J,IAAAA,MAAU4J,UAAU,2CATjG,WAUb0+D,EAAwBtoE,IAAAA,MAAU4J,UAAU,0CAA4C5J,IAAAA,MAAU4J,UAAU,0CAThG,QAUZ2+D,EAAyBvoE,IAAAA,MAAU4J,UAAU,2CAA6C5J,IAAAA,MAAU4J,UAAU,2CAA6Co+D,EAA6BF,EAAeE,EAEzMQ,EAAgBP,EAChBQ,EAAiBP,EACjBQ,EAAmBP,EACnBQ,EAAqBP,EACrBQ,EAAgB,CAChB7hI,QAASshI,EACT/qG,OAAQgrG,EACR1rG,QAAS2rG,EACTzzF,SAAU,KACV+qF,MAAO,GAEX,SAASgJ,EAAiBC,GACtB,GAAIA,EAAGzhI,KAAK,6BAA6B4D,OACrC,OAAO,EAEX,IAAI89H,EAAeD,EAAGzhI,KAAK,oBACvB2hI,EAAgBF,EAAGzhI,KAAK,qBACxB4hI,EAAcH,EAAGzhI,KAAK,mBACtB6hI,EAAgBJ,EAAGzhI,KAAK,sBACxB8hI,EAAgB,EAQpB,GANIJ,EAAa99H,SACbk+H,GAAiBJ,EAAargI,UAE9BsgI,EAAc/9H,SACdk+H,GAAiBH,EAActgI,UAE/BugI,EAAYh+H,OAAQ,CACpB,QAA6DqO,IAAzD2vH,EAAY,GAAGv6H,WAAW,2BAC1B,OAAO,EACJ,GAAIu6H,EAAY1/H,GAAG,WACtB,OAAO,CAEf,MAAO,GAAI2/H,EAAcj+H,QACkB,OAAnCi+H,EAAcr/H,IAAI,cAClB,OAAO,EAIf,OAAQi/H,EAAGpgI,SAAWygI,EAAiB,CAC3C,CA2HA,SAASC,EAAsB/vH,EAAM9L,EAAO87H,GACxC,GAAIA,EAAM,CACN,IAAInqH,EAAO,IAAIuB,KACfvB,EAAKoqH,QAAQpqH,EAAKuD,UAAmB,GAAP4mH,EAAY,GAAK,GAAK,KACpD,IAAIE,EAAU,aAAerqH,EAAKsqH,aACtC,MACQD,EAAU,GAGlB,IAAI1iF,EAAgB,MAARA,EAAgB,UAAYA,EAAO,GAM/Cz/C,SAASijF,OAAShxE,EAAO,IAAMwV,OAAOthB,GAASg8H,EAAU1iF,EAH5C,UAIjB,CAxCAhgD,EAAEO,UAAUG,GAAG,QAAS,+CAA+C,WAEnEV,EAAE,QAAQuC,YAAY,sBAItBggI,EAAsB,6BAFV3/H,KAAKwV,MAAMwB,KAAK+pB,MAAQ,KAEuB,KAE/D,IACA3jC,EAAEO,UAAUG,GAAG,QAAS,eAAe,WACnCV,EAAEL,MAAM0E,OAAO,cAAc6sC,UAC7BlxC,EAAE,QAAQuC,YAAY,sBAItBggI,EAAsB,6BAFV3/H,KAAKwV,MAAMwB,KAAK+pB,MAAQ,KAEuB,KAE/D,IACA3jC,EAAEO,UAAUG,GAAG,oBAAoB,YApHnC,WACI2/H,EAAGuC,eAAgB,EACnB5iI,EAAE,2CAA2C6N,SAAS,QACtD,IAAIg1H,EAAU7iI,EAAEqgI,EAAGI,YAAc,IAAMJ,EAAGG,QAA1BH,yBAAoEA,EAAGK,cAAgB,IAAML,EAAGG,QAAU,yBAG1H,GAAIqC,EAAQz+H,QAAUpE,EAAE,4BAA4B0C,GAAG,WACnD,GAAqB,UAAjBi/H,GAA8C,WAAjBA,EAC7BkB,EAAQzhI,MAAK,WACT,IAAK4gI,EAAiBhiI,EAAEL,QAAsD,GAA5CK,EAAEL,MAAMa,KAAK,qBAAqB4D,OAChE,GAAqB,UAAjBu9H,EAA2B,CAC3B,IAAImB,EAAS9iI,EAAEL,MAAMa,KAAK,cACtBsiI,EAAO1+H,SACP0+H,EAAOtiI,KAAK,OAAOY,MAAK,WACpBpB,EAAEL,MAAMsE,KAAK,MAAOjE,EAAEL,MAAM2B,KAAK,OACrC,IACAwhI,EAAO7xF,SAEf,MACIjxC,EAAE,gCAAgCgJ,KAAK64H,GAAkBl6F,UAAU3nC,EAAEL,MAGjF,QACG,CACH,IAAIojI,EAAa,EACjBF,EAAQzhI,MAAK,WACJ4gI,EAAiBhiI,EAAEL,SACpBojI,GAAc,EAEtB,IAEA,IAAIC,GAAmB,EAOvB,GAJIjB,EAAc/I,OAAS+I,EAAc/I,MAFrB,IAGhBgK,GAAmB,IAGjBD,GAAcC,EAChB,GAAqB,UAAjBrB,EAA2B,CAE3B,IAAIsB,IAAoBlB,EAAc9zF,UAmG1D,SAA6Bz7B,GAGzB,IAFA,IAAI0wH,EAAS1wH,8BACT2wH,EAAK5iI,SAASijF,OAAO93E,MAAM,KACtB9E,EAAI,EAAGA,EAAIu8H,EAAG/+H,OAAQwC,IAAK,CAEhC,IADA,IAAI0N,EAAI6uH,EAAGv8H,GACY,MAAhB0N,EAAE2wC,OAAO,IAAY3wC,EAAIA,EAAEwF,UAAU,EAAGxF,EAAElQ,QACjD,GAA0B,IAAtBkQ,EAAEuM,QAAQqiH,GACd,OAAO5uH,EAAEwF,UAAUopH,GAAe5uH,EAAElQ,OACxC,CACA,OAAO,IACX,CA7GqEg/H,GACjD,GAAIH,GAAsBrgI,KAAKwV,MAAMwB,KAAK+pB,MAAQ,KAAQs/F,GAA+C,GAAzBlB,EAAc9zF,SAE1F,OAGJ,IAAIlY,EAAU8rG,EACVE,EAAchsG,UACdA,EAAUgsG,EAAchsG,SAG5B,IAAIstG,EAASrjI,EAAE,0BAGf,GAFAqjI,EAAOh8F,QAAQ,0CACfg8F,EAAOj8F,OAAO,SAAWrR,EAAU,WACP,WAAxBgsG,EAActrG,OACd4sG,EAAO17F,UAAUo6F,EAAc7hI,cAE5B,GAA4B,UAAxB6hI,EAActrG,OACrB4sG,EAAOx1H,SAASk0H,EAAc7hI,aAE3B,CACH,IAAMojI,EAAcD,EAAO,GAAGE,UAC9BpqE,IAAAA,OAAW9sD,KAAK87D,IAAO,CAAExjE,KAAM,SAAW2+H,EAE9C,CACAD,EAAOpyF,OAAO,QAEdjxC,EAAE,QAAQwC,SAAS,qBAEvB,KAAO,CACH,IAAIghI,EAAO9hI,OAAOkuB,SAASG,KACvB0zG,EAAO3B,EACX,GAAI2B,IAAgC,IAAxBD,EAAK3iH,QAAQ4iH,GAErB,YADA/hI,OAAOkuB,SAASG,KAAO0zG,GAG3B,IAAIC,EAAWrD,EAAGsD,eAAe,CAC7B76H,MAAO84H,EACPx5D,aAAa,EACbp/D,KAAM,6BAA+B64H,EAAmB,WAE9C,IAAIxB,EAAGuD,QAAQF,EAAU,CACnCG,eAAe,EACfC,UAAU,EACVC,aAAa,EACbt4G,UAAW,wBAEPpf,OACRrM,EAAE,QAAQonC,OAAO,sDACjBpnC,EAAE,wBAAwBgD,IAAI,mBAAoB,SAASstC,OAAO,OAAQ,IAE9E,CAER,CAER,CAqBI0zF,EACJ,IAEAhkI,EAAEO,UAAU6C,QAAQ,mBAgCxB,GAEJ,GACJ,G;;;;;;;;mCC/PS,SAAU6gI,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,8FAA8FjM,MAClG,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,4DAA4DhM,MAClE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1Cy4H,cAAe,SACfC,KAAM,SAAUn4G,GACZ,MAAO,QAAQ/nB,KAAK+nB,EACxB,EACA1P,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACAC,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,YACNtU,EAAG,mBACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,YACJ9H,EAAG,SACH4H,GAAI,SACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,WACHiF,GAAI,YACJlF,EAAG,UACHwH,GAAI,WAERgmH,uBAAwB,kBACxBptH,QAAS,SAAUuoD,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAEhE,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3E0CnkH,CAAQ69B,EAAQ,8BCOjD,SAAUolF,GAAU,aAIzB,IAAImB,EAAa,SAAUxwH,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,CACV,EACAywH,EAAU,CACN56H,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJkK,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJe,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJnB,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJkD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGR8tH,EAAY,SAAUv6H,GAClB,OAAO,SAAUo1D,EAAQolE,EAAe/pG,EAAQgqG,GAC5C,IAAIhxH,EAAI4wH,EAAWjlE,GACfhB,EAAMkmE,EAAQt6H,GAAGq6H,EAAWjlE,IAIhC,OAHU,IAAN3rD,IACA2qD,EAAMA,EAAIomE,EAAgB,EAAI,IAE3BpmE,EAAI77D,QAAQ,MAAO68D,EAC9B,CACJ,EACAxoD,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGGssH,EAAOC,aAAa,QAAS,CACpCvsH,OAAQA,EACRiF,YAAajF,EACbD,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,wCAAwCxR,MAAM,KAC7DsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVwlH,cAAe,MACfC,KAAM,SAAUn4G,GACZ,MAAO,MAAQA,CACnB,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,IAEA,GAEf,EACAjB,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,SACNtU,EAAG66H,EAAU,KACb7nH,GAAI6nH,EAAU,KACd3wH,EAAG2wH,EAAU,KACb9nH,GAAI8nH,EAAU,KACd5vH,EAAG4vH,EAAU,KACbhoH,GAAIgoH,EAAU,KACd/wH,EAAG+wH,EAAU,KACbvoH,GAAIuoH,EAAU,KACd7tH,EAAG6tH,EAAU,KACb5oH,GAAI4oH,EAAU,KACd9tH,EAAG8tH,EAAU,KACbtmH,GAAIsmH,EAAU,MAElBM,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA5J0CnkH,CAAQ69B,EAAQ,6BCDjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wEAAwEjM,MAC5E,KAEJkR,YACI,wEAAwElR,MACpE,KAERgM,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,wCAAwCxR,MAAM,KAC7DsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,OACHgT,GAAI,WACJ9I,EAAG,QACH6I,GAAI,WACJ9H,EAAG,OACH4H,GAAI,WACJ/I,EAAG,MACHwI,GAAI,UACJtF,EAAG,MACHiF,GAAI,UACJlF,EAAG,MACHwH,GAAI,YAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CA3D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPT,EAAa,SAAUxwH,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,CACV,EACAywH,EAAU,CACN56H,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJkK,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJe,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJnB,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJkD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGR8tH,EAAY,SAAUv6H,GAClB,OAAO,SAAUo1D,EAAQolE,EAAe/pG,EAAQgqG,GAC5C,IAAIhxH,EAAI4wH,EAAWjlE,GACfhB,EAAMkmE,EAAQt6H,GAAGq6H,EAAWjlE,IAIhC,OAHU,IAAN3rD,IACA2qD,EAAMA,EAAIomE,EAAgB,EAAI,IAE3BpmE,EAAI77D,QAAQ,MAAO68D,EAC9B,CACJ,EACAxoD,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGGssH,EAAOC,aAAa,QAAS,CACpCvsH,OAAQA,EACRiF,YAAajF,EACbD,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,wCAAwCxR,MAAM,KAC7DsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVwlH,cAAe,MACfC,KAAM,SAAUn4G,GACZ,MAAO,MAAQA,CACnB,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,IAEA,GAEf,EACAjB,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,SACNtU,EAAG66H,EAAU,KACb7nH,GAAI6nH,EAAU,KACd3wH,EAAG2wH,EAAU,KACb9nH,GAAI8nH,EAAU,KACd5vH,EAAG4vH,EAAU,KACbhoH,GAAIgoH,EAAU,KACd/wH,EAAG+wH,EAAU,KACbvoH,GAAIuoH,EAAU,KACd7tH,EAAG6tH,EAAU,KACb5oH,GAAI4oH,EAAU,KACd9tH,EAAG8tH,EAAU,KACbtmH,GAAIsmH,EAAU,MAElBQ,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EACFl4B,QAAQ,OAAO,SAAUiD,GACtB,OAAOs/H,EAAUt/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CA/K0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wEAAwEjM,MAC5E,KAEJkR,YACI,wEAAwElR,MACpE,KAERgM,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,wCAAwCxR,MAAM,KAC7DsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,OACHgT,GAAI,WACJ9I,EAAG,QACH6I,GAAI,WACJ9H,EAAG,OACH4H,GAAI,WACJ/I,EAAG,MACHwI,GAAI,UACJtF,EAAG,MACHiF,GAAI,UACJlF,EAAG,MACHwH,GAAI,YAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3D0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF9B,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,6EAA6EjM,MACjF,KAEJkR,YACI,6EAA6ElR,MACzE,KAERgM,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,wCAAwCxR,MAAM,KAC7DsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVwlH,cAAe,MACfC,KAAM,SAAUn4G,GACZ,MAAO,MAAQA,CACnB,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,IAEA,GAEf,EACAjB,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,OACHgT,GAAI,WACJ9I,EAAG,QACH6I,GAAI,WACJ9H,EAAG,OACH4H,GAAI,WACJ/I,EAAG,MACHwI,GAAI,UACJtF,EAAG,MACHiF,GAAI,UACJlF,EAAG,MACHwH,GAAI,YAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EACFl4B,QAAQ,iBAAiB,SAAUiD,GAChC,OAAOw/H,EAAUx/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EACFl4B,QAAQ,OAAO,SAAUiD,GACtB,OAAOs/H,EAAUt/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7G0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,yEAAyEjM,MAC7E,KAEJkR,YACI,yEAAyElR,MACrE,KAERgM,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,wCAAwCxR,MAAM,KAC7DsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,OACHgT,GAAI,WACJ9I,EAAG,QACH6I,GAAI,WACJ9H,EAAG,OACH4H,GAAI,WACJ/I,EAAG,MACHwI,GAAI,UACJtF,EAAG,MACHiF,GAAI,UACJlF,EAAG,MACHwH,GAAI,YAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3D0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETX,EAAa,SAAUxwH,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,CACV,EACAywH,EAAU,CACN56H,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJkK,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJe,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJnB,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJkD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJD,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGR8tH,EAAY,SAAUv6H,GAClB,OAAO,SAAUo1D,EAAQolE,EAAe/pG,EAAQgqG,GAC5C,IAAIhxH,EAAI4wH,EAAWjlE,GACfhB,EAAMkmE,EAAQt6H,GAAGq6H,EAAWjlE,IAIhC,OAHU,IAAN3rD,IACA2qD,EAAMA,EAAIomE,EAAgB,EAAI,IAE3BpmE,EAAI77D,QAAQ,MAAO68D,EAC9B,CACJ,EACAxoD,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGCssH,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQA,EACRiF,YAAajF,EACbD,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,wCAAwCxR,MAAM,KAC7DsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVwlH,cAAe,MACfC,KAAM,SAAUn4G,GACZ,MAAO,MAAQA,CACnB,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,IAEA,GAEf,EACAjB,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,SACNtU,EAAG66H,EAAU,KACb7nH,GAAI6nH,EAAU,KACd3wH,EAAG2wH,EAAU,KACb9nH,GAAI8nH,EAAU,KACd5vH,EAAG4vH,EAAU,KACbhoH,GAAIgoH,EAAU,KACd/wH,EAAG+wH,EAAU,KACbvoH,GAAIuoH,EAAU,KACd7tH,EAAG6tH,EAAU,KACb5oH,GAAI4oH,EAAU,KACd9tH,EAAG8tH,EAAU,KACbtmH,GAAIsmH,EAAU,MAElBQ,SAAU,SAAUtqG,GAChB,OAAOA,EACFl4B,QAAQ,iBAAiB,SAAUiD,GAChC,OAAOw/H,EAAUx/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EACFl4B,QAAQ,OAAO,SAAUiD,GACtB,OAAOs/H,EAAUt/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CA/L0CnkH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIzB,IAAI+B,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC/B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,+EAA+EjM,MACnF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,qEAAqEhM,MACjE,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,WACNtU,EAAG,kBACHgT,GAAI,YACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,QACJlF,EAAG,SACHwH,GAAI,SAERmlH,cAAe,0BACfC,KAAM,SAAUn4G,GACZ,MAAO,mBAAmB/nB,KAAK+nB,EACnC,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,OAEf,EACAV,uBAAwB,wCACxBptH,QAAS,SAAUuoD,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI92D,EAAI82D,EAAS,GAGjB,OAAOA,GAAU6lE,EAAS38H,IAAM28H,EAFvB7lE,EAAS,IAAO92D,IAEsB28H,EADvC7lE,GAAU,IAAM,IAAM,MAElC,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA1G0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAYzB,SAASgC,EAAuB9lE,EAAQolE,EAAe94H,GASnD,MAAY,MAARA,EACO84H,EAAgB,UAAY,UACpB,MAAR94H,EACA84H,EAAgB,UAAY,UAE5BplE,EAAS,KAtBFt9C,GAsB6Bs9C,EArB3C+lE,EAQS,CACTzoH,GAAI8nH,EAAgB,yBAA2B,yBAC/C/nH,GAAI+nH,EAAgB,yBAA2B,yBAC/CjoH,GAAIioH,EAAgB,yBAA2B,yBAC/CxoH,GAAI,iBACJL,GAAI,uBACJsC,GAAI,kBAOgCvS,GArBvBf,MAAM,KAChBmX,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCqjH,EAAM,GACNrjH,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEqjH,EAAM,GACNA,EAAM,IANhB,IAAsBrjH,EACdqjH,CAuBR,CAESjC,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJ0E,OAAQ,uGAAuG3Q,MAC3G,KAEJy6H,WACI,qGAAqGz6H,MACjG,MAGZkR,YACI,0DAA0DlR,MAAM,KACpEgM,SAAU,CACN2E,OAAQ,0DAA0D3Q,MAC9D,KAEJy6H,WACI,0DAA0Dz6H,MACtD,KAER06H,SAAU,+CAEdlpH,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,iBACX,EACAE,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,UACNtU,EAAG,kBACHkK,EAAGsxH,EACHzoH,GAAIyoH,EACJvwH,EAAGuwH,EACH3oH,GAAI2oH,EACJ1xH,EAAG,QACHwI,GAAIkpH,EACJxuH,EAAG,QACHiF,GAAIupH,EACJzuH,EAAG,MACHwH,GAAIinH,GAER9B,cAAe,yBACfC,KAAM,SAAUn4G,GACZ,MAAO,iBAAiB/nB,KAAK+nB,EACjC,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,QAEf,EACAV,uBAAwB,mBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQ3S,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,EAEnB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhJ0CnkH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,oFAAoFjM,MACxF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,wBAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,WACNtU,EAAG,kBACHgT,GAAI,aACJ9I,EAAG,SACH6I,GAAI,YACJ9H,EAAG,MACH4H,GAAI,UACJ/I,EAAG,MACHwI,GAAI,UACJpE,EAAG,UACH2tH,GAAI,aACJ7uH,EAAG,QACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,aAERgmH,uBAAwB,8BACxBptH,QAAS,SAAUuoD,GACf,IAAIomE,EAAYpmE,EAAS,GACrBqmE,EAAcrmE,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhBqmE,EACArmE,EAAS,MACTqmE,EAAc,IAAMA,EAAc,GAClCrmE,EAAS,MACK,IAAdomE,EACApmE,EAAS,MACK,IAAdomE,EACApmE,EAAS,MACK,IAAdomE,GAAiC,IAAdA,EACnBpmE,EAAS,MAETA,EAAS,KAExB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3F0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,8IAA8IjM,MAClJ,KAEJkR,YAAa,iDAAiDlR,MAAM,KACpEgM,SAAU,+CAA+ChM,MAAM,KAC/DwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,aACNtU,EAAG,kBACHgT,GAAI,aACJ9I,EAAG,eACH6I,GAAI,YACJ9H,EAAG,aACH4H,GAAI,UACJ/I,EAAG,aACHwI,GAAI,UACJtF,EAAG,aACHiF,GAAI,UACJlF,EAAG,YACHwH,GAAI,UAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAvD0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF9B,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YACI,mEAAmElR,MAC/D,KAERgM,SAAU,4DAA4DhM,MAClE,KAEJwR,cAAe,uCAAuCxR,MAAM,KAC5DsR,YAAa,kCAAkCtR,MAAM,KACrD84H,eAAgB,CACZjmH,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEV8lH,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,SACNtU,EAAG,eACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,WACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,SACJlF,EAAG,SACHwH,GAAI,UAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EAEA49H,cAAe,uCACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,QAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAbnpH,GAEa,SAAbA,EADAmpH,EAGa,UAAbnpH,EACAmpH,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAbnpH,GAEa,YAAbA,EADAmpH,EAAO,QACX,CAGX,EAEAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,KAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CArI0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YACI,mEAAmElR,MAC/D,KAERgM,SAAU,4DAA4DhM,MAClE,KAEJwR,cAAe,uCAAuCxR,MAAM,KAC5DsR,YAAa,kCAAkCtR,MAAM,KACrD84H,eAAgB,CACZjmH,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEV8lH,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,SACNtU,EAAG,eACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,WACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,SACJlF,EAAG,SACHwH,GAAI,UAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EACA49H,cAAe,2BACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAGO,QAAbnpH,GAAsBmpH,GAAQ,GACjB,UAAbnpH,GAAwBmpH,EAAO,GACnB,UAAbnpH,EAEOmpH,EAAO,GAEPA,CAEf,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,KAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3H0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qJAAqJjM,MACzJ,KAEJkR,YACI,iEAAiElR,MAC7D,KAERg7H,iBAAkB,gBAClBC,kBAAkB,EAClBjvH,SACI,gFAAgFhM,MAC5E,KAERwR,cAAe,oDAAoDxR,MAC/D,KAEJsR,YAAa,6BAA6BtR,MAAM,KAChD84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,QACHgT,GAAI,YACJ9I,EAAG,aACH6I,GAAI,WACJ9H,EAAG,cACH4H,GAAI,YACJ/I,EAAG,WACHwI,GAAI,UACJtF,EAAG,YACHiF,GAAI,UACJlF,EAAG,UACHwH,GAAI,SAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EACA49H,cAAe,wCACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAGO,WAAbnpH,GAAyBmpH,GAAQ,GACpB,YAAbnpH,GAA0BmpH,EAAO,GACrB,YAAbnpH,EAEOmpH,EAAO,GAEPA,CAEf,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,QAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhI0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,SAAS2C,EAAyBzmE,EAAQolE,EAAe94H,GAMrD,OAAO0zD,EAAS,IAoBpB,SAAkBjwD,EAAMiwD,GACpB,OAAe,IAAXA,EAKR,SAAsBjwD,GAClB,IAAI22H,EAAgB,CAChBlyH,EAAG,IACHpL,EAAG,IACHgL,EAAG,KAEP,YAAsC9B,IAAlCo0H,EAAc32H,EAAK+0C,OAAO,IACnB/0C,EAEJ22H,EAAc32H,EAAK+0C,OAAO,IAAM/0C,EAAK4J,UAAU,EAC1D,CAdegtH,CAAa52H,GAEjBA,CACX,CAzB0B62H,CALT,CACTvpH,GAAI,WACJd,GAAI,MACJK,GAAI,UAE8BtQ,GAAM0zD,EAChD,CAaA,SAAS6mE,EAAW7mE,GAChB,OAAIA,EAAS,EACF6mE,EAAW7mE,EAAS,IAExBA,CACX,CAmBA,IAAI8mE,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EACI,6IAuBJC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGClD,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,gFAAgFjM,MACpF,KAEJkR,YAAa,mDAAmDlR,MAAM,KACtEgM,SAAU,6CAA6ChM,MAAM,KAC7DwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,wBAAwBtR,MAAM,KAC3C07H,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBD,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA9CI,wFA+CJC,uBA7CI,2DA8CJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBzC,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,SACNtU,EAAG,wBACHgT,GAAI,YACJ9I,EAAG,cACH6I,GAAIopH,EACJlxH,EAAG,SACH4H,GAAI,SACJ/I,EAAG,YACHwI,GAAI6pH,EACJnvH,EAAG,SACHiF,GAAIkqH,EACJpvH,EAAG,WACHwH,GAvIR,SAAiCmhD,GAC7B,OAAQ6mE,EAAW7mE,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,SAE5B,GA8HI6kE,uBAAwB,kBACxBptH,QAAS,SAAUuoD,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,MAEvC,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,GAEThB,cAAe,YACfC,KAAM,SAAUzwG,GACZ,MAAiB,SAAVA,CACX,EACApX,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAOmB,EAAO,GAAK,OAAS,MAChC,GAKR,CA5K0C1kH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,SAAS0D,EAAUxnE,EAAQolE,EAAe94H,GACtC,IAAI2hB,EAAS+xC,EAAS,IACtB,OAAQ1zD,GACJ,IAAK,KAQD,OANI2hB,GADW,IAAX+xC,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOolE,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIn3G,GADW,IAAX+xC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOolE,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIn3G,GADW,IAAX+xC,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJI/xC,GADW,IAAX+xC,EACU,MAEA,QAGlB,IAAK,KAQD,OANI/xC,GADW,IAAX+xC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANI/xC,GADW,IAAX+xC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAI1B,CAES8jE,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YACI,8DAA8DlR,MAC1D,KAERi7H,kBAAkB,EAClBjvH,SAAU,4DAA4DhM,MAClE,KAEJwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACAxB,QAAS,eACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,uBAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,cACHgT,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAG,MACHwI,GAAI4qH,EACJlwH,EAAG,SACHiF,GAAIirH,EACJnwH,EAAG,SACHwH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzJ0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJwuH,WACI,oFAAoFz6H,MAChF,KAER2Q,OAAQ,qHAAqH3Q,MACzH,KAEJ06H,SAAU,mBAEdxpH,YACI,8DAA8DlR,MAC1D,KAERi7H,kBAAkB,EAClBjvH,SACI,8DAA8DhM,MAC1D,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJmpH,GAAI,aACJlpH,IAAK,gCACLmpH,IAAK,mBACLlpH,KAAM,qCACNmpH,KAAM,wBAEVrD,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjB/kI,KAAK0kI,QAAgB,MAAQ,MAAQ,MAC9D,EACAM,QAAS,WACL,MAAO,YAA+B,IAAjBhlI,KAAK0kI,QAAgB,MAAQ,MAAQ,MAC9D,EACAO,SAAU,WACN,MAAO,YAA+B,IAAjBjlI,KAAK0kI,QAAgB,MAAQ,MAAQ,MAC9D,EACAQ,QAAS,WACL,MAAO,YAA+B,IAAjBllI,KAAK0kI,QAAgB,MAAQ,MAAQ,MAC9D,EACAS,SAAU,WACN,MACI,wBACkB,IAAjBnlI,KAAK0kI,QAAgB,MAAQ,MAC9B,MAER,EACAU,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,QACNtU,EAAG,aACHgT,GAAI,YACJ9I,EAAG,WACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJtF,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,qBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,IAAI1jB,EACW,IAAX+Q,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAX2S,GAA6B,MAAXA,IAClB1jB,EAAS,KAEN+Q,EAAS/Q,CACpB,EACA61E,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxG0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAItsH,EAAS,CACL0E,OAAQ,oFAAoF3Q,MACxF,KAEJy6H,WACI,sFAAsFz6H,MAClF,MAGZkR,EAAc,kDAAkDlR,MAAM,KACtEu7H,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EACI,wJAER,SAAS9+B,EAAOxzF,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,GACpC,CACA,SAAS+yH,EAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC3C,IAAIp3G,EAAS+xC,EAAS,IACtB,OAAQ1zD,GACJ,IAAK,IACD,OAAO84H,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,UAAY,UAEvC/xC,EAAS,YAExB,IAAK,IACD,OAAOm3G,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,SAAW,SAEtC/xC,EAAS,WAExB,IAAK,IACD,OAAOm3G,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,SAAW,SAEtC/xC,EAAS,WAExB,IAAK,IACD,OAAOm3G,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,MAAQ,OAEnC/xC,EAAS,MAExB,IAAK,IACD,OAAOm3G,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,SAAW,UAEtC/xC,EAAS,SAExB,IAAK,IACD,OAAOm3G,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,OAAS,OAEpC/xC,EAAS,OAGhC,CAES61G,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQA,EACRiF,YAAaA,EACbsqH,YAAaA,EACbR,iBAAkBQ,EAGlBK,kBACI,uKACJC,uBACI,sDACJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBvvH,SAAU,mDAAmDhM,MAAM,KACnEwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN9X,EAAG,cAEP49H,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,kBAEnB,EACAxB,QAAS,eACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAGk9H,EACHlqH,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAGozH,EACH5qH,GAAI4qH,EACJlwH,EAAGkwH,EACHjrH,GAAIirH,EACJnwH,EAAGmwH,EACH3oH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxL0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,gEAAgEjM,MACpE,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,oEAAoEhM,MAChE,KAERwR,cAAe,6BAA6BxR,MAAM,KAClDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEV8lH,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SAAUswC,GAMd,OAAOA,GALK,UAAU/lC,KAAK+lC,GACrB,MACA,QAAQ/lC,KAAK+lC,GACb,MACA,MAEV,EACArwC,KAAM,YACNtU,EAAG,iBACHgT,GAAI,aACJ9I,EAAG,YACH6I,GAAI,WACJ9H,EAAG,YACH4H,GAAI,WACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,WACHiF,GAAI,UACJlF,EAAG,UACHwH,GAAI,UAERgmH,uBAAwB,cACxBptH,QAAS,SACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAnE0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yFAAyFjM,MAC7F,KAEJkR,YAAa,qDAAqDlR,MAC9D,KAEJgM,SACI,+EAA+EhM,MAC3E,KAERwR,cAAe,+BAA+BxR,MAAM,KACpDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EAEpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,WACNtU,EAAG,mBACHgT,GAAI,YACJ9I,EAAG,QACH6I,GAAI,WACJ9H,EAAG,MACH4H,GAAI,SACJ/I,EAAG,UACHwI,GAAI,aACJtF,EAAG,MACHiF,GAAI,SACJlF,EAAG,WACHwH,GAAI,cAERgmH,uBAAwB,mCAExBptH,QAAS,SAAUuoD,GACf,IACI/Q,EAAS,GAiCb,OAlCQ+Q,EAyBA,GAEA/Q,EADM,KA1BN+Q,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACX/Q,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBA+Q,IAkCDA,EAAS/Q,CACpB,EACA61E,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CArG0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,sFAAsFjM,MAC1F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,qDAAqDhM,MAAM,KACrEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,cACHgT,GAAI,cACJ9I,EAAG,WACH6I,GAAI,cACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJtF,EAAG,WACHiF,GAAI,aACJlF,EAAG,QACHwH,GAAI,SAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzD0CnkH,CAAQ69B,EAAQ,8BCMjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT1H,EAAG,CAAC,cAAe,gBACnBe,EAAG,CAAC,cAAe,gBACnBnB,EAAG,CAAC,UAAW,aACfwI,GAAI,CAACojD,EAAS,QAASA,EAAS,UAChCxnD,EAAG,CAAC,aAAc,eAClBlB,EAAG,CAAC,YAAa,eACjBiF,GAAI,CAACyjD,EAAS,UAAWA,EAAS,YAClC3oD,EAAG,CAAC,WAAY,cAChBwH,GAAI,CAACmhD,EAAS,SAAUA,EAAS,YAErC,OAAOolE,EAAgBlpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,EACxD,CAEWw3H,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YACI,6DAA6DlR,MAAM,KACvEi7H,kBAAkB,EAClBjvH,SACI,8DAA8DhM,MAC1D,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEd5lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAGozH,EACHvqH,GAAI,aACJ9H,EAAGqyH,EACHzqH,GAAI,aACJ/I,EAAGwzH,EACHhrH,GAAIgrH,EACJpvH,EAAGovH,EACHzB,GAAI,YACJ7uH,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhF0CnkH,CAAQ69B,EAAQ,8BCAjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT1H,EAAG,CAAC,cAAe,gBACnBe,EAAG,CAAC,cAAe,gBACnBnB,EAAG,CAAC,UAAW,aACfwI,GAAI,CAACojD,EAAS,QAASA,EAAS,UAChCxnD,EAAG,CAAC,aAAc,eAClBlB,EAAG,CAAC,YAAa,eACjBiF,GAAI,CAACyjD,EAAS,UAAWA,EAAS,YAClC3oD,EAAG,CAAC,WAAY,cAChBwH,GAAI,CAACmhD,EAAS,SAAUA,EAAS,YAErC,OAAOolE,EAAgBlpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,EACxD,CAEWw3H,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YACI,6DAA6DlR,MAAM,KACvEi7H,kBAAkB,EAClBjvH,SACI,8DAA8DhM,MAC1D,KAERwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEd5lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAGozH,EACHvqH,GAAI,aACJ9H,EAAGqyH,EACHzqH,GAAI,aACJ/I,EAAGwzH,EACHhrH,GAAIgrH,EACJpvH,EAAGovH,EACHzB,GAAI,YACJ7uH,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhF0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT1H,EAAG,CAAC,cAAe,gBACnBe,EAAG,CAAC,cAAe,gBACnBnB,EAAG,CAAC,UAAW,aACfwI,GAAI,CAACojD,EAAS,QAASA,EAAS,UAChCxnD,EAAG,CAAC,aAAc,eAClBlB,EAAG,CAAC,YAAa,eACjBiF,GAAI,CAACyjD,EAAS,UAAWA,EAAS,YAClC3oD,EAAG,CAAC,WAAY,cAChBwH,GAAI,CAACmhD,EAAS,SAAUA,EAAS,YAErC,OAAOolE,EAAgBlpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,EACxD,CAESw3H,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YACI,6DAA6DlR,MAAM,KACvEi7H,kBAAkB,EAClBjvH,SACI,8DAA8DhM,MAC1D,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEd5lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAGozH,EACHvqH,GAAI,aACJ9H,EAAGqyH,EACHzqH,GAAI,aACJ/I,EAAGwzH,EACHhrH,GAAIgrH,EACJpvH,EAAGovH,EACHzB,GAAI,YACJ7uH,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhF0CnkH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIzB,IAAItsH,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJD,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGCusH,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQA,EACRiF,YAAajF,EACbD,SAAUA,EACVwF,cAAexF,EACfsF,YAAa,qCAAqCtR,MAAM,KACxD84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVwlH,cAAe,QACfC,KAAM,SAAUn4G,GACZ,MAAO,OAASA,CACpB,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,KAEA,IAEf,EACAjB,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,cACRC,KAAM,YACNtU,EAAG,iBACHgT,GAAI,cACJ9I,EAAG,WACH6I,GAAI,YACJ9H,EAAG,aACH4H,GAAI,cACJ/I,EAAG,WACHwI,GAAI,YACJtF,EAAG,SACHiF,GAAI,UACJlF,EAAG,WACHwH,GAAI,aAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CA9F0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAWhBA,EAAOC,aAAa,KAAM,CAC/B8D,mBACI,qHAAqHt8H,MACjH,KAERu8H,iBACI,qHAAqHv8H,MACjH,KAERiM,OAAQ,SAAUuwH,EAAgB7rH,GAC9B,OAAK6rH,EAGiB,iBAAX7rH,GACP,IAAInY,KAAKmY,EAAOvC,UAAU,EAAGuC,EAAOwE,QAAQ,UAGrClhB,KAAKwoI,kBAAkBD,EAAe3vH,SAEtC5Y,KAAKyoI,oBAAoBF,EAAe3vH,SARxC5Y,KAAKyoI,mBAUpB,EACAxrH,YAAa,oDAAoDlR,MAAM,KACvEgM,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C6Q,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACAH,KAAM,SAAUn4G,GACZ,MAAyC,OAAjCA,EAAQ,IAAI9lB,cAAc,EACtC,EACAg+H,cAAe,gBACfK,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV0pH,WAAY,CACR3D,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OACS,IADDnlI,KAAK0mI,MAEE,gCAEA,gCAEnB,EACAtB,SAAU,KAEdN,SAAU,SAAUh4H,EAAK67H,GACrB,IAtEYr8G,EAsERmjC,EAASzvD,KAAK4oI,YAAY97H,GAC1B43H,EAAQiE,GAAOA,EAAIjE,QAIvB,OA3EYp4G,EAwEGmjC,GAtEM,oBAAb1vC,UAA4BuM,aAAiBvM,UACX,sBAA1C0B,OAAO9hB,UAAU4b,SAASxb,KAAKusB,MAsE3BmjC,EAASA,EAAOh8C,MAAMk1H,IAEnBl5E,EAAO9rD,QAAQ,KAAM+gI,EAAQ,IAAO,EAAI,MAAQ,OAC3D,EACAnlH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,oBACHgT,GAAI,kBACJ9I,EAAG,YACH6I,GAAI,WACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,WACHwI,GAAI,WACJtF,EAAG,aACHiF,GAAI,WACJlF,EAAG,cACHwH,GAAI,aAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9G0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxE0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,GAKR,CApE0CyX,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxE0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxE0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,GAKR,CApE0CyX,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxE0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxE0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxE0CnkH,CAAQ69B,EAAQ,8BCMjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,6FAA6FjM,MACjG,KAEJkR,YAAa,oDAAoDlR,MAAM,KACvEgM,SAAU,qDAAqDhM,MAAM,KACrEwR,cAAe,gCAAgCxR,MAAM,KACrDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNmpH,KAAM,uCAEV3D,cAAe,cACfC,KAAM,SAAUn4G,GACZ,MAAyC,MAAlCA,EAAMg5B,OAAO,GAAG9+C,aAC3B,EACAoW,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,SAAW,SAErBA,EAAU,SAAW,QAEpC,EACAE,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,WACNtU,EAAG,kBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,WACHwI,GAAI,WACJtF,EAAG,aACHiF,GAAI,aACJlF,EAAG,WACHwH,GAAI,YAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CArE0CnkH,CAAQ69B,EAAQ,8BCDjD,SAAUolF,GAAU,aAIzB,IAAIuE,EACI,8DAA8D98H,MAC1D,KAERkR,EAAc,kDAAkDlR,MAAM,KACtEu7H,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEGjD,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,2FAA2FjM,MAC/F,KAEJkR,YAAa,SAAUjI,EAAG0H,GACtB,OAAK1H,EAEM,QAAQzQ,KAAKmY,GACbO,EAAYjI,EAAE4D,SAEdiwH,EAAe7zH,EAAE4D,SAJjBiwH,CAMf,EACAtB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBACI,+FACJC,uBACI,0FACJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBvvH,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEV8lH,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/kI,KAAK0kI,QAAgB,IAAM,IAAM,MAC3D,EACAM,QAAS,WACL,MAAO,gBAAmC,IAAjBhlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC9D,EACAO,SAAU,WACN,MAAO,cAAiC,IAAjBjlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAQ,QAAS,WACL,MAAO,cAAiC,IAAjBllI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAS,SAAU,WACN,MACI,0BACkB,IAAjBnlI,KAAK0kI,QAAgB,IAAM,IAC5B,MAER,EACAU,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,gBACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJpE,EAAG,aACH2tH,GAAI,aACJ7uH,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAjH0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAIuE,EACI,8DAA8D98H,MAC1D,KAERkR,EAAc,kDAAkDlR,MAAM,KACtEu7H,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEGjD,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,2FAA2FjM,MAC/F,KAEJkR,YAAa,SAAUjI,EAAG0H,GACtB,OAAK1H,EAEM,QAAQzQ,KAAKmY,GACbO,EAAYjI,EAAE4D,SAEdiwH,EAAe7zH,EAAE4D,SAJjBiwH,CAMf,EACAtB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBACI,+FACJC,uBACI,0FACJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBvvH,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEV8lH,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/kI,KAAK0kI,QAAgB,IAAM,IAAM,MAC3D,EACAM,QAAS,WACL,MAAO,gBAAmC,IAAjBhlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC9D,EACAO,SAAU,WACN,MAAO,cAAiC,IAAjBjlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAQ,QAAS,WACL,MAAO,cAAiC,IAAjBllI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAS,SAAU,WACN,MACI,0BACkB,IAAjBnlI,KAAK0kI,QAAgB,IAAM,IAC5B,MAER,EACAU,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,gBACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJpE,EAAG,aACH2tH,GAAI,aACJ7uH,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,GAET7oH,YAAa,kBAKrB,CAlH0C0E,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAIuE,EACI,8DAA8D98H,MAC1D,KAERkR,EAAc,kDAAkDlR,MAAM,KACtEu7H,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAEGjD,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,2FAA2FjM,MAC/F,KAEJkR,YAAa,SAAUjI,EAAG0H,GACtB,OAAK1H,EAEM,QAAQzQ,KAAKmY,GACbO,EAAYjI,EAAE4D,SAEdiwH,EAAe7zH,EAAE4D,SAJjBiwH,CAMf,EACAtB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBACI,+FACJC,uBACI,0FACJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBvvH,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEV8lH,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/kI,KAAK0kI,QAAgB,IAAM,IAAM,MAC3D,EACAM,QAAS,WACL,MAAO,gBAAmC,IAAjBhlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC9D,EACAO,SAAU,WACN,MAAO,cAAiC,IAAjBjlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAQ,QAAS,WACL,MAAO,cAAiC,IAAjBllI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAS,SAAU,WACN,MACI,0BACkB,IAAjBnlI,KAAK0kI,QAAgB,IAAM,IAC5B,MAER,EACAU,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,gBACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJpE,EAAG,aACH2tH,GAAI,aACJ7uH,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAjH0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIzB,IAAIuE,EACI,8DAA8D98H,MAC1D,KAERkR,EAAc,kDAAkDlR,MAAM,KACtEu7H,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EACI,mLAECjD,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,2FAA2FjM,MAC/F,KAEJkR,YAAa,SAAUjI,EAAG0H,GACtB,OAAK1H,EAEM,QAAQzQ,KAAKmY,GACbO,EAAYjI,EAAE4D,SAEdiwH,EAAe7zH,EAAE4D,SAJjBiwH,CAMf,EACAtB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBACI,+FACJC,uBACI,0FACJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBvvH,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEV8lH,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjB/kI,KAAK0kI,QAAgB,IAAM,IAAM,MAC3D,EACAM,QAAS,WACL,MAAO,gBAAmC,IAAjBhlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC9D,EACAO,SAAU,WACN,MAAO,cAAiC,IAAjBjlI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAQ,QAAS,WACL,MAAO,cAAiC,IAAjBllI,KAAK0kI,QAAgB,IAAM,IAAM,MAC5D,EACAS,SAAU,WACN,MACI,0BACkB,IAAjBnlI,KAAK0kI,QAAgB,IAAM,IAC5B,MAER,EACAU,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,gBACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJpE,EAAG,aACH2tH,GAAI,aACJ7uH,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,GAET7oH,YAAa,kBAKrB,CAlH0C0E,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT5R,EAAG,CAAC,eAAgB,cAAe,iBACnCgT,GAAI,CAAC0iD,EAAS,UAAWA,EAAS,YAClCxrD,EAAG,CAAC,aAAc,aAClB6I,GAAI,CAAC2iD,EAAS,UAAWA,EAAS,YAClCzqD,EAAG,CAAC,YAAa,YAAa,YAC9B4H,GAAI,CAAC6iD,EAAS,SAAUA,EAAS,UACjC5rD,EAAG,CAAC,YAAa,YACjBkD,EAAG,CAAC,UAAW,WAAY,WAC3BiF,GAAI,CAACyjD,EAAS,OAAQA,EAAS,SAC/B3oD,EAAG,CAAC,YAAa,QAAS,aAC1BwH,GAAI,CAACmhD,EAAS,SAAUA,EAAS,YAErC,OAAIolE,EACOlpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,GAElD+4H,EAAWnpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,EACnD,CAESw3H,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,6FAA6FjM,MACjG,KAEJkR,YACI,6DAA6DlR,MAAM,KACvEgM,SACI,iEAAiEhM,MAC7D,KAERwR,cAAe,gBAAgBxR,MAAM,KACrCsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,YACNtU,EAAGs9H,EACHtqH,GAAIsqH,EACJpzH,EAAGozH,EACHvqH,GAAIuqH,EACJryH,EAAGqyH,EACHzqH,GAAIyqH,EACJxzH,EAAGwzH,EACHhrH,GAAI,WACJtF,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAjF0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,+FAA+FjM,MACnG,KAEJkR,YACI,8DAA8DlR,MAC1D,KAERi7H,kBAAkB,EAClBjvH,SACI,sEAAsEhM,MAClE,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN9X,EAAG,WACH+gI,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVrD,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,WACNtU,EAAG,iBACHgT,GAAI,aACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,WACHwI,GAAI,UACJtF,EAAG,eACHiF,GAAI,cACJlF,EAAG,WACHwH,GAAI,WAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CArE0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,wEAAwEjM,MAC5E,KAEJkR,YACI,wEAAwElR,MACpE,KAERgM,SACI,qDAAoEhM,MAChE,KAERwR,cACI,qDAAoExR,MAChE,KAERsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVwlH,cAAe,wBACfC,KAAM,SAAUn4G,GACZ,MAAO,aAAa/nB,KAAK+nB,EAC7B,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,aAEA,YAEf,EACAjB,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,YACHgT,GAAI,WACJ9I,EAAG,WACH6I,GAAI,WACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,SACJlF,EAAG,SACHwH,GAAI,UAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EACFl4B,QAAQ,UAAU,SAAUiD,GACzB,OAAOw/H,EAAUx/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EACFl4B,QAAQ,OAAO,SAAUiD,GACtB,OAAOs/H,EAAUt/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACA0hI,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CArH0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAIwE,EACI,wEAAwE/8H,MACpE,KAERg9H,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASd,EAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC3C,IAAIp3G,EAAS,GACb,OAAQ3hB,GACJ,IAAK,IACD,OAAO+4H,EAAW,oBAAsB,kBAC5C,IAAK,KACDp3G,EAASo3G,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACDp3G,EAASo3G,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDp3G,EAASo3G,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDp3G,EAASo3G,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACDp3G,EAASo3G,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACDp3G,EAASo3G,EAAW,SAAW,SAIvC,OAEJ,SAAsBrlE,EAAQqlE,GAC1B,OAAOrlE,EAAS,GACVqlE,EACIkD,EAAcvoE,GACdsoE,EAAYtoE,GAChBA,CACV,CATawoE,CAAaxoE,EAAQqlE,GAAY,IAAMp3G,CAEpD,CASS61G,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,2GAA2GjM,MAC/G,KAEJkR,YACI,uEAAuElR,MACnE,KAERgM,SACI,qEAAqEhM,MACjE,KAERwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN9X,EAAG,WACH+gI,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVrD,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,YACNtU,EACAgT,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAGozH,EACH5qH,GAAI4qH,EACJlwH,EAAGkwH,EACHjrH,GAAIirH,EACJnwH,EAAGmwH,EACH3oH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhI0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIfA,EAAOC,aAAa,MAAO,CACjCvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,wBAAwBtR,MAAM,KAC3C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEV8lH,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,gBACRC,KAAM,mBACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,eACH6I,GAAI,YACJ9H,EAAG,aACH4H,GAAI,UACJ/I,EAAG,aACHwI,GAAI,UACJtF,EAAG,cACHiF,GAAI,WACJlF,EAAG,aACHwH,GAAI,WAERgmH,uBAAwB,UACxBptH,QAAS,SAAUuoD,GACf,OAAOA,CACX,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,4EAA4EhM,MACxE,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,YACNtU,EAAG,YACHgT,GAAI,cACJ9I,EAAG,eACH6I,GAAI,cACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,YACHwI,GAAI,WACJtF,EAAG,cACHiF,GAAI,aACJlF,EAAG,UACHwH,GAAI,SAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA5D0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,uFAAuFjM,MAC3F,KAEJkR,YACI,iEAAiElR,MAC7D,KAERi7H,kBAAkB,EAClBjvH,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,YACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,aACJ9H,EAAG,YACH4H,GAAI,YACJ/I,EAAG,UACHwI,GAAI,WACJtF,EAAG,UACHiF,GAAI,UACJlF,EAAG,QACHwH,GAAI,UAERgmH,uBAAwB,gBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAO3S,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAEnD,GAKR,CA1E0Cn/C,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,uFAAuFjM,MAC3F,KAEJkR,YACI,iEAAiElR,MAC7D,KAERi7H,kBAAkB,EAClBjvH,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,YACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,aACJ9H,EAAG,YACH4H,GAAI,YACJ/I,EAAG,UACHwI,GAAI,WACJtF,EAAG,UACHiF,GAAI,UACJlF,EAAG,QACHwH,GAAI,UAERgmH,uBAAwB,gBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAO3S,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAEnD,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9E0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAIIiD,EACI,yKACJD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGChD,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,uFAAuFjM,MAC3F,KAEJkR,YACI,iEAAiElR,MAC7D,KAERw7H,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA9BI,2FA+BJC,uBA7BI,oFA8BJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBvvH,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,YACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,aACJ9H,EAAG,YACH4H,GAAI,YACJ/I,EAAG,UACHwI,GAAI,WACJpE,EAAG,cACH2tH,GAAI,cACJ7uH,EAAG,UACHiF,GAAI,UACJlF,EAAG,QACHwH,GAAI,UAERgmH,uBAAwB,eACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAO3S,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAEnD,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhH0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI2E,EACI,6DAA6Dl9H,MAAM,KACvEm9H,EACI,kDAAkDn9H,MAAM,KAEvDu4H,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,iGAAiGjM,MACrG,KAEJkR,YAAa,SAAUjI,EAAG0H,GACtB,OAAK1H,EAEM,QAAQzQ,KAAKmY,GACbwsH,EAAuBl0H,EAAE4D,SAEzBqwH,EAAoBj0H,EAAE4D,SAJtBqwH,CAMf,EACAjC,kBAAkB,EAClBjvH,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,SACNtU,EAAG,mBACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,UACHwI,GAAI,WACJtF,EAAG,aACHiF,GAAI,aACJlF,EAAG,WACHwH,GAAI,cAERgmH,uBAAwB,kBACxBptH,QAAS,SAAUuoD,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAEhE,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/E0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aA4ChBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJiF,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJ+pH,kBAAkB,EAClBjvH,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJwF,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEF,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDwnH,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,OACRC,KAAM,YACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,UACH6I,GAAI,aACJ9H,EAAG,iBACH4H,GAAI,oBACJ/I,EAAG,KACHwI,GAAI,QACJtF,EAAG,KACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,aAERgmH,uBAAwB,mBACxBptH,QAAS,SAAUuoD,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,KAEjE,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAnG0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aA4ChBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJiF,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJ+pH,kBAAkB,EAClBjvH,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJwF,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DF,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDwnH,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,gBACNtU,EAAG,gBACHgT,GAAI,YACJ9I,EAAG,UACH6I,GAAI,gBACJ9H,EAAG,OACH4H,GAAI,aACJ/I,EAAG,QACHwI,GAAI,WACJtF,EAAG,OACHiF,GAAI,YACJlF,EAAG,WACHwH,GAAI,eAERgmH,uBAAwB,mBACxBptH,QAAS,SAAUuoD,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,KAEjE,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAnG0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yFAAyFjM,MAC7F,KAEJkR,YACI,8DAA8DlR,MAC1D,KAERi7H,kBAAkB,EAClBjvH,SAAU,mDAAmDhM,MAAM,KACnEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEV8lH,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjB/kI,KAAK0kI,QAAgB,KAAO,KAAO,MAC1D,EACAM,QAAS,WACL,MAAO,UAA6B,IAAjBhlI,KAAK0kI,QAAgB,KAAO,KAAO,MAC1D,EACAO,SAAU,WACN,MAAO,UAA6B,IAAjBjlI,KAAK0kI,QAAgB,KAAO,KAAO,MAC1D,EACAQ,QAAS,WACL,MAAO,UAA6B,IAAjBllI,KAAK0kI,QAAgB,IAAM,KAAO,MACzD,EACAS,SAAU,WACN,MACI,qBAAwC,IAAjBnlI,KAAK0kI,QAAgB,KAAO,KAAO,MAElE,EACAU,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SAAUqgD,GACd,OAA0B,IAAtBA,EAAIt+C,QAAQ,MACL,IAAMs+C,EAEV,MAAQA,CACnB,EACApgD,KAAM,SACNtU,EAAG,eACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,YACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJtF,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/E0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT5R,EAAG,CAAC,kBAAmB,cACvBgT,GAAI,CAAC0iD,EAAS,aAAcA,EAAS,UACrCxrD,EAAG,CAAC,aAAc,YAClB6I,GAAI,CAAC2iD,EAAS,YAAaA,EAAS,WACpCzqD,EAAG,CAAC,WAAY,SAChB4H,GAAI,CAAC6iD,EAAS,UAAWA,EAAS,SAClC5rD,EAAG,CAAC,YAAa,UACjBwI,GAAI,CAACojD,EAAS,WAAYA,EAAS,QACnC1oD,EAAG,CAAC,gBAAiB,aACrBiF,GAAI,CAACyjD,EAAS,cAAeA,EAAS,WACtC3oD,EAAG,CAAC,aAAc,WAClBwH,GAAI,CAACmhD,EAAS,YAAaA,EAAS,YAExC,OAAOqlE,EAAWnpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,EACnD,CAEcw3H,EAAOC,aAAa,WAAY,CAC1CvsH,OAAQ,CACJwuH,WACI,wFAAwFz6H,MACpF,KAER2Q,OAAQ,mJAAmJ3Q,MACvJ,KAEJ06H,SAAU,mBAEdxpH,YACI,4EAA4ElR,MACxE,KAERi7H,kBAAkB,EAClBjvH,SAAU,qDAAqDhM,MAAM,KACrEwR,cAAe,4CAA4CxR,MAAM,KACjEsR,YAAa,wBAAwBtR,MAAM,KAC3C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,kBACJD,IAAK,qBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNmpH,KAAM,oCAEVrD,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,KACRC,KAAM,UACNtU,EAAGs9H,EACHtqH,GAAIsqH,EACJpzH,EAAGozH,EACHvqH,GAAIuqH,EACJryH,EAAGqyH,EACHzqH,GAAIyqH,EACJxzH,EAAGwzH,EACHhrH,GAAIgrH,EACJtwH,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,eACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,MAES,MAFDA,EAGO3S,EAAS,MAQTA,CAEnB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,GAEThB,cAAe,4BACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,SAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAbnpH,EACAmpH,EACa,YAAbnpH,EACAmpH,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,MAEf,GAKR,CAlI0C1kH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT5R,EAAG,CAAC,qBAAsB,iBAC1BgT,GAAI,CAAC0iD,EAAS,cAAeA,EAAS,WACtCxrD,EAAG,CAAC,aAAc,YAClB6I,GAAI,CAAC2iD,EAAS,YAAaA,EAAS,WACpCzqD,EAAG,CAAC,YAAa,UACjB4H,GAAI,CAAC6iD,EAAS,WAAYA,EAAS,UACnC5rD,EAAG,CAAC,YAAa,UACjBwI,GAAI,CAACojD,EAAS,WAAYA,EAAS,QACnC1oD,EAAG,CAAC,eAAgB,aACpBiF,GAAI,CAACyjD,EAAS,cAAeA,EAAS,WACtC3oD,EAAG,CAAC,aAAc,YAClBwH,GAAI,CAACmhD,EAAS,YAAaA,EAAS,YAExC,OAAOqlE,EAAWnpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,EACnD,CAEcw3H,EAAOC,aAAa,WAAY,CAC1CvsH,OAAQ,CACJwuH,WACI,4EAA4Ez6H,MACxE,KAER2Q,OAAQ,wIAAwI3Q,MAC5I,KAEJ06H,SAAU,mBAEdxpH,YACI,4DAA4DlR,MAAM,KACtEi7H,kBAAkB,EAClBjvH,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,iBACJD,IAAK,oBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNmpH,KAAM,mCAEVrD,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,KACRC,KAAM,UACNtU,EAAGs9H,EACHtqH,GAAIsqH,EACJpzH,EAAGozH,EACHvqH,GAAIuqH,EACJryH,EAAGqyH,EACHzqH,GAAIyqH,EACJxzH,EAAGwzH,EACHhrH,GAAIgrH,EACJtwH,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,cACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,MAES,MAFDA,EAGO3S,EAAS,KAQTA,CAEnB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,GAEThB,cAAe,+BACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,SAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAbnpH,EACAmpH,EACa,aAAbnpH,EACAmpH,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,MAEf,GAKR,CAhI0C1kH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yFAAyFjM,MAC7F,KAEJkR,YACI,yEAAyElR,MACrE,KAERi7H,kBAAkB,EAClBjvH,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,mCAAmCxR,MAAM,KACxDsR,YAAa,qBAAqBtR,MAAM,KACxC84H,eAAgB,CACZjmH,GAAI,gBACJD,IAAK,mBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEV8lH,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,WACHgT,GAAI,WACJ9I,EAAG,WACH6I,GAAI,WACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,UACJtF,EAAG,WACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,WAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EAGA49H,cAAe,qBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,QAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnpH,EACAmpH,EACa,SAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,KAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9H0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,0EAA0EjM,MAC9E,KAEJkR,YACI,4DAA4DlR,MAAM,KACtEgM,SAAU,uCAAuChM,MAAM,KACvDwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACN9X,EAAG,WACH+gI,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVrD,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,UACNtU,EAAG,aACHgT,GAAI,WACJ9I,EAAG,MACH6I,GAAI,UACJ9H,EAAG,MACH4H,GAAI,SAAU6iD,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,OACpB,EACA5rD,EAAG,MACHwI,GAAI,SAAUojD,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,OACpB,EACA1oD,EAAG,OACHiF,GAAI,SAAUyjD,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,SACpB,EACA3oD,EAAG,MACHwH,GAAI,SAAUmhD,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,OACpB,GAEJgkE,cACI,gEACJC,KAAM,SAAUn4G,GACZ,MAAO,8BAA8B/nB,KAAK+nB,EAC9C,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACPnB,EAAU,SAAW,eACrBmB,EAAO,GACPnB,EAAU,QAAU,eAEpB,MAEf,GAKR,CAhG0CvjH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETkB,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBChD,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJ0E,OAAQ,8EAA8E3Q,MAClF,KAEJy6H,WACI,0EAA0Ez6H,MACtE,MAGZkR,YACI,6DAA6DlR,MAAM,KACvEgM,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,kCAAkCxR,MAAM,KACvDsR,YAAa,qBAAqBtR,MAAM,KACxC84H,eAAgB,CACZjmH,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGVsoH,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJR,YACI,+KAEJR,iBACI,+KAEJa,kBACI,uIAEJC,uBACI,sFAEJ/C,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,UACNtU,EAAG,cACHgT,GAAI,WACJ9I,EAAG,UACH6I,GAAI,UACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,WACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,WAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EAGA49H,cAAe,qBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,QAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnpH,EACAmpH,EACa,UAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,KAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA5K0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,SAAS0D,EAAUxnE,EAAQolE,EAAe94H,GACtC,IAAI2hB,EAAS+xC,EAAS,IACtB,OAAQ1zD,GACJ,IAAK,KAQD,OANI2hB,GADW,IAAX+xC,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOolE,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIn3G,GADW,IAAX+xC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOolE,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIn3G,GADW,IAAX+xC,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJI/xC,GADW,IAAX+xC,EACU,MAEA,QAGlB,IAAK,KAQD,OANI/xC,GADW,IAAX+xC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANI/xC,GADW,IAAX+xC,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAI1B,CAES8jE,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJ0E,OAAQ,oGAAoG3Q,MACxG,KAEJy6H,WACI,gGAAgGz6H,MAC5F,MAGZkR,YACI,+DAA+DlR,MAC3D,KAERi7H,kBAAkB,EAClBjvH,SAAU,4DAA4DhM,MAClE,KAEJwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACAxB,QAAS,eACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,uBAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,cACHgT,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAG,MACHwI,GAAI4qH,EACJlwH,EAAG,SACHiF,GAAIirH,EACJnwH,EAAG,SACHwH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhK0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAI6E,EACA,gEAAgEp9H,MAAM,KAC1E,SAASi8H,EAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC3C,IAAI3iH,EAAMs9C,EACV,OAAQ1zD,GACJ,IAAK,IACD,OAAO+4H,GAAYD,EACb,mBACA,oBACV,IAAK,KACD,OAAO1iH,GAAO2iH,GAAYD,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAO1iH,GAAO2iH,GAAYD,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAO1iH,GAAO2iH,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAO1iH,GAAO2iH,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAO1iH,GAAO2iH,GAAYD,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAO1iH,GAAO2iH,GAAYD,EAAgB,MAAQ,QAE1D,MAAO,EACX,CACA,SAASN,EAAKO,GACV,OACKA,EAAW,GAAK,WACjB,IACAsD,EAAYnpI,KAAK0mI,OACjB,YAER,CAESpC,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,oGAAoGjM,MACxG,KAEJkR,YACI,iEAAiElR,MAC7D,KAERi7H,kBAAkB,EAClBjvH,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,gCAAgCxR,MAAM,KACrDsR,YAAa,qBAAqBtR,MAAM,KACxC84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVwlH,cAAe,SACfC,KAAM,SAAUn4G,GACZ,MAAyC,MAAlCA,EAAMg5B,OAAO,GAAG9+C,aAC3B,EACAoW,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,IACW,IAAZE,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,IAEzC,EACAE,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOK,EAAKvlI,KAAKC,MAAM,EAC3B,EACAklI,QAAS,oBACTC,SAAU,WACN,OAAOG,EAAKvlI,KAAKC,MAAM,EAC3B,EACAolI,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,KACNtU,EAAGk9H,EACHlqH,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAGozH,EACH5qH,GAAI4qH,EACJlwH,EAAGkwH,EACHjrH,GAAIirH,EACJnwH,EAAGmwH,EACH3oH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzH0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,CACJ0E,OAAQ,4GAA4G3Q,MAChH,KAEJy6H,WACI,gGAAgGz6H,MAC5F,MAGZkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,gEAAgEhM,MAC5D,KAERwR,cAAe,+BAA+BxR,MAAM,KACpDsR,YAAa,+BAA+BtR,MAAM,KAClD84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEV8lH,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,oBACX,EACAE,SAAU,WACN,MAAO,4BACX,EACAC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,UACNtU,EAAG,mBACHgT,GAAI,cACJ9I,EAAG,OACH6I,GAAI,UACJ9H,EAAG,MACH4H,GAAI,SACJ/I,EAAG,KACHwI,GAAI,QACJtF,EAAG,OACHiF,GAAI,UACJlF,EAAG,OACHwH,GAAI,WAERmlH,cAAe,oCACfC,KAAM,SAAUn4G,GACZ,MAAO,uBAAuB/nB,KAAK+nB,EACvC,EACA1P,SAAU,SAAUmpH,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,UAEf,EACAV,uBAAwB,0BACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAX3S,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,EAEnB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAlG0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yFAAyFjM,MAC7F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,6CAA6ChM,MAAM,KAC7DwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVwlH,cAAe,wBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,SAAbnpH,EACOmpH,EACa,UAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbnpH,GAAoC,UAAbA,EACvBmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,OAEf,EACAI,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,eACNtU,EAAG,iBACHgT,GAAI,WACJ9I,EAAG,UACH6I,GAAI,WACJ9H,EAAG,QACH4H,GAAI,SACJ/I,EAAG,SACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,YAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/E0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIzB,SAAS77B,EAAOxzF,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,CAI1B,CACA,SAAS+yH,EAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC3C,IAAIp3G,EAAS+xC,EAAS,IACtB,OAAQ1zD,GACJ,IAAK,IACD,OAAO84H,GAAiBC,EAClB,mBACA,mBACV,IAAK,KACD,OAAIp9B,EAAOjoC,GAEH/xC,GACCm3G,GAAiBC,EAAW,WAAa,YAG3Cp3G,EAAS,UACpB,IAAK,IACD,OAAOm3G,EAAgB,SAAW,SACtC,IAAK,KACD,OAAIn9B,EAAOjoC,GAEH/xC,GAAUm3G,GAAiBC,EAAW,UAAY,WAE/CD,EACAn3G,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAIg6E,EAAOjoC,GAEH/xC,GACCm3G,GAAiBC,EACZ,gBACA,iBAGPp3G,EAAS,cACpB,IAAK,IACD,OAAIm3G,EACO,QAEJC,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAIp9B,EAAOjoC,GACHolE,EACOn3G,EAAS,QAEbA,GAAUo3G,EAAW,OAAS,SAC9BD,EACAn3G,EAAS,QAEbA,GAAUo3G,EAAW,MAAQ,QACxC,IAAK,IACD,OAAID,EACO,UAEJC,EAAW,QAAU,SAChC,IAAK,KACD,OAAIp9B,EAAOjoC,GACHolE,EACOn3G,EAAS,UAEbA,GAAUo3G,EAAW,SAAW,WAChCD,EACAn3G,EAAS,UAEbA,GAAUo3G,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOD,GAAiBC,EAAW,KAAO,MAC9C,IAAK,KACD,OAAIp9B,EAAOjoC,GACA/xC,GAAUm3G,GAAiBC,EAAW,KAAO,QAEjDp3G,GAAUm3G,GAAiBC,EAAW,KAAO,OAEhE,CAESvB,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,oFAAoFjM,MACxF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,mFAAmFhM,MAC/E,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,iBACNtU,EAAGk9H,EACHlqH,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAG,cACH4H,GAAIqqH,EACJpzH,EAAGozH,EACH5qH,GAAI4qH,EACJlwH,EAAGkwH,EACHjrH,GAAIirH,EACJnwH,EAAGmwH,EACH3oH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhJ0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,gGAAgGjM,MACpG,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OACS,IADDnlI,KAAK0mI,MAEE,6BAEA,4BAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SAAUrU,GACd,OAAQ,YAAYvG,KAAKuG,GAAK,MAAQ,MAAQ,IAAMA,CACxD,EACAsU,KAAM,QACNtU,EAAG,iBACHgT,GAAI,aACJ9I,EAAG,YACH6I,GAAI,YACJ9H,EAAG,SACH4H,GAAI,SACJ/I,EAAG,YACHwI,GAAI,YACJtF,EAAG,UACHiF,GAAI,UACJlF,EAAG,UACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CApE0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,gGAAgGjM,MACpG,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,WACL,MACI,WACC/kI,KAAK0kI,QAAU,EAAI,OAA0B,IAAjB1kI,KAAK0kI,QAAgB,IAAM,OACxD,KAER,EACAM,QAAS,WACL,MACI,aACChlI,KAAK0kI,QAAU,EAAI,OAA0B,IAAjB1kI,KAAK0kI,QAAgB,IAAM,OACxD,KAER,EACAO,SAAU,WACN,MACI,WACCjlI,KAAK0kI,QAAU,EAAI,OAA0B,IAAjB1kI,KAAK0kI,QAAgB,IAAM,OACxD,KAER,EACAQ,QAAS,WACL,MACI,WACCllI,KAAK0kI,QAAU,EAAI,OAA0B,IAAjB1kI,KAAK0kI,QAAgB,IAAM,OACxD,KAER,EACAS,SAAU,WACN,OACS,IADDnlI,KAAK0mI,MAGD,uBACC1mI,KAAK0kI,QAAU,EACV,OACiB,IAAjB1kI,KAAK0kI,QACL,IACA,OACN,MAIA,uBACC1kI,KAAK0kI,QAAU,EACV,OACiB,IAAjB1kI,KAAK0kI,QACL,IACA,OACN,KAGhB,EACAU,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,QACNtU,EAAG,iBACHgT,GAAI,aACJ9I,EAAG,YACH6I,GAAI,YACJ9H,EAAG,SACH4H,GAAI,SACJ/I,EAAG,YACHwI,GAAI,YACJpE,EAAG,gBACH2tH,GAAI,eACJ7uH,EAAG,UACHiF,GAAI,UACJlF,EAAG,UACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA5G0CnkH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/B6E,KAAM,CACF,CACIC,MAAO,aACPvnI,OAAQ,EACR+Q,KAAM,KACNy2H,OAAQ,IACRC,KAAM,KAEV,CACIF,MAAO,aACP90G,MAAO,aACPzyB,OAAQ,EACR+Q,KAAM,KACNy2H,OAAQ,IACRC,KAAM,KAEV,CACIF,MAAO,aACP90G,MAAO,aACPzyB,OAAQ,EACR+Q,KAAM,KACNy2H,OAAQ,IACRC,KAAM,KAEV,CACIF,MAAO,aACP90G,MAAO,aACPzyB,OAAQ,EACR+Q,KAAM,KACNy2H,OAAQ,IACRC,KAAM,KAEV,CACIF,MAAO,aACP90G,MAAO,aACPzyB,OAAQ,EACR+Q,KAAM,KACNy2H,OAAQ,IACRC,KAAM,KAEV,CACIF,MAAO,aACP90G,MAAO,aACPzyB,OAAQ,EACR+Q,KAAM,KACNy2H,OAAQ,KACRC,KAAM,MAEV,CACIF,MAAO,aACP90G,OAAO,IACPzyB,OAAQ,EACR+Q,KAAM,MACNy2H,OAAQ,KACRC,KAAM,OAGdC,oBAAqB,WACrBC,oBAAqB,SAAUn9G,EAAO1lB,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAI2I,SAAS3I,EAAM,IAAM0lB,EAAO,GAC9D,EACAtU,OAAQ,yCAAyCjM,MAAM,KACvDkR,YAAa,yCAAyClR,MAClD,KAEJgM,SAAU,8BAA8BhM,MAAM,KAC9CwR,cAAe,gBAAgBxR,MAAM,KACrCsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACN9X,EAAG,aACH+gI,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEV3D,cAAe,SACfC,KAAM,SAAUn4G,GACZ,MAAiB,OAAVA,CACX,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,KAEA,IAEf,EACAjB,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAUjhG,GAChB,OAAIA,EAAIshG,SAAWtlI,KAAKslI,OACb,cAEA,SAEf,EACAJ,QAAS,UACTC,SAAU,SAAUnhG,GAChB,OAAIhkC,KAAKslI,SAAWthG,EAAIshG,OACb,cAEA,SAEf,EACAF,SAAU,KAEdC,uBAAwB,WACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAX3S,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAjhD,aAAc,CACVJ,OAAQ,MACRC,KAAM,MACNtU,EAAG,KACHgT,GAAI,MACJ9I,EAAG,KACH6I,GAAI,MACJ9H,EAAG,MACH4H,GAAI,OACJ/I,EAAG,KACHwI,GAAI,MACJtF,EAAG,MACHiF,GAAI,OACJlF,EAAG,KACHwH,GAAI,QAMhB,CAxJ0CgC,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yFAAyFjM,MAC7F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,+CAA+ChM,MAAM,KAC/DwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVwlH,cAAe,6BACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,WAAbnpH,EACOmpH,EACa,WAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbnpH,GAAsC,UAAbA,EACzBmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,OAEf,EACAI,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,gBACRC,KAAM,uBACNtU,EAAG,kBACHgT,GAAI,WACJ9I,EAAG,kBACH6I,GAAI,WACJ9H,EAAG,gBACH4H,GAAI,SACJ/I,EAAG,WACHwI,GAAI,YACJtF,EAAG,UACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/E0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qGAAqGjM,MACzG,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,CACNyuH,WACI,gEAAgEz6H,MAC5D,KAER2Q,OAAQ,iEAAiE3Q,MACrE,KAEJ06H,SAAU,iBAEdlpH,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SAAUrU,GACd,OAAOA,EAAEnH,QACL,iCACA,SAAU+lI,EAAIC,EAAIC,GACd,MAAc,MAAPA,EAAaD,EAAK,KAAOA,EAAKC,EAAK,IAC9C,GAER,EACAxqH,KAAM,SAAUtU,GACZ,MAAI,4BAA4BvG,KAAKuG,GAC1BA,EAAEnH,QAAQ,SAAU,UAE3B,OAAOY,KAAKuG,GACLA,EAAEnH,QAAQ,QAAS,YAEvBmH,CACX,EACAA,EAAG,iBACHgT,GAAI,UACJ9I,EAAG,OACH6I,GAAI,UACJ9H,EAAG,QACH4H,GAAI,WACJ/I,EAAG,MACHwI,GAAI,SACJtF,EAAG,MACHiF,GAAI,SACJlF,EAAG,OACHwH,GAAI,WAERgmH,uBAAwB,8BACxBptH,QAAS,SAAUuoD,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,IACpB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhG0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIzB,IAAI+B,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA/B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,0DAA0DhM,MAChE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,WACNtU,EAAG,iBACHgT,GAAI,YACJ9I,EAAG,YACH6I,GAAI,WACJ9H,EAAG,YACH4H,GAAI,WACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,QACJlF,EAAG,UACHwH,GAAI,UAERgmH,uBAAwB,kBACxBptH,QAAS,SAAUuoD,GAGf,OAAOA,GAAU6lE,EAAS7lE,IAAW6lE,EAF7B7lE,EAAS,KAEmC6lE,EAD5C7lE,GAAU,IAAM,IAAM,MAElC,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAtF0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yEAAyEjM,MAC7E,KAEJkR,YACI,yEAAyElR,MACrE,KAERgM,SAAU,iDAAiDhM,MAAM,KACjEwR,cAAe,oBAAoBxR,MAAM,KACzCsR,YAAa,oBAAoBtR,MAAM,KACvC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVwlH,cAAe,cACfC,KAAM,SAAUn4G,GACZ,MAAiB,UAAVA,CACX,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,QAEA,OAEf,EACAjB,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,QACNtU,EAAG,iBACHgT,GAAI,YACJ9I,EAAG,UACH6I,GAAI,UACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,UACJtF,EAAG,QACHiF,GAAI,QACJlF,EAAG,WACHwH,GAAI,YAERgmH,uBAAwB,YACxBptH,QAAS,OACTkuH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EACA0+H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3G0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,6FAA6FjM,MACjG,KAEJkR,YACI,2EAA2ElR,MACvE,KAERi7H,kBAAkB,EAClBjvH,SAAU,0DAA0DhM,MAChE,KAEJwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,wBAAwBtR,MAAM,KAC3C84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEV8lH,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,WACNtU,EAAG,gBACHgT,GAAI,gBACJ9I,EAAG,aACH6I,GAAI,WACJ9H,EAAG,YACH4H,GAAI,UACJ/I,EAAG,WACHwI,GAAI,SACJtF,EAAG,cACHiF,GAAI,YACJlF,EAAG,YACHwH,GAAI,WAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EACA49H,cAAe,gCACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,WAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAbnpH,EACAmpH,EACa,aAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,QAEf,EACAV,uBAAwB,eACxBptH,QAAS,SAAUuoD,GACf,OAAOA,EAAS,KACpB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhI0CnkH,CAAQ69B,EAAQ,6BCIjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yCAAyCjM,MAAM,KACvDkR,YAAa,yCAAyClR,MAClD,KAEJgM,SAAU,8BAA8BhM,MAAM,KAC9CwR,cAAe,gBAAgBxR,MAAM,KACrCsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACN9X,EAAG,cACH+gI,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVrD,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,OACRC,KAAM,OACNtU,EAAG,MACHgT,GAAI,MACJ9I,EAAG,KACH6I,GAAI,MACJ9H,EAAG,OACH4H,GAAI,OACJ/I,EAAG,KACHwI,GAAI,MACJtF,EAAG,MACHiF,GAAI,MACJlF,EAAG,MACHwH,GAAI,OAERgmH,uBAAwB,iBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAgkE,cAAe,QACfC,KAAM,SAAUzwG,GACZ,MAAiB,OAAVA,CACX,EACApX,SAAU,SAAUmpH,EAAMC,EAAQ6D,GAC9B,OAAO9D,EAAO,GAAK,KAAO,IAC9B,GAKR,CA9E0C1kH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETpuH,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGCssH,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQA,EACRiF,YAAajF,EACbD,SACI,0EAA0EhM,MACtE,KAERwR,cACI,2DAA2DxR,MAAM,KACrEsR,YAAa,gBAAgBtR,MAAM,KACnC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVwlH,cAAe,kBACfC,KAAM,SAAUn4G,GACZ,MAAO,UAAU/nB,KAAK+nB,EAC1B,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,UAEA,SAEf,EACAjB,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,KACNtU,EAAG,kBACHgT,GAAI,WACJ9I,EAAG,cACH6I,GAAI,YACJ9H,EAAG,eACH4H,GAAI,aACJ/I,EAAG,WACHwI,GAAI,SACJtF,EAAG,YACHiF,GAAI,UACJlF,EAAG,WACHwH,GAAI,UAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EACFl4B,QAAQ,iBAAiB,SAAUiD,GAChC,OAAOw/H,EAAUx/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EACFl4B,QAAQ,OAAO,SAAUiD,GACtB,OAAOs/H,EAAUt/H,EACrB,IACCjD,QAAQ,KAAM,IACvB,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CA1H0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI+B,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA/B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,kFAAkFjM,MACtF,KAEJkR,YAAa,qDAAqDlR,MAC9D,KAEJgM,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,WACNtU,EAAG,iBACHgT,GAAI,YACJ9I,EAAG,YACH6I,GAAI,WACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,QACJlF,EAAG,UACHwH,GAAI,UAERgmH,uBAAwB,wBACxBptH,QAAS,SAAUuoD,GAGf,OAAOA,GAAU6lE,EAAS7lE,IAAW6lE,EAF7B7lE,EAAS,KAEmC6lE,EAD5C7lE,GAAU,IAAM,IAAM,MAElC,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxF0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT1H,EAAG,CAAC,aAAc,gBAClBe,EAAG,CAAC,YAAa,eACjBnB,EAAG,CAAC,UAAW,aACfkD,EAAG,CAAC,WAAY,eAChBD,EAAG,CAAC,UAAW,eAEnB,OAAO+tH,EAAgBlpH,EAAO5P,GAAK,GAAK4P,EAAO5P,GAAK,EACxD,CAsBA,SAASg9H,EAA4BtpE,GAEjC,GADAA,EAASjxD,SAASixD,EAAQ,IACtB/wD,MAAM+wD,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAIomE,EAAYpmE,EAAS,GAEzB,OACWspE,EADO,IAAdlD,EADapmE,EAAS,GAISomE,EACvC,CAAO,GAAIpmE,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAOspE,EAA4BtpE,EACvC,CAGI,OAAOspE,EADPtpE,GAAkB,IAG1B,CAES8jE,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,uFAAuFjM,MAC3F,KAEJkR,YACI,+DAA+DlR,MAC3D,KAERi7H,kBAAkB,EAClBjvH,SACI,mEAAmEhM,MAC/D,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,cACJD,IAAK,iBACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEV8lH,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQnlI,KAAK0mI,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,yBAEnB,GAEJnnH,aAAc,CACVJ,OAlGR,SAA2B0c,GAEvB,OAAIiuG,EADSjuG,EAAOyjC,OAAO,EAAGzjC,EAAO3a,QAAQ,OAElC,KAAO2a,EAEX,MAAQA,CACnB,EA6FQzc,KA5FR,SAAyByc,GAErB,OAAIiuG,EADSjuG,EAAOyjC,OAAO,EAAGzjC,EAAO3a,QAAQ,OAElC,QAAU2a,EAEd,SAAWA,CACtB,EAuFQ/wB,EAAG,kBACHgT,GAAI,cACJ9I,EAAGozH,EACHvqH,GAAI,cACJ9H,EAAGqyH,EACHzqH,GAAI,aACJ/I,EAAGwzH,EACHhrH,GAAI,UACJtF,EAAGswH,EACHrrH,GAAI,WACJlF,EAAGuwH,EACH/oH,GAAI,WAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA5I0CnkH,CAAQ69B,EAAQ,6BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,6EAA6EjM,MACjF,KAEJkR,YACI,6EAA6ElR,MACzE,KAERgM,SAAU,sCAAsChM,MAAM,KACtDwR,cAAe,oCAAoCxR,MAAM,KACzDsR,YAAa,mBAAmBtR,MAAM,KACtC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVwlH,cAAe,kBACfC,KAAM,SAAUn4G,GACZ,MAAiB,WAAVA,CACX,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,WAEA,QAEf,EACAjB,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,WACNtU,EAAG,mBACHgT,GAAI,YACJ9I,EAAG,SACH6I,GAAI,UACJ9H,EAAG,YACH4H,GAAI,aACJ/I,EAAG,QACHwI,GAAI,SACJtF,EAAG,UACHiF,GAAI,WACJlF,EAAG,OACHwH,GAAI,SAERgmH,uBAAwB,eACxBptH,QAAS,SAAUuoD,GACf,MAAO,MAAQA,CACnB,GAKR,CAtE0Cn/C,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAIyF,EAAQ,CACRjsH,GAAI,6BACJ9I,EAAG,wBACH6I,GAAI,0BACJ9H,EAAG,2BACH4H,GAAI,4BACJ/I,EAAG,qBACHwI,GAAI,sBACJtF,EAAG,uBACHiF,GAAI,4BACJlF,EAAG,mBACHwH,GAAI,oBASR,SAAS2qH,EAAkBxpE,EAAQolE,EAAe94H,EAAK+4H,GACnD,OAAOD,EACDW,EAAMz5H,GAAK,GACX+4H,EACAU,EAAMz5H,GAAK,GACXy5H,EAAMz5H,GAAK,EACrB,CACA,SAASoG,EAAQstD,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,EACzD,CACA,SAAS+lE,EAAMz5H,GACX,OAAOi9H,EAAMj9H,GAAKf,MAAM,IAC5B,CACA,SAASi8H,EAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC3C,IAAIp3G,EAAS+xC,EAAS,IACtB,OAAe,IAAXA,EAEI/xC,EAASu7G,EAAkBxpE,EAAQolE,EAAe94H,EAAI,GAAI+4H,GAEvDD,EACAn3G,GAAUvb,EAAQstD,GAAU+lE,EAAMz5H,GAAK,GAAKy5H,EAAMz5H,GAAK,IAE1D+4H,EACOp3G,EAAS83G,EAAMz5H,GAAK,GAEpB2hB,GAAUvb,EAAQstD,GAAU+lE,EAAMz5H,GAAK,GAAKy5H,EAAMz5H,GAAK,GAG1E,CACSw3H,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJ0E,OAAQ,oGAAoG3Q,MACxG,KAEJy6H,WACI,kGAAkGz6H,MAC9F,KAER06H,SAAU,+DAEdxpH,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,CACN2E,OAAQ,oFAAoF3Q,MACxF,KAEJy6H,WACI,2FAA2Fz6H,MACvF,KAER06H,SAAU,cAEdlpH,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,iBAAiBtR,MAAM,KACpC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN9X,EAAG,aACH+gI,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVrD,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EApFR,SAA0B01D,EAAQolE,EAAe94H,EAAK+4H,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,iBAE9C,EA+EQ/nH,GAAIkqH,EACJhzH,EAAGg1H,EACHnsH,GAAImqH,EACJjyH,EAAGi0H,EACHrsH,GAAIqqH,EACJpzH,EAAGo1H,EACH5sH,GAAI4qH,EACJlwH,EAAGkyH,EACHjtH,GAAIirH,EACJnwH,EAAGmyH,EACH3qH,GAAI2oH,GAER3C,uBAAwB,cACxBptH,QAAS,SAAUuoD,GACf,OAAOA,EAAS,MACpB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAjI0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAIyF,EAAQ,CACRjsH,GAAI,qCAAqC/R,MAAM,KAC/CiJ,EAAG,iCAAiCjJ,MAAM,KAC1C8R,GAAI,iCAAiC9R,MAAM,KAC3CgK,EAAG,iCAAiChK,MAAM,KAC1C4R,GAAI,iCAAiC5R,MAAM,KAC3C6I,EAAG,6BAA6B7I,MAAM,KACtCqR,GAAI,6BAA6BrR,MAAM,KACvC+L,EAAG,iCAAiC/L,MAAM,KAC1CgR,GAAI,iCAAiChR,MAAM,KAC3C8L,EAAG,wBAAwB9L,MAAM,KACjCsT,GAAI,wBAAwBtT,MAAM,MAKtC,SAAS2Q,EAAO6pH,EAAO/lE,EAAQolE,GAC3B,OAAIA,EAEOplE,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAK+lE,EAAM,GAAKA,EAAM,GAI5D/lE,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAK+lE,EAAM,GAAKA,EAAM,EAE3E,CACA,SAASD,EAAuB9lE,EAAQolE,EAAe94H,GACnD,OAAO0zD,EAAS,IAAM9jD,EAAOqtH,EAAMj9H,GAAM0zD,EAAQolE,EACrD,CACA,SAASqE,EAAyBzpE,EAAQolE,EAAe94H,GACrD,OAAO4P,EAAOqtH,EAAMj9H,GAAM0zD,EAAQolE,EACtC,CAKStB,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,uGAAuGjM,MAC3G,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,0EAA0EhM,MACtE,KAERwR,cAAe,kBAAkBxR,MAAM,KACvCsR,YAAa,kBAAkBtR,MAAM,KACrC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEV8lH,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,WACNtU,EAnCR,SAAyB01D,EAAQolE,GAC7B,OAAOA,EAAgB,iBAAmB,gBAC9C,EAkCQ9nH,GAAIwoH,EACJtxH,EAAGi1H,EACHpsH,GAAIyoH,EACJvwH,EAAGk0H,EACHtsH,GAAI2oH,EACJ1xH,EAAGq1H,EACH7sH,GAAIkpH,EACJxuH,EAAGmyH,EACHltH,GAAIupH,EACJzuH,EAAGoyH,EACH5qH,GAAIinH,GAERjB,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAjG0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIzB,IAAI7jE,EAAa,CACbypE,MAAO,CAEHpsH,GAAI,CAAC,SAAU,UAAW,WAC1B9I,EAAG,CAAC,cAAe,iBACnB6I,GAAI,CAAC,QAAS,SAAU,UACxB9H,EAAG,CAAC,YAAa,eACjB4H,GAAI,CAAC,MAAO,OAAQ,QACpBP,GAAI,CAAC,MAAO,OAAQ,QACpBL,GAAI,CAAC,SAAU,UAAW,WAC1BsC,GAAI,CAAC,SAAU,SAAU,WAE7B8qH,uBAAwB,SAAU3pE,EAAQ4pE,GACtC,OAAkB,IAAX5pE,EACD4pE,EAAQ,GACR5pE,GAAU,GAAKA,GAAU,EACzB4pE,EAAQ,GACRA,EAAQ,EAClB,EACApC,UAAW,SAAUxnE,EAAQolE,EAAe94H,GACxC,IAAIs9H,EAAU3pE,EAAWypE,MAAMp9H,GAC/B,OAAmB,IAAfA,EAAIrI,OACGmhI,EAAgBwE,EAAQ,GAAKA,EAAQ,GAGxC5pE,EACA,IACAC,EAAW0pE,uBAAuB3pE,EAAQ4pE,EAGtD,GAGK9F,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,mFAAmFjM,MACvF,KAEJkR,YACI,2DAA2DlR,MAAM,KACrEi7H,kBAAkB,EAClBjvH,SAAU,4DAA4DhM,MAClE,KAEJwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACAxB,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgBnlI,KAAK0mI,MAC7B,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,mBACHgT,GAAI2iD,EAAWunE,UACfhzH,EAAGyrD,EAAWunE,UACdnqH,GAAI4iD,EAAWunE,UACfjyH,EAAG0qD,EAAWunE,UACdrqH,GAAI8iD,EAAWunE,UACfpzH,EAAG,MACHwI,GAAIqjD,EAAWunE,UACflwH,EAAG,SACHiF,GAAI0jD,EAAWunE,UACfnwH,EAAG,SACHwH,GAAIohD,EAAWunE,WAEnB3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzH0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,8IAA8IjM,MAClJ,KAEJkR,YACI,iEAAiElR,MAC7D,KAERw7H,YAAa,yCACbK,kBAAmB,yCACnBb,iBAAkB,yCAClBc,uBAAwB,yCACxB9vH,SAAU,kDAAkDhM,MAAM,KAClEwR,cAAe,wBAAwBxR,MAAM,KAC7CsR,YAAa,wBAAwBtR,MAAM,KAC3C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEV8lH,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,cACRC,KAAM,WACNtU,EAAG,mBACHgT,GAAI,YACJ9I,EAAG,YACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,QACJtF,EAAG,YACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,UAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhE0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,uFAAuFjM,MAC3F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,kBACHgT,GAAI,aACJ9I,EAAG,cACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,WACHwI,GAAI,UACJtF,EAAG,aACHiF,GAAI,YACJlF,EAAG,cACHwH,GAAI,aAERgmH,uBAAwB,8BACxBptH,QAAS,SAAUuoD,GACf,IAAIomE,EAAYpmE,EAAS,GACrBqmE,EAAcrmE,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhBqmE,EACArmE,EAAS,MACTqmE,EAAc,IAAMA,EAAc,GAClCrmE,EAAS,MACK,IAAdomE,EACApmE,EAAS,MACK,IAAdomE,EACApmE,EAAS,MACK,IAAdomE,GAAiC,IAAdA,EACnBpmE,EAAS,MAETA,EAAS,KAExB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzF0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yFAAyFjM,MAC7F,KAEJkR,YACI,yEAAyElR,MACrE,KAERi7H,kBAAkB,EAClBjvH,SACI,wEAAwEhM,MACpE,KAERwR,cAAe,2CAA2CxR,MAAM,KAChEsR,YAAa,wBAAwBtR,MAAM,KAC3C84H,eAAgB,CACZjmH,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEV8lH,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,aACRC,KAAM,WACNtU,EAAG,gBACHgT,GAAI,cACJ9I,EAAG,eACH6I,GAAI,cACJ9H,EAAG,eACH4H,GAAI,cACJ/I,EAAG,YACHwI,GAAI,WACJtF,EAAG,WACHiF,GAAI,UACJlF,EAAG,WACHwH,GAAI,WAERmlH,cAAe,gDACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAGO,WAAbnpH,GAAyBmpH,GAAQ,GACrB,iBAAbnpH,GACa,eAAbA,EAEOmpH,EAAO,GAEPA,CAEf,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,QAEf,GAKR,CAtF0C1kH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,SAAS0D,EAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC3C,OAAQ/4H,GACJ,IAAK,IACD,OAAO84H,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOplE,GAAUolE,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOplE,GAAUolE,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOplE,GAAUolE,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOplE,GAAUolE,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOplE,GAAUolE,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOplE,GAAUolE,EAAgB,OAAS,WAC9C,QACI,OAAOplE,EAEnB,CAES8jE,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,+LAA+LjM,MACnM,KAEJkR,YACI,6EAA6ElR,MACzE,KAERi7H,kBAAkB,EAClBjvH,SAAU,6CAA6ChM,MAAM,KAC7DwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVwlH,cAAe,SACfC,KAAM,SAAUn4G,GACZ,MAAiB,OAAVA,CACX,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,KAEA,IAEf,EACAjB,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,UACNtU,EAAGk9H,EACHlqH,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAGozH,EACH5qH,GAAI4qH,EACJlwH,EAAGkwH,EACHjrH,GAAIirH,EACJnwH,EAAGmwH,EACH3oH,GAAI2oH,GAER3C,uBAAwB,eACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,QACpB,QACI,OAAOA,EAEnB,GAKR,CAxG0Cn/C,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAASiE,EAAe7pE,EAAQolE,EAAe/pG,EAAQgqG,GACnD,IAAIp2E,EAAS,GACb,GAAIm2E,EACA,OAAQ/pG,GACJ,IAAK,IACD4zB,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQ5zB,GACJ,IAAK,IACD4zB,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAO9rD,QAAQ,MAAO68D,EACjC,CAES8jE,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YACI,gFAAgFlR,MAC5E,KAERi7H,kBAAkB,EAClBjvH,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,kCAAkCxR,MAAM,KACvDsR,YAAa,qBAAqBtR,MAAM,KACxC84H,eAAgB,CACZjmH,GAAI,eACJD,IAAK,kBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEV8lH,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,WACNtU,EACAgT,GAAIusH,EACJr1H,EAAGq1H,EACHxsH,GAAIwsH,EACJt0H,EAAGs0H,EACH1sH,GAAI0sH,EACJz1H,EAAGy1H,EACHjtH,GAAIitH,EACJvyH,EAAGuyH,EACHttH,GAAIstH,EACJxyH,EAAGwyH,EACHhrH,GAAIgrH,GAERlE,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EACA49H,cAAe,qCACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,UAAbnpH,GAAqC,UAAbA,EACjBmpH,EAEM,WAAbnpH,GACa,aAAbA,GACa,WAAbA,EAEOmpH,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,CAOX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,QAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9M0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,oFAAoFjM,MACxF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,6CAA6ChM,MAAM,KAC7DwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVwlH,cAAe,8BACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,SAAbnpH,EACOmpH,EACa,cAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbnpH,GAAsC,UAAbA,EACzBmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,OAEf,EACAI,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,gBACNtU,EAAG,gBACHgT,GAAI,UACJ9I,EAAG,UACH6I,GAAI,WACJ9H,EAAG,QACH4H,GAAI,SACJ/I,EAAG,SACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,YAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/E0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,oFAAoFjM,MACxF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,6CAA6ChM,MAAM,KAC7DwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVwlH,cAAe,8BACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,SAAbnpH,EACOmpH,EACa,cAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAbnpH,GAAsC,UAAbA,EACzBmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,OAEf,EACAI,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,gBACNtU,EAAG,gBACHgT,GAAI,UACJ9I,EAAG,UACH6I,GAAI,WACJ9H,EAAG,QACH4H,GAAI,SACJ/I,EAAG,SACHwI,GAAI,UACJtF,EAAG,UACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,YAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/E0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,iEAAiEhM,MAC7D,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,eACHgT,GAAI,aACJ9I,EAAG,SACH6I,GAAI,YACJ9H,EAAG,SACH4H,GAAI,aACJ/I,EAAG,UACHwI,GAAI,YACJtF,EAAG,QACHiF,GAAI,UACJlF,EAAG,OACHwH,GAAI,UAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA5D0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,2FAA2FjM,MAC/F,KAEJkR,YAAa,mDAAmDlR,MAAM,KACtEgM,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,2BAA2BxR,MAAM,KAChDsR,YAAa,2BAA2BtR,MAAM,KAE9C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,gBACRC,KAAM,kBACNtU,EAAG,kBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,WACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,OACHiF,GAAI,OACJlF,EAAG,UACHwH,GAAI,WAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EACA0+H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7F0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YACI,6DAA6DlR,MAAM,KACvEi7H,kBAAkB,EAClBjvH,SAAU,qDAAqDhM,MAAM,KACrEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEV8lH,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,gBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,cACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,WACJpE,EAAG,SACH2tH,GAAI,UACJ7uH,EAAG,WACHiF,GAAI,aACJlF,EAAG,SACHwH,GAAI,SAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9D0CnkH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,uFAAuFjM,MAC3F,KAEJkR,YACI,uEAAuElR,MACnE,KAERi7H,kBAAkB,EAClBjvH,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,0CAA0CxR,MAAM,KAC/DsR,YAAa,4BAA4BtR,MAAM,KAC/C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,eACJD,IAAK,kBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVmnH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EACA49H,cAAe,yBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,SAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAbnpH,EACAmpH,EACa,WAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,MAEf,EACAjB,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,OACRC,KAAM,WACNtU,EAAG,YACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,WACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,WACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,WAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7H0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAI2E,EACI,6DAA6Dl9H,MAAM,KACvEm9H,EACI,kDAAkDn9H,MAAM,KAC5Du7H,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAEGjD,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YAAa,SAAUjI,EAAG0H,GACtB,OAAK1H,EAEM,QAAQzQ,KAAKmY,GACbwsH,EAAuBl0H,EAAE4D,SAEzBqwH,EAAoBj0H,EAAE4D,SAJtBqwH,CAMf,EAEA1B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBACI,4FACJC,uBACI,mFAEJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBvvH,SACI,6DAA6DhM,MAAM,KACvEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,aACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,SACJ/I,EAAG,UACHwI,GAAI,WACJtF,EAAG,YACHiF,GAAI,aACJlF,EAAG,WACHwH,GAAI,WAERgmH,uBAAwB,kBACxBptH,QAAS,SAAUuoD,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAEhE,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzG0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI2E,EACI,6DAA6Dl9H,MAAM,KACvEm9H,EACI,kDAAkDn9H,MAAM,KAC5Du7H,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EACI,qKAECjD,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YAAa,SAAUjI,EAAG0H,GACtB,OAAK1H,EAEM,QAAQzQ,KAAKmY,GACbwsH,EAAuBl0H,EAAE4D,SAEzBqwH,EAAoBj0H,EAAE4D,SAJtBqwH,CAMf,EAEA1B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBACI,4FACJC,uBACI,mFAEJP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBvvH,SACI,6DAA6DhM,MAAM,KACvEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,aACNtU,EAAG,oBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,SACJ/I,EAAG,UACHwI,GAAI,WACJpE,EAAG,WACH2tH,GAAI,WACJ7uH,EAAG,YACHiF,GAAI,aACJlF,EAAG,WACHwH,GAAI,WAERgmH,uBAAwB,kBACxBptH,QAAS,SAAUuoD,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,KAEhE,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3G0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qFAAqFjM,MACzF,KAEJkR,YACI,6DAA6DlR,MAAM,KACvEi7H,kBAAkB,EAClBjvH,SAAU,qDAAqDhM,MAAM,KACrEwR,cAAe,+BAA+BxR,MAAM,KACpDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEV8lH,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,WACNtU,EAAG,eACHgT,GAAI,YACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,UACHwI,GAAI,WACJpE,EAAG,UACH2tH,GAAI,WACJ7uH,EAAG,YACHiF,GAAI,aACJlF,EAAG,SACHwH,GAAI,SAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9D0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIbA,EAAOC,aAAa,SAAU,CACtCvsH,OAAQ,CACJwuH,WACI,qFAAqFz6H,MACjF,KAER2Q,OAAQ,sHAAsH3Q,MAC1H,KAEJ06H,SAAU,mBAEdxpH,YACI,+DAA+DlR,MAC3D,KAERi7H,kBAAkB,EAClBjvH,SAAU,2DAA2DhM,MACjE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,mBACJmpH,GAAI,aACJlpH,IAAK,4BACLmpH,IAAK,mBACLlpH,KAAM,iCACNmpH,KAAM,wBAEVrD,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,QACNtU,EAAG,gBACHgT,GAAI,cACJ9I,EAAG,aACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,WACJtF,EAAG,SACHiF,GAAI,WACJlF,EAAG,QACHwH,GAAI,UAERgmH,uBAAwB,qBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,IAAI1jB,EACW,IAAX+Q,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAX2S,GAA6B,MAAXA,IAClB1jB,EAAS,KAEN+Q,EAAS/Q,CACpB,EACA61E,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzF0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGF9B,EAAOC,aAAa,QAAS,CAEpCvsH,OAAQ,sEAAsEjM,MAC1E,KAEJkR,YACI,sEAAsElR,MAClE,KAERgM,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,iCAAiCxR,MAAM,KACtDsR,YAAa,iCAAiCtR,MAAM,KACpD84H,eAAgB,CACZjmH,GAAI,aACJD,IAAK,gBACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEV8lH,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,UACRC,KAAM,WACNtU,EAAG,YACHgT,GAAI,WACJ9I,EAAG,UACH6I,GAAI,UACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,YACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,UAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EAGA49H,cAAe,uBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,QAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnpH,EACAmpH,EACa,WAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,KAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9H0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAIgG,EACI,mGAAmGv+H,MAC/F,KAERw+H,EACI,qGAAqGx+H,MACjG,KAERu7H,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAAS7+B,EAAOxzF,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,CAC3D,CACA,SAAS+yH,EAAUxnE,EAAQolE,EAAe94H,GACtC,IAAI2hB,EAAS+xC,EAAS,IACtB,OAAQ1zD,GACJ,IAAK,KACD,OAAO2hB,GAAUg6E,EAAOjoC,GAAU,UAAY,UAClD,IAAK,IACD,OAAOolE,EAAgB,SAAW,SACtC,IAAK,KACD,OAAOn3G,GAAUg6E,EAAOjoC,GAAU,SAAW,SACjD,IAAK,IACD,OAAOolE,EAAgB,UAAY,UACvC,IAAK,KACD,OAAOn3G,GAAUg6E,EAAOjoC,GAAU,UAAY,UAClD,IAAK,KACD,OAAO/xC,GAAUg6E,EAAOjoC,GAAU,WAAa,WACnD,IAAK,KACD,OAAO/xC,GAAUg6E,EAAOjoC,GAAU,WAAa,YACnD,IAAK,KACD,OAAO/xC,GAAUg6E,EAAOjoC,GAAU,OAAS,OAEvD,CAES8jE,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,SAAUuwH,EAAgB7rH,GAC9B,OAAK6rH,EAEM,SAAShkI,KAAKmY,GACd6tH,EAAiBhC,EAAe3vH,SAEhC0xH,EAAiB/B,EAAe3vH,SAJhC0xH,CAMf,EACArtH,YAAa,kDAAkDlR,MAAM,KACrEu7H,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClBvvH,SACI,6DAA6DhM,MAAM,KACvEwR,cAAe,2BAA2BxR,MAAM,KAChDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,kBAEnB,EACAxB,QAAS,iBACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,yBAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,eACHgT,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAG,UACHwI,GAAI,SACJpE,EAAG,UACH2tH,GAAIqB,EACJlwH,EAAG,UACHiF,GAAIirH,EACJnwH,EAAG,MACHwH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhJ0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,2FAA2FjM,MAC/F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,iFAAiFhM,MAC7E,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfnlI,KAAK0mI,OAA8B,IAAf1mI,KAAK0mI,MAC1B,wBACA,uBACV,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,QACNtU,EAAG,kBACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJtF,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACT0E,YAAa,iBAKrB,CA9D0C0E,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,2FAA2FjM,MAC/F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,iFAAiFhM,MAC7E,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfnlI,KAAK0mI,OAA8B,IAAf1mI,KAAK0mI,MAC1B,wBACA,uBACV,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,QACNtU,EAAG,WACHgT,GAAI,cACJ9I,EAAG,YACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,UACJpE,EAAG,aACH2tH,GAAI,aACJ7uH,EAAG,SACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,WAERgmH,uBAAwB,WACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAnE0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIzB,SAASgC,EAAuB9lE,EAAQolE,EAAe94H,GACnD,IASI+2F,EAAY,IAIhB,OAHIrjC,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDqjC,EAAY,QAETrjC,EAASqjC,EAbH,CACL/lF,GAAI,UACJD,GAAI,SACJF,GAAI,MACJP,GAAI,OACJupH,GAAI,YACJ5pH,GAAI,OACJsC,GAAI,OAMuBvS,EACvC,CAESw3H,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,oGAAoGjM,MACxG,KAEJkR,YACI,+DAA+DlR,MAC3D,KAERi7H,kBAAkB,EAClBjvH,SAAU,kDAAkDhM,MAAM,KAClEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,aACNtU,EAAG,iBACHgT,GAAIwoH,EACJtxH,EAAG,WACH6I,GAAIyoH,EACJvwH,EAAG,QACH4H,GAAI2oH,EACJ1xH,EAAG,OACHwI,GAAIkpH,EACJttH,EAAG,cACH2tH,GAAIL,EACJxuH,EAAG,SACHiF,GAAIupH,EACJzuH,EAAG,QACHwH,GAAIinH,GAERhB,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA9E0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAYzB,SAASgC,EAAuB9lE,EAAQolE,EAAe94H,GAUnD,MAAY,MAARA,EACO84H,EAAgB,SAAW,SAE3BplE,EAAS,KArBFt9C,GAqB6Bs9C,EApB3C+lE,EAQS,CACTzoH,GAAI8nH,EAAgB,yBAA2B,yBAC/C/nH,GAAI+nH,EAAgB,sBAAwB,sBAC5CjoH,GAAI,iBACJP,GAAI,gBACJupH,GAAI,uBACJ5pH,GAAI,uBACJsC,GAAI,gBAKgCvS,GApBvBf,MAAM,KAChBmX,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCqjH,EAAM,GACNrjH,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEqjH,EAAM,GACNA,EAAM,IANhB,IAAsBrjH,EACdqjH,CAsBR,CACA,IAAIe,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMKhD,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJ0E,OAAQ,oFAAoF3Q,MACxF,KAEJy6H,WACI,kFAAkFz6H,MAC9E,MAGZkR,YAAa,CAETP,OAAQ,gEAAgE3Q,MACpE,KAEJy6H,WACI,gEAAgEz6H,MAC5D,MAGZgM,SAAU,CACNyuH,WACI,gEAAgEz6H,MAC5D,KAER2Q,OAAQ,gEAAgE3Q,MACpE,KAEJ06H,SAAU,iDAEdlpH,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1Cu7H,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YACI,2MAGJR,iBACI,2MAGJa,kBACI,wHAGJC,uBACI,6FACJhD,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAUjhG,GAChB,GAAIA,EAAIshG,SAAWtlI,KAAKslI,OAcpB,OAAmB,IAAftlI,KAAK0mI,MACE,oBAEA,mBAhBX,OAAQ1mI,KAAK0mI,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BASvB,EACAvB,SAAU,SAAUnhG,GAChB,GAAIA,EAAIshG,SAAWtlI,KAAKslI,OAcpB,OAAmB,IAAftlI,KAAK0mI,MACE,oBAEA,mBAhBX,OAAQ1mI,KAAK0mI,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BASvB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,WACNtU,EAAG,mBACHgT,GAAIwoH,EACJtxH,EAAGsxH,EACHzoH,GAAIyoH,EACJvwH,EAAG,MACH4H,GAAI2oH,EACJ1xH,EAAG,OACHwI,GAAIkpH,EACJttH,EAAG,SACH2tH,GAAIL,EACJxuH,EAAG,QACHiF,GAAIupH,EACJzuH,EAAG,MACHwH,GAAIinH,GAER9B,cAAe,wBACfC,KAAM,SAAUn4G,GACZ,MAAO,iBAAiB/nB,KAAK+nB,EACjC,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,QAEf,EACAV,uBAAwB,mBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,EAEnB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAvN0CnkH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIzB,IAAItsH,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJ6qH,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElDyB,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQA,EACRiF,YAAajF,EACbD,SAAU8qH,EACVtlH,cAAeslH,EACfxlH,YAAawlH,EACbgC,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVwlH,cAAe,UACfC,KAAM,SAAUn4G,GACZ,MAAO,QAAUA,CACrB,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,MAEJ,KACX,EACAjB,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,QACNtU,EAAG,YACHgT,GAAI,WACJ9I,EAAG,SACH6I,GAAI,SACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,WACHwI,GAAI,WACJtF,EAAG,WACHiF,GAAI,WACJlF,EAAG,SACHwH,GAAI,UAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CArF0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,mJAAmJjM,MACvJ,KAEJkR,YACI,6DAA6DlR,MAAM,KACvEgM,SACI,6EAA6EhM,MACzE,KAERwR,cAAe,mCAAmCxR,MAAM,KACxDsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,WACNtU,EAAG,mBACHgT,GAAI,eACJ9I,EAAG,eACH6I,GAAI,cACJ9H,EAAG,cACH4H,GAAI,aACJ/I,EAAG,cACHwI,GAAI,cACJtF,EAAG,aACHiF,GAAI,WACJlF,EAAG,aACHwH,GAAI,YAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAKhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,kGAAkGjM,MACtG,KAEJkR,YAAa,wDAAwDlR,MACjE,KAEJgM,SACI,gEAAgEhM,MAC5D,KAERwR,cAAe,gCAAgCxR,MAAM,KACrDsR,YAAa,qBAAqBtR,MAAM,KACxC+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEV8lH,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,WACNtU,EAAG,eACHgT,GAAI,WACJ9I,EAAG,YACH6I,GAAI,cACJ9H,EAAG,MACH4H,GAAI,SACJ/I,EAAG,OACHwI,GAAI,SACJtF,EAAG,OACHiF,GAAI,SACJlF,EAAG,MACHwH,GAAI,UAERgmH,uBAAwB,eACxBptH,QAAS,SAAUuoD,GACf,OAAOA,EAAS,OACpB,EACAgkE,cAAe,4BACfC,KAAM,SAAUn4G,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,CAC/B,EACA1P,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,OAAS,UAEnBA,EAAU,QAAU,SAEnC,GAKR,CAzE0CvjH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAItsH,EACI,oFAAoFjM,MAChF,KAERkR,EAAc,kDAAkDlR,MAAM,KAC1E,SAAS08F,EAAOxzF,GACZ,OAAOA,EAAI,GAAKA,EAAI,CACxB,CACA,SAAS+yH,EAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC3C,IAAIp3G,EAAS+xC,EAAS,IACtB,OAAQ1zD,GACJ,IAAK,IACD,OAAO84H,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,UAAY,UAEvC/xC,EAAS,YAExB,IAAK,IACD,OAAOm3G,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,SAAW,SAEtC/xC,EAAS,WAExB,IAAK,IACD,OAAOm3G,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,SAAW,SAEtC/xC,EAAS,WAExB,IAAK,IACD,OAAOm3G,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,MAAQ,OAEnC/xC,EAAS,QAExB,IAAK,IACD,OAAOm3G,GAAiBC,EAAW,SAAW,WAClD,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,UAAY,YAEvC/xC,EAAS,WAExB,IAAK,IACD,OAAOm3G,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACVp3G,GAAUg6E,EAAOjoC,GAAU,OAAS,SAEpC/xC,EAAS,QAGhC,CAES61G,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQA,EACRiF,YAAaA,EACblF,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBAEnB,EACAxB,QAAS,eACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EAIL,KAAK,EACL,KAAK,EACD,MAAO,uBAJX,KAAK,EACD,MAAO,uBAIX,KAAK,EACD,MAAO,uBAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAGk9H,EACHlqH,GAAIkqH,EACJhzH,EAAGgzH,EACHnqH,GAAImqH,EACJjyH,EAAGiyH,EACHrqH,GAAIqqH,EACJpzH,EAAGozH,EACH5qH,GAAI4qH,EACJlwH,EAAGkwH,EACHjrH,GAAIirH,EACJnwH,EAAGmwH,EACH3oH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CApJ0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAIp3G,EAAS+xC,EAAS,IACtB,OAAQ1zD,GACJ,IAAK,IACD,OAAO84H,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARIp3G,GADW,IAAX+xC,EACUolE,EAAgB,UAAY,UACpB,IAAXplE,EACGolE,GAAiBC,EAAW,UAAY,WAC3CrlE,EAAS,EACNolE,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARIn3G,GADW,IAAX+xC,EACUolE,EAAgB,SAAW,SACnB,IAAXplE,EACGolE,GAAiBC,EAAW,SAAW,WAC1CrlE,EAAS,EACNolE,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARIn3G,GADW,IAAX+xC,EACUolE,EAAgB,MAAQ,MAChB,IAAXplE,EACGolE,GAAiBC,EAAW,MAAQ,QACvCrlE,EAAS,EACNolE,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANIp3G,GADW,IAAX+xC,EACUolE,GAAiBC,EAAW,MAAQ,OAC5B,IAAXrlE,EACGolE,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARIp3G,GADW,IAAX+xC,EACUolE,GAAiBC,EAAW,QAAU,UAC9B,IAAXrlE,EACGolE,GAAiBC,EAAW,SAAW,WAC1CrlE,EAAS,EACNolE,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARIp3G,GADW,IAAX+xC,EACUolE,GAAiBC,EAAW,OAAS,QAC7B,IAAXrlE,EACGolE,GAAiBC,EAAW,OAAS,SACxCrlE,EAAS,EACNolE,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,QAI9D,CAESvB,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YACI,8DAA8DlR,MAC1D,KAERi7H,kBAAkB,EAClBjvH,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,mBAEnB,EACAxB,QAAS,iBACTC,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAEnB,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,UACNtU,EAAGs9H,EACHtqH,GAAIsqH,EACJpzH,EAAGozH,EACHvqH,GAAIuqH,EACJryH,EAAGqyH,EACHzqH,GAAIyqH,EACJxzH,EAAGwzH,EACHhrH,GAAIgrH,EACJtwH,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/K0CnkH,CAAQ69B,EAAQ,6BCKjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,gFAAgFjM,MACpF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,4DAA4DhM,MAClE,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,mBAAmBtR,MAAM,KACtC+5H,oBAAoB,EACpBtB,cAAe,QACfC,KAAM,SAAUn4G,GACZ,MAA2B,MAApBA,EAAMg5B,OAAO,EACxB,EACA1oC,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAOF,EAAQ,GAAK,KAAO,IAC/B,EACAG,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,aACNtU,EAAG,eACHgT,GAAI,aACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,UACH4H,GAAI,SACJ/I,EAAG,WACHwI,GAAI,UACJtF,EAAG,WACHiF,GAAI,UACJlF,EAAG,UACHwH,GAAI,WAERgmH,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAnE0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIzB,IAAI7jE,EAAa,CACbypE,MAAO,CAEHpsH,GAAI,CAAC,UAAW,UAAW,WAC3B9I,EAAG,CAAC,cAAe,iBACnB6I,GAAI,CAAC,QAAS,SAAU,UACxB9H,EAAG,CAAC,YAAa,eACjB4H,GAAI,CAAC,MAAO,OAAQ,QACpB/I,EAAG,CAAC,YAAa,eACjBwI,GAAI,CAAC,MAAO,OAAQ,QACpBtF,EAAG,CAAC,cAAe,iBACnBiF,GAAI,CAAC,QAAS,SAAU,UACxBlF,EAAG,CAAC,eAAgB,gBACpBwH,GAAI,CAAC,SAAU,SAAU,WAE7B8qH,uBAAwB,SAAU3pE,EAAQ4pE,GACtC,OACI5pE,EAAS,IAAM,GACfA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAMA,EAAS,KAAO,IAE/BA,EAAS,IAAO,EAAI4pE,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,EACnB,EACApC,UAAW,SAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC7C,IACIvY,EADA8c,EAAU3pE,EAAWypE,MAAMp9H,GAG/B,OAAmB,IAAfA,EAAIrI,OAEQ,MAARqI,GAAe84H,EAAsB,eAClCC,GAAYD,EAAgBwE,EAAQ,GAAKA,EAAQ,IAG5D9c,EAAO7sD,EAAW0pE,uBAAuB3pE,EAAQ4pE,GAErC,OAARt9H,GAAgB84H,GAA0B,WAATtY,EAC1B9sD,EAAS,UAGbA,EAAS,IAAM8sD,EAC1B,GAGSgX,EAAOC,aAAa,UAAW,CACxCvsH,OAAQ,mFAAmFjM,MACvF,KAEJkR,YACI,2DAA2DlR,MAAM,KACrEi7H,kBAAkB,EAClBjvH,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACAxB,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgBnlI,KAAK0mI,MAC7B,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,mBACHgT,GAAI2iD,EAAWunE,UACfhzH,EAAGyrD,EAAWunE,UACdnqH,GAAI4iD,EAAWunE,UACfjyH,EAAG0qD,EAAWunE,UACdrqH,GAAI8iD,EAAWunE,UACfpzH,EAAG6rD,EAAWunE,UACd5qH,GAAIqjD,EAAWunE,UACflwH,EAAG2oD,EAAWunE,UACdjrH,GAAI0jD,EAAWunE,UACfnwH,EAAG4oD,EAAWunE,UACd3oH,GAAIohD,EAAWunE,WAEnB3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAlI0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI7jE,EAAa,CACbypE,MAAO,CAEHpsH,GAAI,CAAC,UAAW,UAAW,WAC3B9I,EAAG,CAAC,cAAe,iBACnB6I,GAAI,CAAC,QAAS,SAAU,UACxB9H,EAAG,CAAC,YAAa,eACjB4H,GAAI,CAAC,MAAO,OAAQ,QACpB/I,EAAG,CAAC,YAAa,eACjBwI,GAAI,CAAC,MAAO,OAAQ,QACpBtF,EAAG,CAAC,cAAe,iBACnBiF,GAAI,CAAC,QAAS,SAAU,UACxBlF,EAAG,CAAC,eAAgB,gBACpBwH,GAAI,CAAC,SAAU,SAAU,WAE7B8qH,uBAAwB,SAAU3pE,EAAQ4pE,GACtC,OACI5pE,EAAS,IAAM,GACfA,EAAS,IAAM,IACdA,EAAS,IAAM,IAAMA,EAAS,KAAO,IAE/BA,EAAS,IAAO,EAAI4pE,EAAQ,GAAKA,EAAQ,GAE7CA,EAAQ,EACnB,EACApC,UAAW,SAAUxnE,EAAQolE,EAAe94H,EAAK+4H,GAC7C,IACIvY,EADA8c,EAAU3pE,EAAWypE,MAAMp9H,GAG/B,OAAmB,IAAfA,EAAIrI,OAEQ,MAARqI,GAAe84H,EAAsB,eAClCC,GAAYD,EAAgBwE,EAAQ,GAAKA,EAAQ,IAG5D9c,EAAO7sD,EAAW0pE,uBAAuB3pE,EAAQ4pE,GAErC,OAARt9H,GAAgB84H,GAA0B,WAATtY,EAC1B9sD,EAAS,UAGbA,EAAS,IAAM8sD,EAC1B,GAGKgX,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,mFAAmFjM,MACvF,KAEJkR,YACI,2DAA2DlR,MAAM,KACrEi7H,kBAAkB,EAClBjvH,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQjlI,KAAK0mI,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,kBAEnB,EACAxB,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgBnlI,KAAK0mI,MAC7B,EACAtB,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,mBACHgT,GAAI2iD,EAAWunE,UACfhzH,EAAGyrD,EAAWunE,UACdnqH,GAAI4iD,EAAWunE,UACfjyH,EAAG0qD,EAAWunE,UACdrqH,GAAI8iD,EAAWunE,UACfpzH,EAAG6rD,EAAWunE,UACd5qH,GAAIqjD,EAAWunE,UACflwH,EAAG2oD,EAAWunE,UACdjrH,GAAI0jD,EAAWunE,UACfnwH,EAAG4oD,EAAWunE,UACd3oH,GAAIohD,EAAWunE,WAEnB3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CApI0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,mHAAmHjM,MACvH,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,sEAAsEhM,MAClE,KAERwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,iBACNtU,EAAG,qBACHgT,GAAI,cACJ9I,EAAG,SACH6I,GAAI,aACJ9H,EAAG,SACH4H,GAAI,aACJ/I,EAAG,UACHwI,GAAI,cACJtF,EAAG,UACHiF,GAAI,cACJlF,EAAG,UACHwH,GAAI,eAERmlH,cAAe,mCACf5nH,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,SAEf,EACAoC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,YAAbnpH,EACOmpH,EACa,UAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAbnpH,GAA0C,YAAbA,EACvB,IAATmpH,EACO,EAEJA,EAAO,QAJX,CAMX,EACAV,uBAAwB,UACxBptH,QAAS,KACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxF0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,oDAAoDhM,MAAM,KACpEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNkpH,IAAK,mBACLC,KAAM,wBAEVrD,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,eACNtU,EAAG,iBACHgT,GAAI,cACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,WACH4H,GAAI,YACJ/I,EAAG,SACHwI,GAAI,WACJtF,EAAG,WACHiF,GAAI,aACJlF,EAAG,SACHwH,GAAI,SAERgmH,uBAAwB,mBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,GAEM,IAANA,EADA,KAIA,KAGlB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAxE0CnkH,CAAQ69B,EAAQ,4BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,sFAAsFjM,MAC1F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SACI,8DAA8DhM,MAC1D,KAERwR,cAAe,kCAAkCxR,MAAM,KACvDsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,UACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,aACRC,KAAM,WACNtU,EAAG,aACHgT,GAAI,aACJ9I,EAAG,cACH6I,GAAI,YACJ9H,EAAG,aACH4H,GAAI,WACJ/I,EAAG,YACHwI,GAAI,UACJtF,EAAG,cACHiF,GAAI,WACJlF,EAAG,cACHwH,GAAI,YAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA3D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI4B,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJ9B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YACI,0FAA0FlR,MACtF,KAERgM,SACI,8FAA8FhM,MAC1F,KAERwR,cAAe,mDAAmDxR,MAC9D,KAEJsR,YAAa,sBAAsBtR,MAAM,KACzC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,UACNtU,EAAG,oBACHgT,GAAI,eACJ9I,EAAG,cACH6I,GAAI,gBACJ9H,EAAG,gBACH4H,GAAI,eACJ/I,EAAG,WACHwI,GAAI,aACJtF,EAAG,YACHiF,GAAI,cACJlF,EAAG,aACHwH,GAAI,eAERgmH,uBAAwB,aACxBptH,QAAS,SAAUuoD,GACf,OAAOA,EAAS,KACpB,EACA2lE,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,iBAAiB,SAAUiD,GAC7C,OAAOw/H,EAAUx/H,EACrB,GACJ,EACAq/H,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,OAAO,SAAUiD,GACnC,OAAOs/H,EAAUt/H,EACrB,GACJ,EAEA49H,cAAe,wCACf5nH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,QAEf,EACAe,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,UAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAbnpH,GAAqC,SAAbA,GAEX,YAAbA,GACAmpH,GAAQ,GAFRA,EAIAA,EAAO,EAEtB,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAvI0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YACI,mEAAmElR,MAC/D,KAERi7H,kBAAkB,EAClBjvH,SACI,8DAA8DhM,MAC1D,KAERwR,cAAe,kCAAkCxR,MAAM,KACvDsR,YAAa,qBAAqBtR,MAAM,KACxC84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEV8lH,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,YACNtU,EAAG,iBACHgT,GAAI,aACJ9I,EAAG,YACH6I,GAAI,cACJ9H,EAAG,SACH4H,GAAI,WACJ/I,EAAG,UACHwI,GAAI,YACJtF,EAAG,SACHiF,GAAI,WACJlF,EAAG,cACHwH,GAAI,iBAERgmH,uBAAwB,WACxBptH,QAAS,MACTusH,cAAe,iCACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,WAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnpH,EACAmpH,EACa,cAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,QAEf,EACAT,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA5F0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIfA,EAAOC,aAAa,MAAO,CACjCvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,kDAAkDhM,MAAM,KAClEwR,cAAe,iCAAiCxR,MAAM,KACtDsR,YAAa,yBAAyBtR,MAAM,KAC5C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,WACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,YACHwI,GAAI,WACJtF,EAAG,YACHiF,GAAI,WACJlF,EAAG,YACHwH,GAAI,YAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAtE0CnkH,CAAQ69B,EAAQ,8BCCjD,SAAUolF,GAAU,aAIzB,IAAI+B,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGA/B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJ0E,OAAQ,qFAAqF3Q,MACzF,KAEJy6H,WACI,yEAAyEz6H,MACrE,MAGZkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,SACNtU,EAAG,eACHkK,EAAG,YACH6I,GAAI,YACJ9H,EAAG,UACH4H,GAAI,UACJ/I,EAAG,SACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,SACJlF,EAAG,SACHwH,GAAI,UAERmlH,cAAe,qBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,QAAbnpH,EACOmpH,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAbnpH,EACAmpH,EACa,QAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAbnpH,EACAmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,KAEf,EACAV,uBAAwB,kBACxBptH,QAAS,SAAUuoD,GAGf,OAAOA,GAAU6lE,EAAS7lE,IAAW6lE,EAF7B7lE,EAAS,KAEmC6lE,EAD5C7lE,GAAU,IAAM,IAAM,MAElC,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzH0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,oGAAoGjM,MACxG,KAEJkR,YACI,iEAAiElR,MAC7D,KAERi7H,kBAAkB,EAClBjvH,SAAU,iDAAiDhM,MAAM,KACjEwR,cAAe,8CAA8CxR,MAAM,KACnEsR,YAAa,yBAAyBtR,MAAM,KAC5C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,OACJD,IAAK,UACLE,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVwlH,cAAe,wBACfC,KAAM,SAAUn4G,GACZ,MAAiB,eAAVA,CACX,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,aAEA,YAEf,EACAjB,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,YACNtU,EAAG,eACHgT,GAAI,YACJ9I,EAAG,SACH6I,GAAI,UACJ9H,EAAG,YACH4H,GAAI,aACJ/I,EAAG,QACHwI,GAAI,SACJpE,EAAG,YACH2tH,GAAI,aACJ7uH,EAAG,UACHiF,GAAI,WACJlF,EAAG,OACHwH,GAAI,UAMhB,CArE0CgC,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAI+B,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC/B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,+EAA+EjM,MACnF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,QACNtU,EAAG,iBACHkK,EAAG,YACH6I,GAAI,WACJ9H,EAAG,YACH4H,GAAI,WACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,QACJlF,EAAG,UACHwH,GAAI,UAERpH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAO3S,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI92D,EAAI82D,EAAS,GAGjB,OAAOA,GAAU6lE,EAAS38H,IAAM28H,EAFvB7lE,EAAS,IAAO92D,IAEsB28H,EADvC7lE,GAAU,IAAM,IAAM,OAG1C,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA/F0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,wBAAwBtR,MAAM,KAC3C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEV8lH,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,gBACRC,KAAM,mBACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,eACH6I,GAAI,YACJ9H,EAAG,aACH4H,GAAI,UACJ/I,EAAG,aACHwI,GAAI,UACJtF,EAAG,cACHiF,GAAI,WACJlF,EAAG,aACHwH,GAAI,WAERgmH,uBAAwB,UACxBptH,QAAS,SAAUuoD,GACf,OAAOA,CACX,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIzB,IAAIkG,EAAe,iDAAiDz+H,MAAM,KA4B1E,SAASi8H,EAAUxnE,EAAQolE,EAAe/pG,EAAQgqG,GAC9C,IAAI4E,EAiBR,SAAsBjqE,GAClB,IAAIkqE,EAAUznI,KAAKwV,MAAO+nD,EAAS,IAAQ,KACvCmqE,EAAM1nI,KAAKwV,MAAO+nD,EAAS,IAAO,IAClCpxD,EAAMoxD,EAAS,GACf8sD,EAAO,GAUX,OATIod,EAAU,IACVpd,GAAQkd,EAAaE,GAAW,SAEhCC,EAAM,IACNrd,IAAkB,KAATA,EAAc,IAAM,IAAMkd,EAAaG,GAAO,OAEvDv7H,EAAM,IACNk+G,IAAkB,KAATA,EAAc,IAAM,IAAMkd,EAAap7H,IAEpC,KAATk+G,EAAc,OAASA,CAClC,CAhCqBsd,CAAapqE,GAC9B,OAAQ3kC,GACJ,IAAK,KACD,OAAO4uG,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OAEhC,CAmBUnG,EAAOC,aAAa,MAAO,CACjCvsH,OAAQ,kMAAkMjM,MACtM,KAEJkR,YACI,0HAA0HlR,MACtH,KAERi7H,kBAAkB,EAClBjvH,SAAU,2DAA2DhM,MACjE,KAEJwR,cACI,2DAA2DxR,MAAM,KACrEsR,YACI,2DAA2DtR,MAAM,KACrE84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEd7lH,aAAc,CACVJ,OA9FR,SAAyBswC,GACrB,IAAI9d,EAAO8d,EASX,OAP+B,IAA3BA,EAAOvuC,QAAQ,OACTywB,EAAKp8B,MAAM,GAAI,GAAK,OACO,IAA3Bk6C,EAAOvuC,QAAQ,OACfywB,EAAKp8B,MAAM,GAAI,GAAK,OACO,IAA3Bk6C,EAAOvuC,QAAQ,OACfywB,EAAKp8B,MAAM,GAAI,GAAK,MACpBo8B,EAAO,MAErB,EAoFQvyB,KAlFR,SAAuBqwC,GACnB,IAAI9d,EAAO8d,EASX,OAP+B,IAA3BA,EAAOvuC,QAAQ,OACTywB,EAAKp8B,MAAM,GAAI,GAAK,OACO,IAA3Bk6C,EAAOvuC,QAAQ,OACfywB,EAAKp8B,MAAM,GAAI,GAAK,OACO,IAA3Bk6C,EAAOvuC,QAAQ,OACfywB,EAAKp8B,MAAM,GAAI,GAAK,MACpBo8B,EAAO,MAErB,EAwEQ7mC,EAAG,UACHgT,GAAIkqH,EACJhzH,EAAG,UACH6I,GAAImqH,EACJjyH,EAAG,UACH4H,GAAIqqH,EACJpzH,EAAG,UACHwI,GAAI4qH,EACJlwH,EAAG,UACHiF,GAAIirH,EACJnwH,EAAG,UACHwH,GAAI2oH,GAER3C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAhI0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIzB,IAAI+B,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGC/B,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,6EAA6EjM,MACjF,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,wDAAwDhM,MAC9D,KAEJwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C6Q,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACAJ,cAAe,cACfC,KAAM,SAAUn4G,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,CAC7B,EACAu4G,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,UACNtU,EAAG,gBACHgT,GAAI,YACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,SACJpE,EAAG,YACH2tH,GAAI,WACJ7uH,EAAG,SACHiF,GAAI,QACJlF,EAAG,UACHwH,GAAI,UAERpH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAO3S,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI92D,EAAI82D,EAAS,GAGjB,OAAOA,GAAU6lE,EAAS38H,IAAM28H,EAFvB7lE,EAAS,IAAO92D,IAEsB28H,EADvC7lE,GAAU,IAAM,IAAM,OAG1C,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7G0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAiEzB,SAAS8D,EAAoB5nE,EAAQolE,EAAe94H,EAAK+4H,GACrD,IAAInpH,EAAS,CACT5R,EAAG,CAAC,kBAAmB,mBACvBgT,GAAI,CAAC0iD,EAAS,WAAiBA,EAAS,YACxCxrD,EAAG,CAAC,UAAW,cACf6I,GAAI,CAAC2iD,EAAS,SAAeA,EAAS,UACtCzqD,EAAG,CAAC,UAAW,eACf4H,GAAI,CAAC6iD,EAAS,SAAeA,EAAS,UACtC5rD,EAAG,CAAC,UAAW,eACfwI,GAAI,CAACojD,EAAS,SAAeA,EAAS,UACtC1oD,EAAG,CAAC,SAAU,aACdiF,GAAI,CAACyjD,EAAS,SAAeA,EAAS,UACtC3oD,EAAG,CAAC,QAAS,YACbwH,GAAI,CAACmhD,EAAS,OAAaA,EAAS,SAExC,OAAOqlE,GAEDD,EADAlpH,EAAO5P,GAAK,GAGZ4P,EAAO5P,GAAK,EACtB,CA/EUw3H,EAAOC,aAAa,MAAO,CACjCvsH,OAAQ,sFAAsFjM,MAC1F,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,sDAAsDhM,MAAM,KACtEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVwlH,cAAe,aACfC,KAAM,SAAUn4G,GACZ,MAAO,QAAUA,EAAM9lB,aAC3B,EACAoW,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,MAAQ,MAElBA,EAAU,MAAQ,KAEjC,EACAE,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,YACRC,KAAM,OACNtU,EAAGs9H,EACHtqH,GAAIsqH,EACJpzH,EAAGozH,EACHvqH,GAAIuqH,EACJryH,EAAGqyH,EACHzqH,GAAIyqH,EACJxzH,EAAGwzH,EACHhrH,GAAIgrH,EACJtwH,EAAGswH,EACHrrH,GAAIqrH,EACJvwH,EAAGuwH,EACH/oH,GAAI+oH,GAER/C,uBAAwB,YACxBptH,QAAS,MACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IA4BjB,CA5F0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIXA,EAAOC,aAAa,WAAY,CAC1CvsH,OAAQ,wFAAwFjM,MAC5F,KAEJkR,YACI,wFAAwFlR,MACpF,KAERgM,SAAU,kDAAkDhM,MAAM,KAClEwR,cAAe,kDAAkDxR,MAAM,KACvEsR,YAAa,kDAAkDtR,MAAM,KACrE84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,iBACRC,KAAM,SACNtU,EAAG,OACHgT,GAAI,UACJ9I,EAAG,QACH6I,GAAI,WACJ9H,EAAG,OACH4H,GAAI,cACJ/I,EAAG,MACHwI,GAAI,WACJtF,EAAG,QACHiF,GAAI,YACJlF,EAAG,QACHwH,GAAI,aAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CA1D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIfA,EAAOC,aAAa,MAAO,CACjCvsH,OAAQ,kFAAkFjM,MACtF,KAEJkR,YACI,kFAAkFlR,MAC9E,KAERgM,SAAU,kDAAkDhM,MAAM,KAClEwR,cAAe,kDAAkDxR,MAAM,KACvEsR,YAAa,kDAAkDtR,MAAM,KACrE84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEV8lH,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,gBACRC,KAAM,SACNtU,EAAG,OACHgT,GAAI,UACJ9I,EAAG,QACH6I,GAAI,WACJ9H,EAAG,OACH4H,GAAI,cACJ/I,EAAG,MACHwI,GAAI,WACJtF,EAAG,QACHiF,GAAI,YACJlF,EAAG,QACHwH,GAAI,aAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,KAMjB,CA1D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,sFAAsFjM,MAC1F,KAEJkR,YACI,sFAAsFlR,MAClF,KAERgM,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVwlH,cAAe,qDACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAGM,eAAbnpH,GACa,UAAbA,GACa,iBAAbA,EAEOmpH,EACa,iBAAbnpH,GAA4C,QAAbA,EAC/BmpH,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,EAE1C,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,IAAIiG,EAAY,IAAP9E,EAAaC,EACtB,OAAI6E,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,KAEf,EACA/F,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,WACRC,KAAM,WACNtU,EAAG,eACHgT,GAAI,YACJ9I,EAAG,YACH6I,GAAI,WACJ9H,EAAG,YACH4H,GAAI,WACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,UACHiF,GAAI,SACJlF,EAAG,UACHwH,GAAI,UAGRgmH,uBAAwB,6BACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAEnB,EACA2lE,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACA2hI,KAAM,CAEFC,IAAK,EACLC,IAAK,IAMjB,CAnH0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAYzB,SAASgC,EAAuB9lE,EAAQolE,EAAe94H,GASnD,MAAY,MAARA,EACO84H,EAAgB,UAAY,UACpB,MAAR94H,EACA84H,EAAgB,SAAW,SAE3BplE,EAAS,KAtBFt9C,GAsB6Bs9C,EArB3C+lE,EAQS,CACTzoH,GAAI8nH,EAAgB,yBAA2B,yBAC/C/nH,GAAI+nH,EAAgB,yBAA2B,yBAC/CjoH,GAAIioH,EAAgB,sBAAwB,sBAC5CxoH,GAAI,gBACJL,GAAI,wBACJsC,GAAI,kBAOgCvS,GArBvBf,MAAM,KAChBmX,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCqjH,EAAM,GACNrjH,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEqjH,EAAM,GACNA,EAAM,IANhB,IAAsBrjH,EACdqjH,CAuBR,CAkCA,SAASuE,EAAqBtrE,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBx/D,KAAK0kI,QAAiB,IAAM,IAAM,MAC1D,CACJ,CAESJ,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,CACJ0E,OAAQ,yFAAyF3Q,MAC7F,KAEJy6H,WACI,iGAAiGz6H,MAC7F,MAGZkR,YAAa,yDAAyDlR,MAClE,KAEJgM,SApDJ,SAA6B/C,EAAG0H,GAC5B,IAAI3E,EAAW,CACPgzH,WACI,0DAA0Dh/H,MACtD,KAERi/H,WACI,0DAA0Dj/H,MACtD,KAERk/H,SACI,4DAA4Dl/H,MACxD,MAKhB,OAAU,IAANiJ,EACO+C,EAAqB,WACvBxC,MAAM,EAAG,GACTpV,OAAO4X,EAAqB,WAAExC,MAAM,EAAG,IAE3CP,EASE+C,EALI,qBAAqBxT,KAAKmY,GAC/B,aACA,sCAAsCnY,KAAKmY,GAC3C,WACA,cACoB1H,EAAE0xH,OARjB3uH,EAAqB,UASpC,EAqBIwF,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEV8lH,SAAU,CACNC,QAAS+F,EAAqB,cAC9B9F,QAAS8F,EAAqB,YAC9B5F,QAAS4F,EAAqB,WAC9B7F,SAAU6F,EAAqB,cAC/B3F,SAAU,WACN,OAAQnlI,KAAK0mI,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOoE,EAAqB,oBAAoB/qI,KAAKC,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAO8qI,EAAqB,qBAAqB/qI,KAAKC,MAElE,EACAolI,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,QACRC,KAAM,UACNtU,EAAG,kBACHgT,GAAIwoH,EACJtxH,EAAGsxH,EACHzoH,GAAIyoH,EACJvwH,EAAG,SACH4H,GAAI2oH,EACJ1xH,EAAG,OACHwI,GAAIkpH,EACJxuH,EAAG,SACHiF,GAAIupH,EACJzuH,EAAG,MACHwH,GAAIinH,GAGR9B,cAAe,wBACfC,KAAM,SAAUn4G,GACZ,MAAO,iBAAiB/nB,KAAK+nB,EACjC,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,QAEf,EACAV,uBAAwB,iBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAO3S,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,EAEnB,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA1K0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIzB,IAAItsH,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJ6qH,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpDyB,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQA,EACRiF,YAAajF,EACbD,SAAU8qH,EACVtlH,cAAeslH,EACfxlH,YAAawlH,EACbgC,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVwlH,cAAe,UACfC,KAAM,SAAUn4G,GACZ,MAAO,QAAUA,CACrB,EACA1P,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,OAAImB,EAAO,GACA,MAEJ,KACX,EACAjB,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,SACNtU,EAAG,YACHgT,GAAI,WACJ9I,EAAG,UACH6I,GAAI,SACJ9H,EAAG,YACH4H,GAAI,WACJ/I,EAAG,SACHwI,GAAI,QACJtF,EAAG,UACHiF,GAAI,SACJlF,EAAG,UACHwH,GAAI,UAER8mH,SAAU,SAAUtqG,GAChB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACAsiI,WAAY,SAAUpqG,GAClB,OAAOA,EAAOl4B,QAAQ,KAAM,IAChC,EACA2hI,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CArF0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIZA,EAAOC,aAAa,UAAW,CACxCvsH,OAAQ,6EAA6EjM,MACjF,KAEJkR,YAAa,oDAAoDlR,MAAM,KACvEgM,SACI,+DAA+DhM,MAC3D,KAERwR,cAAe,kCAAkCxR,MAAM,KACvDsR,YAAa,yBAAyBtR,MAAM,KAC5C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,kBACRC,KAAM,qBACNtU,EAAG,SACHgT,GAAI,YACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,QACJlF,EAAG,UACHwH,GAAI,UAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA1D0CnkH,CAAQ69B,EAAQ,8BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,yEAAyEjM,MAC7E,KAEJkR,YAAa,kDAAkDlR,MAAM,KACrEgM,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,8BAA8BxR,MAAM,KACnDsR,YAAa,uBAAuBtR,MAAM,KAC1C84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,gBACRC,KAAM,oBACNtU,EAAG,SACHgT,GAAI,YACJ9I,EAAG,aACH6I,GAAI,YACJ9H,EAAG,WACH4H,GAAI,UACJ/I,EAAG,UACHwI,GAAI,SACJtF,EAAG,SACHiF,GAAI,QACJlF,EAAG,UACHwH,GAAI,UAERimH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAvD0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,qGAAqGjM,MACzG,KAEJkR,YACI,sFAAsFlR,MAClF,KAERi7H,kBAAkB,EAClBjvH,SAAU,yDAAyDhM,MAC/D,KAEJwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,uBAAuBtR,MAAM,KAC1C+5H,oBAAoB,EACpBtB,cAAe,SACfC,KAAM,SAAUn4G,GACZ,MAAO,QAAQ/nB,KAAK+nB,EACxB,EACA1P,SAAU,SAAU8nH,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EACAC,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACN9X,EAAG,YACH+gI,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVrD,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,WACNtU,EAAG,WACHgT,GAAI,UACJ9I,EAAG,WACH6I,GAAI,UACJ9H,EAAG,UACH4H,GAAI,SACJ/I,EAAG,WACHwI,GAAI,UACJpE,EAAG,WACH2tH,GAAI,UACJ7uH,EAAG,YACHiF,GAAI,WACJlF,EAAG,UACHwH,GAAI,UAERgmH,uBAAwB,UACxBptH,QAAS,SAAUuoD,GACf,OAAOA,CACX,EACA8kE,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAnF0CnkH,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIXA,EAAOC,aAAa,WAAY,CAC1CvsH,OAAQ,6GAA6GjM,MACjH,KAEJkR,YACI,8DAA8DlR,MAC1D,KAERi7H,kBAAkB,EAClBjvH,SACI,yEAAyEhM,MACrE,KAERwR,cAAe,qCAAqCxR,MAAM,KAC1DsR,YAAa,4BAA4BtR,MAAM,KAC/C+5H,oBAAoB,EACpBjB,eAAgB,CACZjmH,GAAI,QACJC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEV8lH,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,UACNtU,EAAG,mBACHgT,GAAI,eACJ9I,EAAG,aACH6I,GAAI,eACJ9H,EAAG,YACH4H,GAAI,YACJ/I,EAAG,SACHwI,GAAI,WACJtF,EAAG,YACHiF,GAAI,cACJlF,EAAG,UACHwH,GAAI,aAERgmH,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,EACA07H,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CA7E0CnkH,CAAQ69B,EAAQ,6BCGjD,SAAUolF,GAAU,aAIhBA,EAAOC,aAAa,KAAM,CAC/BvsH,OAAQ,0FAA0FjM,MAC9F,KAEJkR,YAAa,gEAAgElR,MAAM,KACnFgM,SAAU,uDAAuDhM,MAAM,KACvEwR,cAAe,sCAAsCxR,MAAM,KAC3DsR,YAAa,2BAA2BtR,MAAM,KAC9C84H,eAAgB,CACZjmH,GAAI,SACJD,IAAK,YACLE,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEV8lH,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEd7lH,aAAc,CACVJ,OAAQ,SACRC,KAAM,WACNtU,EAAG,oBACHgT,GAAI,WACJ9I,EAAG,cACH6I,GAAI,aACJ9H,EAAG,cACH4H,GAAI,aACJ/I,EAAG,WACHwI,GAAI,UACJtF,EAAG,WACHiF,GAAI,UACJlF,EAAG,YACHwH,GAAI,YAERgmH,uBAAwB,gBACxBptH,QAAS,UACTqtH,KAAM,CACFC,IAAK,EACLC,IAAK,IAMjB,CAzD0CnkH,CAAQ69B,EAAQ,8BCKjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wCAAwCjM,MAC5C,KAEJkR,YAAa,yCAAyClR,MAClD,KAEJgM,SAAU,8BAA8BhM,MAAM,KAC9CwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN9X,EAAG,WACH+gI,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV3D,cAAe,oBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,OAAbnpH,GAAkC,OAAbA,GAAkC,OAAbA,EACnCmpH,EACa,OAAbnpH,GAAkC,OAAbA,EACrBmpH,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,EAE1C,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,IAAIiG,EAAY,IAAP9E,EAAaC,EACtB,OAAI6E,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,IAEf,EACA/F,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAUjhG,GAChB,OAAIA,EAAIshG,SAAWtlI,KAAKslI,OACb,WAEA,UAEf,EACAJ,QAAS,SACTC,SAAU,SAAUnhG,GAChB,OAAIhkC,KAAKslI,SAAWthG,EAAIshG,OACb,WAEA,UAEf,EACAF,SAAU,KAEdC,uBAAwB,iBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAjhD,aAAc,CACVJ,OAAQ,MACRC,KAAM,MACNtU,EAAG,KACHgT,GAAI,OACJ9I,EAAG,OACH6I,GAAI,QACJ9H,EAAG,OACH4H,GAAI,QACJ/I,EAAG,MACHwI,GAAI,OACJpE,EAAG,MACH2tH,GAAI,OACJ7uH,EAAG,OACHiF,GAAI,QACJlF,EAAG,MACHwH,GAAI,QAERimH,KAAM,CAEFC,IAAK,EACLC,IAAK,IAMjB,CA1H0CnkH,CAAQ69B,EAAQ,8BCIjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wCAAwCjM,MAC5C,KAEJkR,YAAa,yCAAyClR,MAClD,KAEJgM,SAAU,8BAA8BhM,MAAM,KAC9CwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN9X,EAAG,WACH+gI,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV3D,cAAe,oBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,OAAbnpH,GAAkC,OAAbA,GAAkC,OAAbA,EACnCmpH,EACa,OAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAbnpH,GAAkC,OAAbA,EACrBmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,IAAIiG,EAAY,IAAP9E,EAAaC,EACtB,OAAI6E,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,IAEf,EACA/F,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEdC,uBAAwB,iBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAjhD,aAAc,CACVJ,OAAQ,MACRC,KAAM,MACNtU,EAAG,KACHgT,GAAI,OACJ9I,EAAG,OACH6I,GAAI,QACJ9H,EAAG,OACH4H,GAAI,QACJ/I,EAAG,MACHwI,GAAI,OACJtF,EAAG,OACHiF,GAAI,QACJlF,EAAG,MACHwH,GAAI,SAMhB,CAtG0CgC,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wCAAwCjM,MAC5C,KAEJkR,YAAa,yCAAyClR,MAClD,KAEJgM,SAAU,8BAA8BhM,MAAM,KAC9CwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN9X,EAAG,WACH+gI,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV3D,cAAe,oBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,OAAbnpH,GAAkC,OAAbA,GAAkC,OAAbA,EACnCmpH,EACa,OAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAbnpH,GAAkC,OAAbA,EACrBmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,IAAIiG,EAAY,IAAP9E,EAAaC,EACtB,OAAI6E,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,IAEf,EACA/F,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdC,uBAAwB,iBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAjhD,aAAc,CACVJ,OAAQ,MACRC,KAAM,MACNtU,EAAG,KACHgT,GAAI,OACJ9I,EAAG,OACH6I,GAAI,QACJ9H,EAAG,OACH4H,GAAI,QACJ/I,EAAG,MACHwI,GAAI,OACJtF,EAAG,OACHiF,GAAI,QACJlF,EAAG,MACHwH,GAAI,SAMhB,CAtG0CgC,CAAQ69B,EAAQ,8BCEjD,SAAUolF,GAAU,aAIdA,EAAOC,aAAa,QAAS,CACpCvsH,OAAQ,wCAAwCjM,MAC5C,KAEJkR,YAAa,yCAAyClR,MAClD,KAEJgM,SAAU,8BAA8BhM,MAAM,KAC9CwR,cAAe,uBAAuBxR,MAAM,KAC5CsR,YAAa,gBAAgBtR,MAAM,KACnC84H,eAAgB,CACZjmH,GAAI,QACJD,IAAK,WACLE,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN9X,EAAG,WACH+gI,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEV3D,cAAe,oBACfsC,aAAc,SAAUf,EAAMnpH,GAI1B,OAHa,KAATmpH,IACAA,EAAO,GAEM,OAAbnpH,GAAkC,OAAbA,GAAkC,OAAbA,EACnCmpH,EACa,OAAbnpH,EACAmpH,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAbnpH,GAAkC,OAAbA,EACrBmpH,EAAO,QADX,CAGX,EACAnpH,SAAU,SAAUmpH,EAAMC,EAAQpB,GAC9B,IAAIiG,EAAY,IAAP9E,EAAaC,EACtB,OAAI6E,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,IAEf,EACA/F,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEdC,uBAAwB,iBACxBptH,QAAS,SAAUuoD,EAAQ2S,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAO3S,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,EAEnB,EACAjhD,aAAc,CACVJ,OAAQ,MACRC,KAAM,MACNtU,EAAG,KACHgT,GAAI,OACJ9I,EAAG,OACH6I,GAAI,QACJ9H,EAAG,OACH4H,GAAI,QACJ/I,EAAG,MACHwI,GAAI,OACJtF,EAAG,OACHiF,GAAI,QACJlF,EAAG,MACHwH,GAAI,SAMhB,CAtG0CgC,CAAQ69B,EAAQ,0CCAgBvnC,QAGjE,WAAc,aAEnB,IAAIuzH,EA6HA5pF,EA3HJ,SAAStkB,IACL,OAAOkuG,EAAaz3H,MAAM,KAAMC,UACpC,CAQA,SAAStT,EAAQksB,GACb,OACIA,aAAiB5sB,OACyB,mBAA1C+hB,OAAO9hB,UAAU4b,SAASxb,KAAKusB,EAEvC,CAEA,SAASgwC,EAAShwC,GAGd,OACa,MAATA,GAC0C,oBAA1C7K,OAAO9hB,UAAU4b,SAASxb,KAAKusB,EAEvC,CAEA,SAAS6+G,EAAWzhI,EAAGE,GACnB,OAAO6X,OAAO9hB,UAAU8M,eAAe1M,KAAK2J,EAAGE,EACnD,CAEA,SAASwhI,EAAcr+H,GACnB,GAAI0U,OAAO4pH,oBACP,OAAkD,IAA3C5pH,OAAO4pH,oBAAoBt+H,GAAKtI,OAEvC,IAAIsQ,EACJ,IAAKA,KAAKhI,EACN,GAAIo+H,EAAWp+H,EAAKgI,GAChB,OAAO,EAGf,OAAO,CAEf,CAEA,SAASu2H,EAAYh/G,GACjB,YAAiB,IAAVA,CACX,CAEA,SAASw5B,EAASx5B,GACd,MACqB,iBAAVA,GACmC,oBAA1C7K,OAAO9hB,UAAU4b,SAASxb,KAAKusB,EAEvC,CAEA,SAASi/G,EAAOj/G,GACZ,OACIA,aAAiBrS,MACyB,kBAA1CwH,OAAO9hB,UAAU4b,SAASxb,KAAKusB,EAEvC,CAEA,SAAS1kB,EAAI2Z,EAAK1d,GACd,IACIoD,EADA6pH,EAAM,GAEN0a,EAASjqH,EAAI9c,OACjB,IAAKwC,EAAI,EAAGA,EAAIukI,IAAUvkI,EACtB6pH,EAAI57G,KAAKrR,EAAG0d,EAAIta,GAAIA,IAExB,OAAO6pH,CACX,CAEA,SAASrwH,EAAOiJ,EAAGE,GACf,IAAK,IAAI3C,KAAK2C,EACNuhI,EAAWvhI,EAAG3C,KACdyC,EAAEzC,GAAK2C,EAAE3C,IAYjB,OARIkkI,EAAWvhI,EAAG,cACdF,EAAE6R,SAAW3R,EAAE2R,UAGf4vH,EAAWvhI,EAAG,aACdF,EAAEsS,QAAUpS,EAAEoS,SAGXtS,CACX,CAEA,SAAS+hI,EAAUn/G,EAAO5P,EAAQlD,EAAQkyH,GACtC,OAAOC,GAAiBr/G,EAAO5P,EAAQlD,EAAQkyH,GAAQ,GAAMhyH,KACjE,CAwBA,SAASkyH,EAAgB52H,GAIrB,OAHa,MAATA,EAAE62H,MACF72H,EAAE62H,IAtBC,CACH9zG,OAAO,EACP+zG,aAAc,GACdC,YAAa,GACb37F,UAAW,EACX47F,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACL5vH,SAAU,KACV6vH,SAAS,EACTC,iBAAiB,IAQd13H,EAAE62H,GACb,CAqBA,SAASvwH,EAAQtG,GACb,GAAkB,MAAdA,EAAE23H,SAAkB,CACpB,IAAIj1B,EAAQk0B,EAAgB52H,GACxB43H,EAActrF,EAAKvhD,KAAK23G,EAAM60B,iBAAiB,SAAUtlI,GACrD,OAAY,MAALA,CACX,IACA4lI,GACKp9H,MAAMuF,EAAEi+C,GAAGh3C,YACZy7F,EAAMtnE,SAAW,IAChBsnE,EAAM3/E,QACN2/E,EAAMw0B,aACNx0B,EAAMy0B,eACNz0B,EAAMo1B,iBACNp1B,EAAMg1B,kBACNh1B,EAAMu0B,YACNv0B,EAAM00B,gBACN10B,EAAM20B,mBACL30B,EAAM96F,UAAa86F,EAAM96F,UAAYgwH,GAU/C,GARI53H,EAAE+3H,UACFF,EACIA,GACwB,IAAxBn1B,EAAMs0B,eACwB,IAA9Bt0B,EAAMo0B,aAAarnI,aACDqO,IAAlB4kG,EAAMs1B,SAGS,MAAnBvrH,OAAOwrH,UAAqBxrH,OAAOwrH,SAASj4H,GAG5C,OAAO63H,EAFP73H,EAAE23H,SAAWE,CAIrB,CACA,OAAO73H,EAAE23H,QACb,CAEA,SAASO,EAAcx1B,GACnB,IAAI1iG,EAAIy2H,EAAUvxH,KAOlB,OANa,MAATw9F,EACAj3G,EAAOmrI,EAAgB52H,GAAI0iG,GAE3Bk0B,EAAgB52H,GAAGq3H,iBAAkB,EAGlCr3H,CACX,CA9DIssC,EADA5hD,MAAMC,UAAU2hD,KACT5hD,MAAMC,UAAU2hD,KAEhB,SAAU6rF,GACb,IAEIlmI,EAFAiR,EAAIuJ,OAAOzhB,MACX+H,EAAMmQ,EAAEzT,SAAW,EAGvB,IAAKwC,EAAI,EAAGA,EAAIc,EAAKd,IACjB,GAAIA,KAAKiR,GAAKi1H,EAAIptI,KAAKC,KAAMkY,EAAEjR,GAAIA,EAAGiR,GAClC,OAAO,EAIf,OAAO,CACX,EAoDJ,IAAIk1H,EAAoBpwG,EAAMowG,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAW5tH,EAAIC,GACpB,IAAI1Y,EACAm1B,EACAl8B,EACAqtI,EAAsBH,EAAiB3oI,OAiC3C,GA/BK6mI,EAAY3rH,EAAK6tH,oBAClB9tH,EAAG8tH,iBAAmB7tH,EAAK6tH,kBAE1BlC,EAAY3rH,EAAK2F,MAClB5F,EAAG4F,GAAK3F,EAAK2F,IAEZgmH,EAAY3rH,EAAK8tH,MAClB/tH,EAAG+tH,GAAK9tH,EAAK8tH,IAEZnC,EAAY3rH,EAAK+tH,MAClBhuH,EAAGguH,GAAK/tH,EAAK+tH,IAEZpC,EAAY3rH,EAAKotH,WAClBrtH,EAAGqtH,QAAUptH,EAAKotH,SAEjBzB,EAAY3rH,EAAKguH,QAClBjuH,EAAGiuH,KAAOhuH,EAAKguH,MAEdrC,EAAY3rH,EAAKiuH,UAClBluH,EAAGkuH,OAASjuH,EAAKiuH,QAEhBtC,EAAY3rH,EAAKkuH,WAClBnuH,EAAGmuH,QAAUluH,EAAKkuH,SAEjBvC,EAAY3rH,EAAKksH,OAClBnsH,EAAGmsH,IAAMD,EAAgBjsH,IAExB2rH,EAAY3rH,EAAKmuH,WAClBpuH,EAAGouH,QAAUnuH,EAAKmuH,SAGlBP,EAAsB,EACtB,IAAKtmI,EAAI,EAAGA,EAAIsmI,EAAqBtmI,IAG5BqkI,EADLprI,EAAMyf,EADNyc,EAAOgxG,EAAiBnmI,OAGpByY,EAAG0c,GAAQl8B,GAKvB,OAAOwf,CACX,CAGA,SAASquH,EAAO9gF,GACZqgF,EAAWttI,KAAMitD,GACjBjtD,KAAKizD,GAAK,IAAIh5C,KAAkB,MAAbgzC,EAAOgG,GAAahG,EAAOgG,GAAGh3C,UAAY/B,KACxDla,KAAKsb,YACNtb,KAAKizD,GAAK,IAAIh5C,KAAKC,OAIE,IAArBmzH,IACAA,GAAmB,EACnBrwG,EAAMgxG,aAAahuI,MACnBqtI,GAAmB,EAE3B,CAEA,SAASY,EAASlhI,GACd,OACIA,aAAeghI,GAAkB,MAAPhhI,GAAuC,MAAxBA,EAAIygI,gBAErD,CAEA,SAASjzG,EAAKjW,IAEgC,IAAtC0Y,EAAMkxG,6BACa,oBAAZ5zG,SACPA,QAAQC,MAERD,QAAQC,KAAK,wBAA0BjW,EAE/C,CAEA,SAAS6pH,EAAU7pH,EAAKzgB,GACpB,IAAIosD,GAAY,EAEhB,OAAOxvD,GAAO,WAIV,GAHgC,MAA5Bu8B,EAAMoxG,oBACNpxG,EAAMoxG,mBAAmB,KAAM9pH,GAE/B2rC,EAAW,CACX,IACI/qC,EACAje,EACA6F,EAHAwM,EAAO,GAIP+0H,EAAS36H,UAAUjP,OACvB,IAAKwC,EAAI,EAAGA,EAAIonI,EAAQpnI,IAAK,CAEzB,GADAie,EAAM,GACsB,iBAAjBxR,UAAUzM,GAAiB,CAElC,IAAK6F,KADLoY,GAAO,MAAQje,EAAI,KACPyM,UAAU,GACdy3H,EAAWz3H,UAAU,GAAI5G,KACzBoY,GAAOpY,EAAM,KAAO4G,UAAU,GAAG5G,GAAO,MAGhDoY,EAAMA,EAAI3P,MAAM,GAAI,EACxB,MACI2P,EAAMxR,UAAUzM,GAEpBqS,EAAKpE,KAAKgQ,EACd,CACAqV,EACIjW,EACI,gBACA5kB,MAAMC,UAAU4V,MAAMxV,KAAKuZ,GAAMlB,KAAK,IACtC,MACA,IAAIvM,OAAQwuB,OAEpB41B,GAAY,CAChB,CACA,OAAOpsD,EAAG4P,MAAMzT,KAAM0T,UAC1B,GAAG7P,EACP,CAEA,IAgFIqc,EAhFAouH,EAAe,CAAC,EAEpB,SAASC,EAAgB17H,EAAMyR,GACK,MAA5B0Y,EAAMoxG,oBACNpxG,EAAMoxG,mBAAmBv7H,EAAMyR,GAE9BgqH,EAAaz7H,KACd0nB,EAAKjW,GACLgqH,EAAaz7H,IAAQ,EAE7B,CAKA,SAASrH,EAAW8gB,GAChB,MACyB,oBAAbvM,UAA4BuM,aAAiBvM,UACX,sBAA1C0B,OAAO9hB,UAAU4b,SAASxb,KAAKusB,EAEvC,CAyBA,SAASkiH,EAAaC,EAAcC,GAChC,IACItyG,EADA00F,EAAMrwH,EAAO,CAAC,EAAGguI,GAErB,IAAKryG,KAAQsyG,EACLvD,EAAWuD,EAAatyG,KACpBkgC,EAASmyE,EAAaryG,KAAUkgC,EAASoyE,EAAYtyG,KACrD00F,EAAI10F,GAAQ,CAAC,EACb37B,EAAOqwH,EAAI10F,GAAOqyG,EAAaryG,IAC/B37B,EAAOqwH,EAAI10F,GAAOsyG,EAAYtyG,KACF,MAArBsyG,EAAYtyG,GACnB00F,EAAI10F,GAAQsyG,EAAYtyG,UAEjB00F,EAAI10F,IAIvB,IAAKA,KAAQqyG,EAELtD,EAAWsD,EAAcryG,KACxB+uG,EAAWuD,EAAatyG,IACzBkgC,EAASmyE,EAAaryG,MAGtB00F,EAAI10F,GAAQ37B,EAAO,CAAC,EAAGqwH,EAAI10F,KAGnC,OAAO00F,CACX,CAEA,SAAS6d,EAAO1hF,GACE,MAAVA,GACAjtD,KAAK8b,IAAImxC,EAEjB,CAlEAjwB,EAAMkxG,6BAA8B,EACpClxG,EAAMoxG,mBAAqB,KAsEvBluH,EADAuB,OAAOvB,KACAuB,OAAOvB,KAEP,SAAUnT,GACb,IAAI9F,EACA6pH,EAAM,GACV,IAAK7pH,KAAK8F,EACFo+H,EAAWp+H,EAAK9F,IAChB6pH,EAAI57G,KAAKjO,GAGjB,OAAO6pH,CACX,EAiBJ,SAAS8d,EAASpuE,EAAQquE,EAAcC,GACpC,IAAIC,EAAY,GAAK9rI,KAAKuV,IAAIgoD,GAC1BwuE,EAAcH,EAAeE,EAAUtqI,OAE3C,OADW+7D,GAAU,EAERsuE,EAAY,IAAM,GAAM,KACjC7rI,KAAKuU,IAAI,GAAIvU,KAAKC,IAAI,EAAG8rI,IAAczzH,WAAW+jD,OAAO,GACzDyvE,CAER,CAEA,IAAIE,EACI,yMACJC,EAAwB,6CACxBC,EAAkB,CAAC,EACnBC,EAAuB,CAAC,EAM5B,SAASC,EAAer7G,EAAOs7G,EAAQr3H,EAASzH,GAC5C,IAAI2nB,EAAO3nB,EACa,iBAAbA,IACP2nB,EAAO,WACH,OAAOn4B,KAAKwQ,IAChB,GAEAwjB,IACAo7G,EAAqBp7G,GAASmE,GAE9Bm3G,IACAF,EAAqBE,EAAO,IAAM,WAC9B,OAAOV,EAASz2G,EAAK1kB,MAAMzT,KAAM0T,WAAY47H,EAAO,GAAIA,EAAO,GACnE,GAEAr3H,IACAm3H,EAAqBn3H,GAAW,WAC5B,OAAOjY,KAAKuvI,aAAat3H,QACrBkgB,EAAK1kB,MAAMzT,KAAM0T,WACjBsgB,EAER,EAER,CAmCA,SAASw7G,EAAax6H,EAAG0H,GACrB,OAAK1H,EAAEsG,WAIPoB,EAAS+yH,EAAa/yH,EAAQ1H,EAAEu6H,cAChCJ,EAAgBzyH,GACZyyH,EAAgBzyH,IAjCxB,SAA4BA,GACxB,IACIzV,EACAxC,EAVwB6nB,EAQxB3K,EAAQjF,EAAO9V,MAAMqoI,GAIzB,IAAKhoI,EAAI,EAAGxC,EAASkd,EAAMld,OAAQwC,EAAIxC,EAAQwC,IACvCmoI,EAAqBztH,EAAM1a,IAC3B0a,EAAM1a,GAAKmoI,EAAqBztH,EAAM1a,IAEtC0a,EAAM1a,IAhBcqlB,EAgBc3K,EAAM1a,IAftCL,MAAM,YACL0lB,EAAM3oB,QAAQ,WAAY,IAE9B2oB,EAAM3oB,QAAQ,MAAO,IAgB5B,OAAO,SAAUglI,GACb,IACI1hI,EADAwoD,EAAS,GAEb,IAAKxoD,EAAI,EAAGA,EAAIxC,EAAQwC,IACpBwoD,GAAUjkD,EAAWmW,EAAM1a,IACrB0a,EAAM1a,GAAGlH,KAAK4oI,EAAKjsH,GACnBiF,EAAM1a,GAEhB,OAAOwoD,CACX,CACJ,CAUmCigF,CAAmBhzH,GAE3CyyH,EAAgBzyH,GAAQ1H,IAPpBA,EAAEu6H,aAAa5yH,aAQ9B,CAEA,SAAS8yH,EAAa/yH,EAAQlD,GAC1B,IAAIvS,EAAI,EAER,SAAS0oI,EAA4BrjH,GACjC,OAAO9S,EAAOqrH,eAAev4G,IAAUA,CAC3C,CAGA,IADA4iH,EAAsBU,UAAY,EAC3B3oI,GAAK,GAAKioI,EAAsB3qI,KAAKmY,IACxCA,EAASA,EAAO/Y,QACZurI,EACAS,GAEJT,EAAsBU,UAAY,EAClC3oI,GAAK,EAGT,OAAOyV,CACX,CAiFA,IAAImzH,EAAU,CAAC,EAEf,SAASC,EAAaxxG,EAAMyxG,GACxB,IAAIC,EAAY1xG,EAAK93B,cACrBqpI,EAAQG,GAAaH,EAAQG,EAAY,KAAOH,EAAQE,GAAazxG,CACzE,CAEA,SAAS2xG,EAAelG,GACpB,MAAwB,iBAAVA,EACR8F,EAAQ9F,IAAU8F,EAAQ9F,EAAMvjI,oBAChCsM,CACV,CAEA,SAASo9H,EAAqBC,GAC1B,IACIC,EACAh0G,EAFAi0G,EAAkB,CAAC,EAIvB,IAAKj0G,KAAQ+zG,EACLhF,EAAWgF,EAAa/zG,KACxBg0G,EAAiBH,EAAe7zG,MAE5Bi0G,EAAgBD,GAAkBD,EAAY/zG,IAK1D,OAAOi0G,CACX,CAEA,IAAIC,EAAa,CAAC,EAElB,SAASC,EAAgBjyG,EAAMk+B,GAC3B8zE,EAAWhyG,GAAQk+B,CACvB,CAgBA,SAASg0E,EAAW73H,GAChB,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CAClE,CAEA,SAAS83H,EAASjwE,GACd,OAAIA,EAAS,EAEFv9D,KAAK8V,KAAKynD,IAAW,EAErBv9D,KAAKwV,MAAM+nD,EAE1B,CAEA,SAASkwE,EAAMC,GACX,IAAIC,GAAiBD,EACjB5pI,EAAQ,EAMZ,OAJsB,IAAlB6pI,GAAuBhkG,SAASgkG,KAChC7pI,EAAQ0pI,EAASG,IAGd7pI,CACX,CAEA,SAAS8pI,EAAWvyG,EAAMwyG,GACtB,OAAO,SAAU/pI,GACb,OAAa,MAATA,GACAgqI,EAAM/wI,KAAMs+B,EAAMv3B,GAClBi2B,EAAMgxG,aAAahuI,KAAM8wI,GAClB9wI,MAEAuc,EAAIvc,KAAMs+B,EAEzB,CACJ,CAEA,SAAS/hB,EAAIosH,EAAKrqG,GACd,OAAOqqG,EAAIrtH,UACLqtH,EAAI11E,GAAG,OAAS01E,EAAIiF,OAAS,MAAQ,IAAMtvG,KAC3CpkB,GACV,CAEA,SAAS62H,EAAMpI,EAAKrqG,EAAMv3B,GAClB4hI,EAAIrtH,YAAc7L,MAAM1I,KAEX,aAATu3B,GACAkyG,EAAW7H,EAAIhwH,SACC,IAAhBgwH,EAAI/vH,SACW,KAAf+vH,EAAIjwH,QAEJ3R,EAAQ2pI,EAAM3pI,GACd4hI,EAAI11E,GAAG,OAAS01E,EAAIiF,OAAS,MAAQ,IAAMtvG,GACvCv3B,EACA4hI,EAAI/vH,QACJ0D,GAAYvV,EAAO4hI,EAAI/vH,WAG3B+vH,EAAI11E,GAAG,OAAS01E,EAAIiF,OAAS,MAAQ,IAAMtvG,GAAMv3B,GAG7D,CA8BA,IAoBIiqI,EApBAC,EAAS,KACTC,EAAS,OACTC,GAAS,QACTC,GAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BAInBC,GACI,wJAKR,SAASC,GAAcj+G,EAAO2/E,EAAOu+B,GACjClB,EAAQh9G,GAASxoB,EAAWmoG,GACtBA,EACA,SAAUw+B,EAAU5C,GAChB,OAAO4C,GAAYD,EAAcA,EAAcv+B,CACnD,CACV,CAEA,SAASy+B,GAAsBp+G,EAAOi5B,GAClC,OAAKk+E,EAAW6F,EAASh9G,GAIlBg9G,EAAQh9G,GAAOi5B,EAAO8/E,QAAS9/E,EAAO6gF,SAHlC,IAAI9mI,OAQRqrI,GAR8Br+G,EAU5BrwB,QAAQ,KAAM,IACdA,QACG,uCACA,SAAUgsB,EAAS2iH,EAAIC,EAAIC,EAAIC,GAC3B,OAAOH,GAAMC,GAAMC,GAAMC,CAC7B,KAXhB,CAgBA,SAASJ,GAAYvnI,GACjB,OAAOA,EAAEnH,QAAQ,yBAA0B,OAC/C,CAlCAqtI,EAAU,CAAC,EAoCX,IAAI//G,GAAS,CAAC,EAEd,SAASyhH,GAAc1+G,EAAOxjB,GAC1B,IAAIvJ,EAEA0rI,EADAx6G,EAAO3nB,EAWX,IATqB,iBAAVwjB,IACPA,EAAQ,CAACA,IAET8xB,EAASt1C,KACT2nB,EAAO,SAAU7L,EAAO3K,GACpBA,EAAMnR,GAAYkgI,EAAMpkH,EAC5B,GAEJqmH,EAAW3+G,EAAMvvB,OACZwC,EAAI,EAAGA,EAAI0rI,EAAU1rI,IACtBgqB,GAAO+C,EAAM/sB,IAAMkxB,CAE3B,CAEA,SAASy6G,GAAkB5+G,EAAOxjB,GAC9BkiI,GAAc1+G,GAAO,SAAU1H,EAAO3K,EAAOsrC,EAAQj5B,GACjDi5B,EAAO4lF,GAAK5lF,EAAO4lF,IAAM,CAAC,EAC1BriI,EAAS8b,EAAO2gC,EAAO4lF,GAAI5lF,EAAQj5B,EACvC,GACJ,CAEA,SAAS8+G,GAAwB9+G,EAAO1H,EAAO2gC,GAC9B,MAAT3gC,GAAiB6+G,EAAWl6G,GAAQ+C,IACpC/C,GAAO+C,GAAO1H,EAAO2gC,EAAO8lF,GAAI9lF,EAAQj5B,EAEhD,CAEA,IAcI9S,GAdA8xH,GAAO,EACPC,GAAQ,EACRC,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdC,GAAO,EACPC,GAAU,EAuBd,SAASl3H,GAAY3D,EAAMC,GACvB,GAAInJ,MAAMkJ,IAASlJ,MAAMmJ,GACrB,OAAOsB,IAEX,IAzBYN,EAyBR65H,GAAe76H,GAzBPgB,EAyBc,IAxBRA,GAAKA,EA0BvB,OADAjB,IAASC,EAAQ66H,GAAY,GACT,IAAbA,EACDjD,EAAW73H,GACP,GACA,GACJ,GAAO86H,EAAW,EAAK,CACjC,CAzBIvyH,GADAxhB,MAAMC,UAAUuhB,QACNxhB,MAAMC,UAAUuhB,QAEhB,SAAUzP,GAEhB,IAAIxK,EACJ,IAAKA,EAAI,EAAGA,EAAIjH,KAAKyE,SAAUwC,EAC3B,GAAIjH,KAAKiH,KAAOwK,EACZ,OAAOxK,EAGf,OAAQ,CACZ,EAkBJooI,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACjC,OAAOrvI,KAAK4Y,QAAU,CAC1B,IAEAy2H,EAAe,MAAO,EAAG,GAAG,SAAU3yH,GAClC,OAAO1c,KAAKuvI,aAAatyH,YAAYjd,KAAM0c,EAC/C,IAEA2yH,EAAe,OAAQ,EAAG,GAAG,SAAU3yH,GACnC,OAAO1c,KAAKuvI,aAAav3H,OAAOhY,KAAM0c,EAC1C,IAIAozH,EAAa,QAAS,KAItBS,EAAgB,QAAS,GAIzB0B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAO,SAAUE,EAAU34H,GACrC,OAAOA,EAAOutH,iBAAiBoL,EACnC,IACAF,GAAc,QAAQ,SAAUE,EAAU34H,GACtC,OAAOA,EAAO+tH,YAAY4K,EAC9B,IAEAO,GAAc,CAAC,IAAK,OAAO,SAAUpmH,EAAO3K,GACxCA,EAAMsxH,IAASvC,EAAMpkH,GAAS,CAClC,IAEAomH,GAAc,CAAC,MAAO,SAAS,SAAUpmH,EAAO3K,EAAOsrC,EAAQj5B,GAC3D,IAAIpb,EAAQq0C,EAAO6gF,QAAQxG,YAAYh7G,EAAO0H,EAAOi5B,EAAO8/E,SAE/C,MAATn0H,EACA+I,EAAMsxH,IAASr6H,EAEfgzH,EAAgB3+E,GAAQk/E,aAAe7/G,CAE/C,IAIA,IAAIonH,GACI,wFAAwF3nI,MACpF,KAER4nI,GACI,kDAAkD5nI,MAAM,KAC5D6nI,GAAmB,gCACnBC,GAA0B7B,GAC1B8B,GAAqB9B,GA8BzB,SAAS+B,GAAkBC,EAAWt3H,EAAQgvH,GAC1C,IAAIzkI,EACAgtI,EACAtL,EACAuL,EAAMF,EAAUG,oBACpB,IAAKn0I,KAAKo0I,aAKN,IAHAp0I,KAAKo0I,aAAe,GACpBp0I,KAAKq0I,iBAAmB,GACxBr0I,KAAKs0I,kBAAoB,GACpBrtI,EAAI,EAAGA,EAAI,KAAMA,EAClB0hI,EAAM8C,EAAU,CAAC,IAAMxkI,IACvBjH,KAAKs0I,kBAAkBrtI,GAAKjH,KAAKid,YAC7B0rH,EACA,IACFwL,oBACFn0I,KAAKq0I,iBAAiBptI,GAAKjH,KAAKgY,OAAO2wH,EAAK,IAAIwL,oBAIxD,OAAIzI,EACe,QAAXhvH,GAEe,KADfu3H,EAAK/yH,GAAQnhB,KAAKC,KAAKs0I,kBAAmBJ,IACvBD,EAAK,MAGT,KADfA,EAAK/yH,GAAQnhB,KAAKC,KAAKq0I,iBAAkBH,IACtBD,EAAK,KAGb,QAAXv3H,GAEY,KADZu3H,EAAK/yH,GAAQnhB,KAAKC,KAAKs0I,kBAAmBJ,MAK3B,KADfD,EAAK/yH,GAAQnhB,KAAKC,KAAKq0I,iBAAkBH,IAF9BD,EAGa,MAGZ,KADZA,EAAK/yH,GAAQnhB,KAAKC,KAAKq0I,iBAAkBH,MAK1B,KADfD,EAAK/yH,GAAQnhB,KAAKC,KAAKs0I,kBAAmBJ,IAF/BD,EAGa,IAGpC,CAyDA,SAASM,GAAS5L,EAAK5hI,GACnB,IAAIytI,EAEJ,IAAK7L,EAAIrtH,UAEL,OAAOqtH,EAGX,GAAqB,iBAAV5hI,EACP,GAAI,QAAQxC,KAAKwC,GACbA,EAAQ2pI,EAAM3pI,QAId,IAAK++C,EAFL/+C,EAAQ4hI,EAAI4G,aAAajI,YAAYvgI,IAGjC,OAAO4hI,EAOnB,OAFA6L,EAAavxI,KAAK4T,IAAI8xH,EAAIjwH,OAAQ4D,GAAYqsH,EAAIhwH,OAAQ5R,IAC1D4hI,EAAI11E,GAAG,OAAS01E,EAAIiF,OAAS,MAAQ,IAAM,SAAS7mI,EAAOytI,GACpD7L,CACX,CAEA,SAAS8L,GAAY1tI,GACjB,OAAa,MAATA,GACAwtI,GAASv0I,KAAM+G,GACfi2B,EAAMgxG,aAAahuI,MAAM,GAClBA,MAEAuc,EAAIvc,KAAM,QAEzB,CA8CA,SAAS00I,KACL,SAASC,EAAUjrI,EAAGE,GAClB,OAAOA,EAAEnF,OAASiF,EAAEjF,MACxB,CAEA,IAGIwC,EACA0hI,EAJAiM,EAAc,GACdC,EAAa,GACbC,EAAc,GAGlB,IAAK7tI,EAAI,EAAGA,EAAI,GAAIA,IAEhB0hI,EAAM8C,EAAU,CAAC,IAAMxkI,IACvB2tI,EAAY1/H,KAAKlV,KAAKid,YAAY0rH,EAAK,KACvCkM,EAAW3/H,KAAKlV,KAAKgY,OAAO2wH,EAAK,KACjCmM,EAAY5/H,KAAKlV,KAAKgY,OAAO2wH,EAAK,KAClCmM,EAAY5/H,KAAKlV,KAAKid,YAAY0rH,EAAK,KAO3C,IAHAiM,EAAYl/H,KAAKi/H,GACjBE,EAAWn/H,KAAKi/H,GAChBG,EAAYp/H,KAAKi/H,GACZ1tI,EAAI,EAAGA,EAAI,GAAIA,IAChB2tI,EAAY3tI,GAAKorI,GAAYuC,EAAY3tI,IACzC4tI,EAAW5tI,GAAKorI,GAAYwC,EAAW5tI,IAE3C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB6tI,EAAY7tI,GAAKorI,GAAYyC,EAAY7tI,IAG7CjH,KAAK+0I,aAAe,IAAI/tI,OAAO,KAAO8tI,EAAY18H,KAAK,KAAO,IAAK,KACnEpY,KAAKg1I,kBAAoBh1I,KAAK+0I,aAC9B/0I,KAAKi1I,mBAAqB,IAAIjuI,OAC1B,KAAO6tI,EAAWz8H,KAAK,KAAO,IAC9B,KAEJpY,KAAKk1I,wBAA0B,IAAIluI,OAC/B,KAAO4tI,EAAYx8H,KAAK,KAAO,IAC/B,IAER,CA+CA,SAAS+8H,GAAWx8H,GAChB,OAAO63H,EAAW73H,GAAQ,IAAM,GACpC,CA7CA02H,EAAe,IAAK,EAAG,GAAG,WACtB,IAAIx3H,EAAI7X,KAAK2Y,OACb,OAAOd,GAAK,KAAO+2H,EAAS/2H,EAAG,GAAK,IAAMA,CAC9C,IAEAw3H,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOrvI,KAAK2Y,OAAS,GACzB,IAEA02H,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CS,EAAa,OAAQ,KAIrBS,EAAgB,OAAQ,GAIxB0B,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,IACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,SAAUN,GAAWN,IAEnCqB,GAAc,CAAC,QAAS,UAAWM,IACnCN,GAAc,QAAQ,SAAUpmH,EAAO3K,GACnCA,EAAMqxH,IACe,IAAjB1mH,EAAM7nB,OAAeu4B,EAAMo4G,kBAAkB9oH,GAASokH,EAAMpkH,EACpE,IACAomH,GAAc,MAAM,SAAUpmH,EAAO3K,GACjCA,EAAMqxH,IAAQh2G,EAAMo4G,kBAAkB9oH,EAC1C,IACAomH,GAAc,KAAK,SAAUpmH,EAAO3K,GAChCA,EAAMqxH,IAAQzjI,SAAS+c,EAAO,GAClC,IAUA0Q,EAAMo4G,kBAAoB,SAAU9oH,GAChC,OAAOokH,EAAMpkH,IAAUokH,EAAMpkH,GAAS,GAAK,KAAO,IACtD,EAIA,IAAI+oH,GAAaxE,EAAW,YAAY,GAMxC,SAASyE,GAAWz9H,EAAG7C,EAAGJ,EAAGmB,EAAG+B,EAAGhN,EAAGoO,GAGlC,IAAIR,EAYJ,OAVIb,EAAI,KAAOA,GAAK,GAEhBa,EAAO,IAAIuB,KAAKpC,EAAI,IAAK7C,EAAGJ,EAAGmB,EAAG+B,EAAGhN,EAAGoO,GACpC0zB,SAASl0B,EAAK4B,gBACd5B,EAAK68H,YAAY19H,IAGrBa,EAAO,IAAIuB,KAAKpC,EAAG7C,EAAGJ,EAAGmB,EAAG+B,EAAGhN,EAAGoO,GAG/BR,CACX,CAEA,SAAS88H,GAAc39H,GACnB,IAAIa,EAAMY,EAcV,OAZIzB,EAAI,KAAOA,GAAK,IAChByB,EAAO5Z,MAAMC,UAAU4V,MAAMxV,KAAK2T,YAE7B,GAAKmE,EAAI,IACda,EAAO,IAAIuB,KAAKA,KAAKG,IAAI3G,MAAM,KAAM6F,IACjCszB,SAASl0B,EAAKqmG,mBACdrmG,EAAK+8H,eAAe59H,IAGxBa,EAAO,IAAIuB,KAAKA,KAAKG,IAAI3G,MAAM,KAAMC,YAGlCgF,CACX,CAGA,SAASg9H,GAAgB/8H,EAAM4sH,EAAKC,GAChC,IACImQ,EAAM,EAAIpQ,EAAMC,EAIpB,QAFa,EAAIgQ,GAAc78H,EAAM,EAAGg9H,GAAKz2B,YAAcqmB,GAAO,EAElDoQ,EAAM,CAC1B,CAGA,SAASC,GAAmBj9H,EAAM2sH,EAAMuQ,EAAStQ,EAAKC,GAClD,IAGIsQ,EACAC,EAFAC,EAAY,EAAI,GAAK1Q,EAAO,IAFZ,EAAIuQ,EAAUtQ,GAAO,EACxBmQ,GAAgB/8H,EAAM4sH,EAAKC,GAgB5C,OAXIwQ,GAAa,EAEbD,EAAeZ,GADfW,EAAUn9H,EAAO,GACoBq9H,EAC9BA,EAAYb,GAAWx8H,IAC9Bm9H,EAAUn9H,EAAO,EACjBo9H,EAAeC,EAAYb,GAAWx8H,KAEtCm9H,EAAUn9H,EACVo9H,EAAeC,GAGZ,CACHr9H,KAAMm9H,EACNE,UAAWD,EAEnB,CAEA,SAASE,GAAWtN,EAAKpD,EAAKC,GAC1B,IAEI0Q,EACAJ,EAHAK,EAAaT,GAAgB/M,EAAIhwH,OAAQ4sH,EAAKC,GAC9CF,EAAOriI,KAAKwV,OAAOkwH,EAAIqN,YAAcG,EAAa,GAAK,GAAK,EAehE,OAXI7Q,EAAO,EAEP4Q,EAAU5Q,EAAO8Q,GADjBN,EAAUnN,EAAIhwH,OAAS,EACe4sH,EAAKC,GACpCF,EAAO8Q,GAAYzN,EAAIhwH,OAAQ4sH,EAAKC,IAC3C0Q,EAAU5Q,EAAO8Q,GAAYzN,EAAIhwH,OAAQ4sH,EAAKC,GAC9CsQ,EAAUnN,EAAIhwH,OAAS,IAEvBm9H,EAAUnN,EAAIhwH,OACdu9H,EAAU5Q,GAGP,CACHA,KAAM4Q,EACNv9H,KAAMm9H,EAEd,CAEA,SAASM,GAAYz9H,EAAM4sH,EAAKC,GAC5B,IAAI2Q,EAAaT,GAAgB/8H,EAAM4sH,EAAKC,GACxC6Q,EAAiBX,GAAgB/8H,EAAO,EAAG4sH,EAAKC,GACpD,OAAQ2P,GAAWx8H,GAAQw9H,EAAaE,GAAkB,CAC9D,CAIAhH,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCS,EAAa,OAAQ,KACrBA,EAAa,UAAW,KAIxBS,EAAgB,OAAQ,GACxBA,EAAgB,UAAW,GAI3B0B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAE/B0B,GACI,CAAC,IAAK,KAAM,IAAK,OACjB,SAAUtmH,EAAOg5G,EAAMr4E,EAAQj5B,GAC3BsxG,EAAKtxG,EAAMsrC,OAAO,EAAG,IAAMoxE,EAAMpkH,EACrC,IA0HJ,SAASgqH,GAAcC,EAAIthI,GACvB,OAAOshI,EAAGhhI,MAAMN,EAAG,GAAG9U,OAAOo2I,EAAGhhI,MAAM,EAAGN,GAC7C,CAtFAo6H,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,GAAG,SAAU3yH,GACjC,OAAO1c,KAAKuvI,aAAalyH,YAAYrd,KAAM0c,EAC/C,IAEA2yH,EAAe,MAAO,EAAG,GAAG,SAAU3yH,GAClC,OAAO1c,KAAKuvI,aAAahyH,cAAcvd,KAAM0c,EACjD,IAEA2yH,EAAe,OAAQ,EAAG,GAAG,SAAU3yH,GACnC,OAAO1c,KAAKuvI,aAAax3H,SAAS/X,KAAM0c,EAC5C,IAEA2yH,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BS,EAAa,MAAO,KACpBA,EAAa,UAAW,KACxBA,EAAa,aAAc,KAG3BS,EAAgB,MAAO,IACvBA,EAAgB,UAAW,IAC3BA,EAAgB,aAAc,IAI9B0B,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,MAAM,SAAUE,EAAU34H,GACpC,OAAOA,EAAOg9H,iBAAiBrE,EACnC,IACAF,GAAc,OAAO,SAAUE,EAAU34H,GACrC,OAAOA,EAAOi9H,mBAAmBtE,EACrC,IACAF,GAAc,QAAQ,SAAUE,EAAU34H,GACtC,OAAOA,EAAOk9H,cAAcvE,EAChC,IAEAS,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAUtmH,EAAOg5G,EAAMr4E,EAAQj5B,GACpE,IAAI6hH,EAAU5oF,EAAO6gF,QAAQrG,cAAcn7G,EAAO0H,EAAOi5B,EAAO8/E,SAEjD,MAAX8I,EACAvQ,EAAK1wH,EAAIihI,EAETjK,EAAgB3+E,GAAQ6/E,eAAiBxgH,CAEjD,IAEAsmH,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAUtmH,EAAOg5G,EAAMr4E,EAAQj5B,GAC9DsxG,EAAKtxG,GAAS08G,EAAMpkH,EACxB,IAiCA,IAAIqqH,GACI,2DAA2D5qI,MAAM,KACrE6qI,GAA6B,8BAA8B7qI,MAAM,KACjE8qI,GAA2B,uBAAuB9qI,MAAM,KACxD+qI,GAAuB9E,GACvB+E,GAA4B/E,GAC5BgF,GAA0BhF,GAiC9B,SAASiF,GAAoBC,EAAax6H,EAAQgvH,GAC9C,IAAIzkI,EACAgtI,EACAtL,EACAuL,EAAMgD,EAAY/C,oBACtB,IAAKn0I,KAAKm3I,eAKN,IAJAn3I,KAAKm3I,eAAiB,GACtBn3I,KAAKo3I,oBAAsB,GAC3Bp3I,KAAKq3I,kBAAoB,GAEpBpwI,EAAI,EAAGA,EAAI,IAAKA,EACjB0hI,EAAM8C,EAAU,CAAC,IAAM,IAAI/E,IAAIz/H,GAC/BjH,KAAKq3I,kBAAkBpwI,GAAKjH,KAAKqd,YAC7BsrH,EACA,IACFwL,oBACFn0I,KAAKo3I,oBAAoBnwI,GAAKjH,KAAKud,cAC/BorH,EACA,IACFwL,oBACFn0I,KAAKm3I,eAAelwI,GAAKjH,KAAK+X,SAAS4wH,EAAK,IAAIwL,oBAIxD,OAAIzI,EACe,SAAXhvH,GAEe,KADfu3H,EAAK/yH,GAAQnhB,KAAKC,KAAKm3I,eAAgBjD,IACpBD,EAAK,KACN,QAAXv3H,GAEQ,KADfu3H,EAAK/yH,GAAQnhB,KAAKC,KAAKo3I,oBAAqBlD,IACzBD,EAAK,MAGT,KADfA,EAAK/yH,GAAQnhB,KAAKC,KAAKq3I,kBAAmBnD,IACvBD,EAAK,KAGb,SAAXv3H,GAEY,KADZu3H,EAAK/yH,GAAQnhB,KAAKC,KAAKm3I,eAAgBjD,MAK3B,KADZD,EAAK/yH,GAAQnhB,KAAKC,KAAKo3I,oBAAqBlD,MAK7B,KADfD,EAAK/yH,GAAQnhB,KAAKC,KAAKq3I,kBAAmBnD,IAN/BD,EAOa,KACN,QAAXv3H,GAEK,KADZu3H,EAAK/yH,GAAQnhB,KAAKC,KAAKo3I,oBAAqBlD,MAKhC,KADZD,EAAK/yH,GAAQnhB,KAAKC,KAAKm3I,eAAgBjD,MAKxB,KADfD,EAAK/yH,GAAQnhB,KAAKC,KAAKq3I,kBAAmBnD,IAN/BD,EAOa,MAGZ,KADZA,EAAK/yH,GAAQnhB,KAAKC,KAAKq3I,kBAAmBnD,MAK9B,KADZD,EAAK/yH,GAAQnhB,KAAKC,KAAKm3I,eAAgBjD,MAKxB,KADfD,EAAK/yH,GAAQnhB,KAAKC,KAAKo3I,oBAAqBlD,IANjCD,EAOa,IAGpC,CAyKA,SAASqD,KACL,SAAS3C,EAAUjrI,EAAGE,GAClB,OAAOA,EAAEnF,OAASiF,EAAEjF,MACxB,CAEA,IAIIwC,EACA0hI,EACA4O,EACAC,EACAC,EARAC,EAAY,GACZ9C,EAAc,GACdC,EAAa,GACbC,EAAc,GAMlB,IAAK7tI,EAAI,EAAGA,EAAI,EAAGA,IAEf0hI,EAAM8C,EAAU,CAAC,IAAM,IAAI/E,IAAIz/H,GAC/BswI,EAAOlF,GAAYryI,KAAKqd,YAAYsrH,EAAK,KACzC6O,EAASnF,GAAYryI,KAAKud,cAAcorH,EAAK,KAC7C8O,EAAQpF,GAAYryI,KAAK+X,SAAS4wH,EAAK,KACvC+O,EAAUxiI,KAAKqiI,GACf3C,EAAY1/H,KAAKsiI,GACjB3C,EAAW3/H,KAAKuiI,GAChB3C,EAAY5/H,KAAKqiI,GACjBzC,EAAY5/H,KAAKsiI,GACjB1C,EAAY5/H,KAAKuiI,GAIrBC,EAAUhiI,KAAKi/H,GACfC,EAAYl/H,KAAKi/H,GACjBE,EAAWn/H,KAAKi/H,GAChBG,EAAYp/H,KAAKi/H,GAEjB30I,KAAK23I,eAAiB,IAAI3wI,OAAO,KAAO8tI,EAAY18H,KAAK,KAAO,IAAK,KACrEpY,KAAK43I,oBAAsB53I,KAAK23I,eAChC33I,KAAK63I,kBAAoB73I,KAAK23I,eAE9B33I,KAAK83I,qBAAuB,IAAI9wI,OAC5B,KAAO6tI,EAAWz8H,KAAK,KAAO,IAC9B,KAEJpY,KAAK+3I,0BAA4B,IAAI/wI,OACjC,KAAO4tI,EAAYx8H,KAAK,KAAO,IAC/B,KAEJpY,KAAKg4I,wBAA0B,IAAIhxI,OAC/B,KAAO0wI,EAAUt/H,KAAK,KAAO,IAC7B,IAER,CAIA,SAAS6/H,KACL,OAAOj4I,KAAK0kI,QAAU,IAAM,EAChC,CAoCA,SAAS9nH,GAASoX,EAAOkkH,GACrB7I,EAAer7G,EAAO,EAAG,GAAG,WACxB,OAAOh0B,KAAKuvI,aAAa3yH,SACrB5c,KAAK0kI,QACL1kI,KAAK2kI,UACLuT,EAER,GACJ,CAcA,SAASC,GAAchG,EAAU34H,GAC7B,OAAOA,EAAO4+H,cAClB,CAtDA/I,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG4I,IAClC5I,EAAe,IAAK,CAAC,KAAM,GAAI,GAN/B,WACI,OAAOrvI,KAAK0kI,SAAW,EAC3B,IAMA2K,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAK4I,GAAQxkI,MAAMzT,MAAQ4uI,EAAS5uI,KAAK2kI,UAAW,EAC/D,IAEA0K,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACA4I,GAAQxkI,MAAMzT,MACd4uI,EAAS5uI,KAAK2kI,UAAW,GACzBiK,EAAS5uI,KAAKq4I,UAAW,EAEjC,IAEAhJ,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKrvI,KAAK0kI,QAAUkK,EAAS5uI,KAAK2kI,UAAW,EACxD,IAEA0K,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACArvI,KAAK0kI,QACLkK,EAAS5uI,KAAK2kI,UAAW,GACzBiK,EAAS5uI,KAAKq4I,UAAW,EAEjC,IAYAz7H,GAAS,KAAK,GACdA,GAAS,KAAK,GAIdkzH,EAAa,OAAQ,KAGrBS,EAAgB,OAAQ,IAQxB0B,GAAc,IAAKkG,IACnBlG,GAAc,IAAKkG,IACnBlG,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAE/Be,GAAc,MAAOV,IACrBU,GAAc,QAAST,IACvBS,GAAc,MAAOV,IACrBU,GAAc,QAAST,IAEvBkB,GAAc,CAAC,IAAK,MAAOS,IAC3BT,GAAc,CAAC,IAAK,OAAO,SAAUpmH,EAAO3K,EAAOsrC,GAC/C,IAAIqrF,EAAS5H,EAAMpkH,GACnB3K,EAAMwxH,IAAmB,KAAXmF,EAAgB,EAAIA,CACtC,IACA5F,GAAc,CAAC,IAAK,MAAM,SAAUpmH,EAAO3K,EAAOsrC,GAC9CA,EAAOsrF,MAAQtrF,EAAO6gF,QAAQrJ,KAAKn4G,GACnC2gC,EAAOurF,UAAYlsH,CACvB,IACAomH,GAAc,CAAC,IAAK,OAAO,SAAUpmH,EAAO3K,EAAOsrC,GAC/CtrC,EAAMwxH,IAAQzC,EAAMpkH,GACpBs/G,EAAgB3+E,GAAQ+/E,SAAU,CACtC,IACA0F,GAAc,OAAO,SAAUpmH,EAAO3K,EAAOsrC,GACzC,IAAI9+C,EAAMme,EAAM7nB,OAAS,EACzBkd,EAAMwxH,IAAQzC,EAAMpkH,EAAMgzC,OAAO,EAAGnxD,IACpCwT,EAAMyxH,IAAU1C,EAAMpkH,EAAMgzC,OAAOnxD,IACnCy9H,EAAgB3+E,GAAQ+/E,SAAU,CACtC,IACA0F,GAAc,SAAS,SAAUpmH,EAAO3K,EAAOsrC,GAC3C,IAAIwrF,EAAOnsH,EAAM7nB,OAAS,EACtBi0I,EAAOpsH,EAAM7nB,OAAS,EAC1Bkd,EAAMwxH,IAAQzC,EAAMpkH,EAAMgzC,OAAO,EAAGm5E,IACpC92H,EAAMyxH,IAAU1C,EAAMpkH,EAAMgzC,OAAOm5E,EAAM,IACzC92H,EAAM0xH,IAAU3C,EAAMpkH,EAAMgzC,OAAOo5E,IACnC9M,EAAgB3+E,GAAQ+/E,SAAU,CACtC,IACA0F,GAAc,OAAO,SAAUpmH,EAAO3K,EAAOsrC,GACzC,IAAI9+C,EAAMme,EAAM7nB,OAAS,EACzBkd,EAAMwxH,IAAQzC,EAAMpkH,EAAMgzC,OAAO,EAAGnxD,IACpCwT,EAAMyxH,IAAU1C,EAAMpkH,EAAMgzC,OAAOnxD,GACvC,IACAukI,GAAc,SAAS,SAAUpmH,EAAO3K,EAAOsrC,GAC3C,IAAIwrF,EAAOnsH,EAAM7nB,OAAS,EACtBi0I,EAAOpsH,EAAM7nB,OAAS,EAC1Bkd,EAAMwxH,IAAQzC,EAAMpkH,EAAMgzC,OAAO,EAAGm5E,IACpC92H,EAAMyxH,IAAU1C,EAAMpkH,EAAMgzC,OAAOm5E,EAAM,IACzC92H,EAAM0xH,IAAU3C,EAAMpkH,EAAMgzC,OAAOo5E,GACvC,IAUA,IAKIC,GAAa9H,EAAW,SAAS,GAUrC,IAuBI+H,GAvBAC,GAAa,CACb/T,SA5iDkB,CAClBC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAuiDVP,eAh7CwB,CACxBlmH,IAAK,YACLC,GAAI,SACJC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BA26CNrC,YA94CqB,eA+4CrB1E,QAz4CiB,KA04CjBotH,uBAz4CgC,UA04ChC9lH,aAp4CsB,CACtBJ,OAAQ,QACRC,KAAM,SACNtU,EAAG,gBACHgT,GAAI,aACJ9I,EAAG,WACH6I,GAAI,aACJ9H,EAAG,UACH4H,GAAI,WACJ/I,EAAG,QACHwI,GAAI,UACJpE,EAAG,SACH2tH,GAAI,WACJ7uH,EAAG,UACHiF,GAAI,YACJlF,EAAG,SACHwH,GAAI,YAs3CJrH,OAAQ07H,GACRz2H,YAAa02H,GAEbrO,KAxlBoB,CACpBC,IAAK,EACLC,IAAK,GAwlBLztH,SAAU4+H,GACVt5H,YAAaw5H,GACbt5H,cAAeq5H,GAEfpS,cAhC6B,iBAoC7B5gD,GAAU,CAAC,EACXk1D,GAAiB,CAAC,EAGtB,SAASC,GAAaC,EAAM7mF,GACxB,IAAIlrD,EACAgyI,EAAOh2I,KAAK4T,IAAImiI,EAAKv0I,OAAQ0tD,EAAK1tD,QACtC,IAAKwC,EAAI,EAAGA,EAAIgyI,EAAMhyI,GAAK,EACvB,GAAI+xI,EAAK/xI,KAAOkrD,EAAKlrD,GACjB,OAAOA,EAGf,OAAOgyI,CACX,CAEA,SAASC,GAAgBpsI,GACrB,OAAOA,EAAMA,EAAItG,cAAc7C,QAAQ,IAAK,KAAOmJ,CACvD,CA0CA,SAASqsI,GAAWtmI,GAChB,IAAIumI,EAAY,KAGhB,QACsBtmI,IAAlB8wE,GAAQ/wE,IAER6E,GACAA,EAAOC,SAbf,SAA0B9E,GAEtB,OAAoC,MAA7BA,EAAKjM,MAAM,cACtB,CAWQyyI,CAAiBxmI,GAEjB,IACIumI,EAAYR,GAAaU,MAEzBC,EAAAA,KAAAA,CAAe,KAAc1mI,GAC7B2mI,GAAmBJ,EACvB,CAAE,MAAO71I,GAGLqgF,GAAQ/wE,GAAQ,IACpB,CAEJ,OAAO+wE,GAAQ/wE,EACnB,CAKA,SAAS2mI,GAAmB1sI,EAAK8xB,GAC7B,IAAIj9B,EAqBJ,OApBImL,KAEInL,EADA2pI,EAAY1sG,GACL2pE,GAAUz7F,GAEVy3H,GAAaz3H,EAAK8xB,IAKzBg6G,GAAej3I,EAEQ,oBAAZ24B,SAA2BA,QAAQC,MAE1CD,QAAQC,KACJ,UAAYztB,EAAM,2CAM3B8rI,GAAaU,KACxB,CAEA,SAAS/U,GAAa1xH,EAAMo6C,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAIzzC,EACAi1H,EAAeoK,GAEnB,GADA5rF,EAAOs8E,KAAO12H,EACO,MAAjB+wE,GAAQ/wE,GACR07H,EACI,uBACA,2OAKJE,EAAe7qD,GAAQ/wE,GAAM4mI,aAC1B,GAA2B,MAAvBxsF,EAAOysF,aACd,GAAoC,MAAhC91D,GAAQ32B,EAAOysF,cACfjL,EAAe7qD,GAAQ32B,EAAOysF,cAAcD,YACzC,CAEH,GAAc,OADdjgI,EAAS2/H,GAAWlsF,EAAOysF,eAWvB,OAPKZ,GAAe7rF,EAAOysF,gBACvBZ,GAAe7rF,EAAOysF,cAAgB,IAE1CZ,GAAe7rF,EAAOysF,cAAcxkI,KAAK,CACrCrC,KAAMA,EACNo6C,OAAQA,IAEL,KATPwhF,EAAej1H,EAAOigI,OAW9B,CAeJ,OAbA71D,GAAQ/wE,GAAQ,IAAI87H,EAAOH,EAAaC,EAAcxhF,IAElD6rF,GAAejmI,IACfimI,GAAejmI,GAAM8D,SAAQ,SAAUiD,GACnC2qH,GAAa3qH,EAAE/G,KAAM+G,EAAEqzC,OAC3B,IAMJusF,GAAmB3mI,GAEZ+wE,GAAQ/wE,EACnB,CAGI,cADO+wE,GAAQ/wE,GACR,IAEf,CAgDA,SAAS01F,GAAUz7F,GACf,IAAI0M,EAMJ,GAJI1M,GAAOA,EAAIghI,SAAWhhI,EAAIghI,QAAQwL,QAClCxsI,EAAMA,EAAIghI,QAAQwL,QAGjBxsI,EACD,OAAO8rI,GAGX,IAAKx4I,EAAQ0M,GAAM,CAGf,GADA0M,EAAS2/H,GAAWrsI,GAEhB,OAAO0M,EAEX1M,EAAM,CAACA,EACX,CAEA,OAlNJ,SAAsBs6G,GAOlB,IANA,IACIh/G,EACA8gB,EACA1P,EACAzN,EAJA9E,EAAI,EAMDA,EAAImgH,EAAM3iH,QAAQ,CAKrB,IAHA2D,GADA2D,EAAQmtI,GAAgB9xB,EAAMngH,IAAI8E,MAAM,MAC9BtH,OAEVykB,GADAA,EAAOgwH,GAAgB9xB,EAAMngH,EAAI,KACnBiiB,EAAKnd,MAAM,KAAO,KACzB3D,EAAI,GAAG,CAEV,GADAoR,EAAS2/H,GAAWptI,EAAMwJ,MAAM,EAAGnN,GAAGgQ,KAAK,MAEvC,OAAOoB,EAEX,GACI0P,GACAA,EAAKzkB,QAAU2D,GACf2wI,GAAahtI,EAAOmd,IAAS9gB,EAAI,EAGjC,MAEJA,GACJ,CACAnB,GACJ,CACA,OAAO2xI,EACX,CAoLWe,CAAa7sI,EACxB,CAMA,SAAS8sI,GAAc5kI,GACnB,IAAIo7B,EACA1mC,EAAIsL,EAAE+9H,GAuCV,OArCIrpI,IAAsC,IAAjCkiI,EAAgB52H,GAAGo7B,WACxBA,EACI1mC,EAAEupI,IAAS,GAAKvpI,EAAEupI,IAAS,GACrBA,GACAvpI,EAAEwpI,IAAQ,GAAKxpI,EAAEwpI,IAAQ52H,GAAY5S,EAAEspI,IAAOtpI,EAAEupI,KAChDC,GACAxpI,EAAEypI,IAAQ,GACVzpI,EAAEypI,IAAQ,IACG,KAAZzpI,EAAEypI,MACgB,IAAdzpI,EAAE0pI,KACe,IAAd1pI,EAAE2pI,KACiB,IAAnB3pI,EAAE4pI,KACVH,GACAzpI,EAAE0pI,IAAU,GAAK1pI,EAAE0pI,IAAU,GAC7BA,GACA1pI,EAAE2pI,IAAU,GAAK3pI,EAAE2pI,IAAU,GAC7BA,GACA3pI,EAAE4pI,IAAe,GAAK5pI,EAAE4pI,IAAe,IACvCA,IACC,EAGP1H,EAAgB52H,GAAG6kI,qBAClBzpG,EAAW4iG,IAAQ5iG,EAAW8iG,MAE/B9iG,EAAW8iG,IAEXtH,EAAgB52H,GAAG8kI,iBAAgC,IAAd1pG,IACrCA,EAAWmjG,IAEX3H,EAAgB52H,GAAG+kI,mBAAkC,IAAd3pG,IACvCA,EAAWojG,IAGf5H,EAAgB52H,GAAGo7B,SAAWA,GAG3Bp7B,CACX,CAIA,IAAIglI,GACI,iJACJC,GACI,6IACJC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElB5N,GACI,0LACJ6N,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAchuF,GACnB,IAAIhmD,EACAC,EAGAg0I,EACAC,EACAC,EACAC,EALAx/G,EAASoxB,EAAO3nC,GAChB1e,EAAQozI,GAAiBtwH,KAAKmS,IAAWo+G,GAAcvwH,KAAKmS,GAK5Dy/G,EAAcnB,GAAS11I,OACvB82I,EAAcnB,GAAS31I,OAE3B,GAAImC,EAAO,CAEP,IADAglI,EAAgB3+E,GAAQq/E,KAAM,EACzBrlI,EAAI,EAAGC,EAAIo0I,EAAar0I,EAAIC,EAAGD,IAChC,GAAIkzI,GAASlzI,GAAG,GAAGyiB,KAAK9iB,EAAM,IAAK,CAC/Bu0I,EAAahB,GAASlzI,GAAG,GACzBi0I,GAA+B,IAAnBf,GAASlzI,GAAG,GACxB,KACJ,CAEJ,GAAkB,MAAdk0I,EAEA,YADAluF,EAAO0/E,UAAW,GAGtB,GAAI/lI,EAAM,GAAI,CACV,IAAKK,EAAI,EAAGC,EAAIq0I,EAAat0I,EAAIC,EAAGD,IAChC,GAAImzI,GAASnzI,GAAG,GAAGyiB,KAAK9iB,EAAM,IAAK,CAE/Bw0I,GAAcx0I,EAAM,IAAM,KAAOwzI,GAASnzI,GAAG,GAC7C,KACJ,CAEJ,GAAkB,MAAdm0I,EAEA,YADAnuF,EAAO0/E,UAAW,EAG1B,CACA,IAAKuO,GAA2B,MAAdE,EAEd,YADAnuF,EAAO0/E,UAAW,GAGtB,GAAI/lI,EAAM,GAAI,CACV,IAAIszI,GAAQxwH,KAAK9iB,EAAM,IAInB,YADAqmD,EAAO0/E,UAAW,GAFlB0O,EAAW,GAKnB,CACApuF,EAAOwgF,GAAK0N,GAAcC,GAAc,KAAOC,GAAY,IAC3DG,GAA0BvuF,EAC9B,MACIA,EAAO0/E,UAAW,CAE1B,CAyBA,SAAS8O,GAAeC,GACpB,IAAI/iI,EAAOpJ,SAASmsI,EAAS,IAC7B,OAAI/iI,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,CACX,CA4CA,SAASgjI,GAAkB1uF,GACvB,IACI2uF,EA5EJF,EACAG,EACAC,EACAC,EACAC,EACAC,EAEIxtH,EAoEA7nB,EAAQ6lI,GAAQ/iH,KAAuBujC,EAAO3nC,GAxC7C3hB,QAAQ,qBAAsB,KAC9BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,KAuCvB,GAAIiD,EAAO,CASP,GAtFJ80I,EA+EQ90I,EAAM,GA9Edi1I,EA+EQj1I,EAAM,GA9Edk1I,EA+EQl1I,EAAM,GA9Edm1I,EA+EQn1I,EAAM,GA9Edo1I,EA+EQp1I,EAAM,GA9Edq1I,EA+EQr1I,EAAM,GA7EV6nB,EAAS,CACTgtH,GAAeC,GACf/H,GAAyBzyH,QAAQ26H,GACjCtsI,SAASusI,EAAQ,IACjBvsI,SAASwsI,EAAS,IAClBxsI,SAASysI,EAAW,KAGpBC,GACAxtH,EAAOvZ,KAAK3F,SAAS0sI,EAAW,KA8DhCL,EA3DGntH,GAsBX,SAAsBytH,EAAYC,EAAalvF,GAC3C,OAAIivF,GAEsBtF,GAA2B11H,QAAQg7H,KACrC,IAAIjiI,KAChBkiI,EAAY,GACZA,EAAY,GACZA,EAAY,IACdvhI,WAEFgxH,EAAgB3+E,GAAQy/E,iBAAkB,EAC1Cz/E,EAAO0/E,UAAW,GACX,EAInB,CA6BayP,CAAax1I,EAAM,GAAIg1I,EAAa3uF,GACrC,OAGJA,EAAO8lF,GAAK6I,EACZ3uF,EAAO0gF,KAhCf,SAAyB0O,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAO/B,GAAW+B,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIzR,EAAKt7H,SAASgtI,EAAW,IACzBvnI,EAAI61H,EAAK,IAEb,OADSA,EAAK71H,GAAK,IACR,GAAKA,CAExB,CAoBsBwnI,CAAgB51I,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExDqmD,EAAOgG,GAAKuiF,GAAc/hI,MAAM,KAAMw5C,EAAO8lF,IAC7C9lF,EAAOgG,GAAGwpF,cAAcxvF,EAAOgG,GAAGmsD,gBAAkBnyD,EAAO0gF,MAE3D/B,EAAgB3+E,GAAQw/E,SAAU,CACtC,MACIx/E,EAAO0/E,UAAW,CAE1B,CA0CA,SAAS9/H,GAASnD,EAAGE,EAAG+K,GACpB,OAAS,MAALjL,EACOA,EAEF,MAALE,EACOA,EAEJ+K,CACX,CAmBA,SAAS+nI,GAAgBzvF,GACrB,IAAIhmD,EACAyR,EAEAikI,EACAC,EACAC,EAHAvwH,EAAQ,GAKZ,IAAI2gC,EAAOgG,GAAX,CAgCA,IA5BA0pF,EA7BJ,SAA0B1vF,GAEtB,IAAI6vF,EAAW,IAAI7iI,KAAK+iB,EAAMgH,OAC9B,OAAIipB,EAAO8vF,QACA,CACHD,EAAS/9B,iBACT+9B,EAAS99B,cACT89B,EAAS79B,cAGV,CAAC69B,EAASxiI,cAAewiI,EAAStiI,WAAYsiI,EAASpiI,UAClE,CAkBkBsiI,CAAiB/vF,GAG3BA,EAAO4lF,IAAyB,MAAnB5lF,EAAO8lF,GAAGG,KAAqC,MAApBjmF,EAAO8lF,GAAGE,KA0E1D,SAA+BhmF,GAC3B,IAAIj0C,EAAGikI,EAAU3X,EAAMuQ,EAAStQ,EAAKC,EAAKtzG,EAAMgrH,EAAiBC,EAGrD,OADZnkI,EAAIi0C,EAAO4lF,IACLuK,IAAqB,MAAPpkI,EAAEqkI,GAAoB,MAAPrkI,EAAEskI,GACjC/X,EAAM,EACNC,EAAM,EAMNyX,EAAWpwI,GACPmM,EAAEokI,GACFnwF,EAAO8lF,GAAGC,IACViD,GAAWsH,KAAe,EAAG,GAAG5kI,MAEpC2sH,EAAOz4H,GAASmM,EAAEqkI,EAAG,KACrBxH,EAAUhpI,GAASmM,EAAEskI,EAAG,IACV,GAAKzH,EAAU,KACzBqH,GAAkB,KAGtB3X,EAAMt4E,EAAO6gF,QAAQ0P,MAAMjY,IAC3BC,EAAMv4E,EAAO6gF,QAAQ0P,MAAMhY,IAE3B2X,EAAUlH,GAAWsH,KAAehY,EAAKC,GAEzCyX,EAAWpwI,GAASmM,EAAEykI,GAAIxwF,EAAO8lF,GAAGC,IAAOmK,EAAQxkI,MAGnD2sH,EAAOz4H,GAASmM,EAAEA,EAAGmkI,EAAQ7X,MAElB,MAAPtsH,EAAEpE,IAEFihI,EAAU78H,EAAEpE,GACE,GAAKihI,EAAU,KACzBqH,GAAkB,GAER,MAAPlkI,EAAEzV,GAETsyI,EAAU78H,EAAEzV,EAAIgiI,GACZvsH,EAAEzV,EAAI,GAAKyV,EAAEzV,EAAI,KACjB25I,GAAkB,IAItBrH,EAAUtQ,GAGdD,EAAO,GAAKA,EAAO8Q,GAAY6G,EAAU1X,EAAKC,GAC9CoG,EAAgB3+E,GAAQ6sF,gBAAiB,EACf,MAAnBoD,EACPtR,EAAgB3+E,GAAQ8sF,kBAAmB,GAE3C7nH,EAAO0jH,GAAmBqH,EAAU3X,EAAMuQ,EAAStQ,EAAKC,GACxDv4E,EAAO8lF,GAAGC,IAAQ9gH,EAAKvZ,KACvBs0C,EAAOywF,WAAaxrH,EAAK8jH,UAEjC,CApIQ2H,CAAsB1wF,GAID,MAArBA,EAAOywF,aACPb,EAAYhwI,GAASogD,EAAO8lF,GAAGC,IAAO2J,EAAY3J,MAG9C/lF,EAAOywF,WAAavI,GAAW0H,IACT,IAAtB5vF,EAAOywF,cAEP9R,EAAgB3+E,GAAQ4sF,oBAAqB,GAGjDnhI,EAAO88H,GAAcqH,EAAW,EAAG5vF,EAAOywF,YAC1CzwF,EAAO8lF,GAAGE,IAASv6H,EAAKsmG,cACxB/xD,EAAO8lF,GAAGG,IAAQx6H,EAAKumG,cAQtBh4G,EAAI,EAAGA,EAAI,GAAqB,MAAhBgmD,EAAO8lF,GAAG9rI,KAAcA,EACzCgmD,EAAO8lF,GAAG9rI,GAAKqlB,EAAMrlB,GAAK01I,EAAY11I,GAI1C,KAAOA,EAAI,EAAGA,IACVgmD,EAAO8lF,GAAG9rI,GAAKqlB,EAAMrlB,GACD,MAAhBgmD,EAAO8lF,GAAG9rI,GAAoB,IAANA,EAAU,EAAI,EAAKgmD,EAAO8lF,GAAG9rI,GAKrC,KAApBgmD,EAAO8lF,GAAGI,KACY,IAAtBlmF,EAAO8lF,GAAGK,KACY,IAAtBnmF,EAAO8lF,GAAGM,KACiB,IAA3BpmF,EAAO8lF,GAAGO,MAEVrmF,EAAO2wF,UAAW,EAClB3wF,EAAO8lF,GAAGI,IAAQ,GAGtBlmF,EAAOgG,IAAMhG,EAAO8vF,QAAUvH,GAAgBF,IAAY7hI,MACtD,KACA6Y,GAEJswH,EAAkB3vF,EAAO8vF,QACnB9vF,EAAOgG,GAAGisD,YACVjyD,EAAOgG,GAAGr4C,SAIG,MAAfqyC,EAAO0gF,MACP1gF,EAAOgG,GAAGwpF,cAAcxvF,EAAOgG,GAAGmsD,gBAAkBnyD,EAAO0gF,MAG3D1gF,EAAO2wF,WACP3wF,EAAO8lF,GAAGI,IAAQ,IAKlBlmF,EAAO4lF,SACgB,IAAhB5lF,EAAO4lF,GAAGj+H,GACjBq4C,EAAO4lF,GAAGj+H,IAAMgoI,IAEhBhR,EAAgB3+E,GAAQy/E,iBAAkB,EA3E9C,CA6EJ,CAsEA,SAAS8O,GAA0BvuF,GAE/B,GAAIA,EAAOwgF,KAAOzwG,EAAM6gH,SAIxB,GAAI5wF,EAAOwgF,KAAOzwG,EAAM8gH,SAAxB,CAIA7wF,EAAO8lF,GAAK,GACZnH,EAAgB3+E,GAAQl1B,OAAQ,EAGhC,IACI9wB,EACAk1I,EACAlrH,EACA+C,EACA+pH,EAGAvR,EACAmG,EATA92G,EAAS,GAAKoxB,EAAO3nC,GAMrB04H,EAAeniH,EAAOp3B,OACtBw5I,EAAyB,EAO7B,IADAtL,GAFA1hH,EACIw+G,EAAaxiF,EAAOwgF,GAAIxgF,EAAO6gF,SAASlnI,MAAMqoI,IAAqB,IACrDxqI,OACbwC,EAAI,EAAGA,EAAI0rI,EAAU1rI,IACtB+sB,EAAQ/C,EAAOhqB,IACfk1I,GAAetgH,EAAOj1B,MAAMwrI,GAAsBp+G,EAAOi5B,KACrD,IAAI,OAEJ8wF,EAAUliH,EAAOyjC,OAAO,EAAGzjC,EAAO3a,QAAQi7H,KAC9B13I,OAAS,GACjBmnI,EAAgB3+E,GAAQ8+E,YAAY72H,KAAK6oI,GAE7CliH,EAASA,EAAOtmB,MACZsmB,EAAO3a,QAAQi7H,GAAeA,EAAY13I,QAE9Cw5I,GAA0B9B,EAAY13I,QAGtC2qI,EAAqBp7G,IACjBmoH,EACAvQ,EAAgB3+E,GAAQl1B,OAAQ,EAEhC6zG,EAAgB3+E,GAAQ6+E,aAAa52H,KAAK8e,GAE9C8+G,GAAwB9+G,EAAOmoH,EAAalvF,IACrCA,EAAO8/E,UAAYoP,GAC1BvQ,EAAgB3+E,GAAQ6+E,aAAa52H,KAAK8e,GAKlD43G,EAAgB3+E,GAAQ++E,cACpBgS,EAAeC,EACfpiH,EAAOp3B,OAAS,GAChBmnI,EAAgB3+E,GAAQ8+E,YAAY72H,KAAK2mB,GAKzCoxB,EAAO8lF,GAAGI,KAAS,KACiB,IAApCvH,EAAgB3+E,GAAQ+/E,SACxB//E,EAAO8lF,GAAGI,IAAQ,IAElBvH,EAAgB3+E,GAAQ+/E,aAAUl6H,GAGtC84H,EAAgB3+E,GAAQs/E,gBAAkBt/E,EAAO8lF,GAAGx9H,MAAM,GAC1Dq2H,EAAgB3+E,GAAQrwC,SAAWqwC,EAAOurF,UAE1CvrF,EAAO8lF,GAAGI,IAgBd,SAAyB35H,EAAQusH,EAAMnpH,GACnC,IAAIshI,EAEJ,OAAgB,MAAZthI,EAEOmpH,EAEgB,MAAvBvsH,EAAOstH,aACAttH,EAAOstH,aAAaf,EAAMnpH,GACX,MAAfpD,EAAOirH,OAEdyZ,EAAO1kI,EAAOirH,KAAK7nH,KACPmpH,EAAO,KACfA,GAAQ,IAEPmY,GAAiB,KAATnY,IACTA,EAAO,GAEJA,GAGAA,CAEf,CAvCsBoY,CACdlxF,EAAO6gF,QACP7gF,EAAO8lF,GAAGI,IACVlmF,EAAOurF,WAKC,QADZhM,EAAMZ,EAAgB3+E,GAAQu/E,OAE1Bv/E,EAAO8lF,GAAGC,IAAQ/lF,EAAO6gF,QAAQsQ,gBAAgB5R,EAAKv/E,EAAO8lF,GAAGC,MAGpE0J,GAAgBzvF,GAChB2sF,GAAc3sF,EA9Ed,MAFI0uF,GAAkB1uF,QAJlBguF,GAAchuF,EAqFtB,CAqHA,SAASoxF,GAAcpxF,GACnB,IAAI3gC,EAAQ2gC,EAAO3nC,GACf5I,EAASuwC,EAAOwgF,GAIpB,OAFAxgF,EAAO6gF,QAAU7gF,EAAO6gF,SAAWvlC,GAAUt7C,EAAOygF,IAEtC,OAAVphH,QAA8BxZ,IAAX4J,GAAkC,KAAV4P,EACpC4gH,EAAc,CAAEjB,WAAW,KAGjB,iBAAV3/G,IACP2gC,EAAO3nC,GAAKgH,EAAQ2gC,EAAO6gF,QAAQ3H,SAAS75G,IAG5C2hH,EAAS3hH,GACF,IAAIyhH,EAAO6L,GAActtH,KACzBi/G,EAAOj/G,GACd2gC,EAAOgG,GAAK3mC,EACLlsB,EAAQsc,GA3GvB,SAAkCuwC,GAC9B,IAAIqxF,EACAC,EACAC,EACAv3I,EACAw3I,EACAC,EACAC,GAAoB,EACpBC,EAAa3xF,EAAOwgF,GAAGhpI,OAE3B,GAAmB,IAAfm6I,EAGA,OAFAhT,EAAgB3+E,GAAQm/E,eAAgB,OACxCn/E,EAAOgG,GAAK,IAAIh5C,KAAKC,MAIzB,IAAKjT,EAAI,EAAGA,EAAI23I,EAAY33I,IACxBw3I,EAAe,EACfC,GAAmB,EACnBJ,EAAahR,EAAW,CAAC,EAAGrgF,GACN,MAAlBA,EAAO8vF,UACPuB,EAAWvB,QAAU9vF,EAAO8vF,SAEhCuB,EAAW7Q,GAAKxgF,EAAOwgF,GAAGxmI,GAC1Bu0I,GAA0B8C,GAEtBhjI,EAAQgjI,KACRI,GAAmB,GAIvBD,GAAgB7S,EAAgB0S,GAAYtS,cAG5CyS,GAAkE,GAAlD7S,EAAgB0S,GAAYxS,aAAarnI,OAEzDmnI,EAAgB0S,GAAYO,MAAQJ,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpCl+I,EAAOwsD,EAAQsxF,GAAcD,EACjC,CAiDQQ,CAAyB7xF,GAClBvwC,EACP8+H,GAA0BvuF,GAYlC,SAAyBA,GACrB,IAAI3gC,EAAQ2gC,EAAO3nC,GACfgmH,EAAYh/G,GACZ2gC,EAAOgG,GAAK,IAAIh5C,KAAK+iB,EAAMgH,OACpBunG,EAAOj/G,GACd2gC,EAAOgG,GAAK,IAAIh5C,KAAKqS,EAAMtQ,WACH,iBAAVsQ,EAndtB,SAA0B2gC,GACtB,IAAIt9B,EAAU0qH,GAAgB3wH,KAAKujC,EAAO3nC,IAC1B,OAAZqK,GAKJsrH,GAAchuF,IACU,IAApBA,EAAO0/E,kBACA1/E,EAAO0/E,SAKlBgP,GAAkB1uF,IACM,IAApBA,EAAO0/E,kBACA1/E,EAAO0/E,SAKd1/E,EAAO8/E,QACP9/E,EAAO0/E,UAAW,EAGlB3vG,EAAM+hH,wBAAwB9xF,MAtB9BA,EAAOgG,GAAK,IAAIh5C,MAAM0V,EAAQ,GAwBtC,CAybQqvH,CAAiB/xF,GACV7sD,EAAQksB,IACf2gC,EAAO8lF,GAAKnrI,EAAI0kB,EAAM/W,MAAM,IAAI,SAAUxI,GACtC,OAAOwC,SAASxC,EAAK,GACzB,IACA2vI,GAAgBzvF,IACTqP,EAAShwC,GA1ExB,SAA0B2gC,GACtB,IAAIA,EAAOgG,GAAX,CAIA,IAAIhsD,EAAIipI,EAAqBjjF,EAAO3nC,IAChC25H,OAAsBnsI,IAAV7L,EAAEy/H,IAAoBz/H,EAAEyR,KAAOzR,EAAEy/H,IACjDz5E,EAAO8lF,GAAKnrI,EACR,CAACX,EAAE0R,KAAM1R,EAAE2R,MAAOqmI,EAAWh4I,EAAE8+H,KAAM9+H,EAAE++H,OAAQ/+H,EAAE6d,OAAQ7d,EAAEi4I,cAC3D,SAAUnyI,GACN,OAAOA,GAAOwC,SAASxC,EAAK,GAChC,IAGJ2vI,GAAgBzvF,EAXhB,CAYJ,CA4DQkyF,CAAiBlyF,GACVnH,EAASx5B,GAEhB2gC,EAAOgG,GAAK,IAAIh5C,KAAKqS,GAErB0Q,EAAM+hH,wBAAwB9xF,EAEtC,CA/BQmyF,CAAgBnyF,GAGf3xC,EAAQ2xC,KACTA,EAAOgG,GAAK,MAGThG,GACX,CAyBA,SAAS0+E,GAAiBr/G,EAAO5P,EAAQlD,EAAQkyH,EAAQlsB,GACrD,IAnEIsR,EAmEAn8G,EAAI,CAAC,EA2BT,OAzBe,IAAX+H,IAA8B,IAAXA,IACnBgvH,EAAShvH,EACTA,OAAS5J,IAGE,IAAX0G,IAA8B,IAAXA,IACnBkyH,EAASlyH,EACTA,OAAS1G,IAIRwpD,EAAShwC,IAAU8+G,EAAc9+G,IACjClsB,EAAQksB,IAA2B,IAAjBA,EAAM7nB,UAEzB6nB,OAAQxZ,GAIZ6B,EAAE64H,kBAAmB,EACrB74H,EAAEooI,QAAUpoI,EAAEi5H,OAASpuB,EACvB7qG,EAAE+4H,GAAKl0H,EACP7E,EAAE2Q,GAAKgH,EACP3X,EAAE84H,GAAK/wH,EACP/H,EAAEo4H,QAAUrB,GA5FR5a,EAAM,IAAIid,EAAO6L,GAAcyE,GA8FX1pI,MA7FhBipI,WAEJ9sB,EAAIh4G,IAAI,EAAG,KACXg4G,EAAI8sB,cAAW9qI,GAGZg+G,CAwFX,CAEA,SAASysB,GAAYjxH,EAAO5P,EAAQlD,EAAQkyH,GACxC,OAAOC,GAAiBr/G,EAAO5P,EAAQlD,EAAQkyH,GAAQ,EAC3D,CAxeA1uG,EAAM+hH,wBAA0B5Q,EAC5B,iSAGA,SAAUlhF,GACNA,EAAOgG,GAAK,IAAIh5C,KAAKgzC,EAAO3nC,IAAM2nC,EAAO8vF,QAAU,OAAS,IAChE,IAsLJ//G,EAAM6gH,SAAW,WAAa,EAG9B7gH,EAAM8gH,SAAW,WAAa,EA2S9B,IAAIuB,GAAelR,EACX,sGACA,WACI,IAAImR,EAAQ/B,GAAY9pI,MAAM,KAAMC,WACpC,OAAI1T,KAAKsb,WAAagkI,EAAMhkI,UACjBgkI,EAAQt/I,KAAOA,KAAOs/I,EAEtBpS,GAEf,IAEJqS,GAAepR,EACX,sGACA,WACI,IAAImR,EAAQ/B,GAAY9pI,MAAM,KAAMC,WACpC,OAAI1T,KAAKsb,WAAagkI,EAAMhkI,UACjBgkI,EAAQt/I,KAAOA,KAAOs/I,EAEtBpS,GAEf,IAQR,SAASsS,GAAO37I,EAAI47I,GAChB,IAAI3uB,EAAK7pH,EAIT,GAHuB,IAAnBw4I,EAAQh7I,QAAgBrE,EAAQq/I,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQh7I,OACT,OAAO84I,KAGX,IADAzsB,EAAM2uB,EAAQ,GACTx4I,EAAI,EAAGA,EAAIw4I,EAAQh7I,SAAUwC,EACzBw4I,EAAQx4I,GAAGqU,YAAamkI,EAAQx4I,GAAGpD,GAAIitH,KACxCA,EAAM2uB,EAAQx4I,IAGtB,OAAO6pH,CACX,CAeA,IAII4uB,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eA0CJ,SAASC,GAASttI,GACd,IAAIg+H,EAAkBH,EAAqB79H,GACvCutI,EAAQvP,EAAgB13H,MAAQ,EAChCknI,EAAWxP,EAAgByP,SAAW,EACtC9nI,EAASq4H,EAAgBz3H,OAAS,EAClCmnI,EAAQ1P,EAAgB/K,MAAQ+K,EAAgB2P,SAAW,EAC3Dnd,EAAOwN,EAAgB3J,KAAO,EAC9BhC,EAAQ2L,EAAgBtK,MAAQ,EAChCpB,EAAU0L,EAAgBrK,QAAU,EACpCqS,EAAUhI,EAAgBvrH,QAAU,EACpCm7H,EAAe5P,EAAgB6O,aAAe,EAElDl/I,KAAK2sI,SAnDT,SAAyB33H,GACrB,IAAIlI,EAEA7F,EADAi5I,GAAiB,EAEjBC,EAAWT,GAASj7I,OACxB,IAAKqI,KAAOkI,EACR,GACIm2H,EAAWn2H,EAAGlI,MAEuB,IAAjCoU,GAAQnhB,KAAK2/I,GAAU5yI,IACZ,MAAVkI,EAAElI,IAAiB2C,MAAMuF,EAAElI,KAGhC,OAAO,EAIf,IAAK7F,EAAI,EAAGA,EAAIk5I,IAAYl5I,EACxB,GAAI+N,EAAE0qI,GAASz4I,IAAK,CAChB,GAAIi5I,EACA,OAAO,EAEPl2G,WAAWh1B,EAAE0qI,GAASz4I,OAASypI,EAAM17H,EAAE0qI,GAASz4I,OAChDi5I,GAAiB,EAEzB,CAGJ,OAAO,CACX,CAsBoBE,CAAgB/P,GAGhCrwI,KAAKqgJ,eACAJ,EACS,IAAV5H,EACU,IAAV1T,EACQ,IAARD,EAAe,GAAK,GAGxB1kI,KAAKsgJ,OAASzd,EAAe,EAARkd,EAIrB//I,KAAKugJ,SAAWvoI,EAAoB,EAAX6nI,EAAuB,GAARD,EAExC5/I,KAAK48B,MAAQ,CAAC,EAEd58B,KAAK8tI,QAAUvlC,KAEfvoG,KAAKwgJ,SACT,CAEA,SAASC,GAAW1zI,GAChB,OAAOA,aAAe4yI,EAC1B,CAEA,SAASe,GAASlgF,GACd,OAAIA,EAAS,GACyB,EAA3Bv9D,KAAK4M,OAAO,EAAI2wD,GAEhBv9D,KAAK4M,MAAM2wD,EAE1B,CAqBA,SAAS1+D,GAAOkyB,EAAO6vE,GACnBwrC,EAAer7G,EAAO,EAAG,GAAG,WACxB,IAAIlyB,EAAS9B,KAAKuY,YACdooI,EAAO,IAKX,OAJI7+I,EAAS,IACTA,GAAUA,EACV6+I,EAAO,KAGPA,EACA/R,KAAY9sI,EAAS,IAAK,GAC1B+hG,EACA+qC,IAAW9sI,EAAS,GAAI,EAEhC,GACJ,CAEAA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbmwI,GAAc,IAAKF,IACnBE,GAAc,KAAMF,IACpBW,GAAc,CAAC,IAAK,OAAO,SAAUpmH,EAAO3K,EAAOsrC,GAC/CA,EAAO8vF,SAAU,EACjB9vF,EAAO0gF,KAAOiT,GAAiB7O,GAAkBzlH,EACrD,IAOA,IAAIu0H,GAAc,kBAElB,SAASD,GAAiBhxH,EAASiM,GAC/B,IAEIsR,EACAw3F,EAHA3/G,GAAW6W,GAAU,IAAIj1B,MAAMgpB,GAKnC,OAAgB,OAAZ5K,EACO,KAOQ,KAFnB2/G,EAAuB,IADvBx3F,IADQnoB,EAAQA,EAAQvgB,OAAS,IAAM,IACtB,IAAImC,MAAMi6I,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAWnQ,EAAMvjG,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAaw3F,GAAWA,CAC7D,CAGA,SAASmc,GAAgBx0H,EAAO0vD,GAC5B,IAAI80C,EAAK5yG,EACT,OAAI89D,EAAM4xD,QACN9c,EAAM90C,EAAMnjE,QACZqF,GACK+vH,EAAS3hH,IAAUi/G,EAAOj/G,GACrBA,EAAMtQ,UACNuhI,GAAYjxH,GAAOtQ,WAAa80G,EAAI90G,UAE9C80G,EAAI79D,GAAG6vE,QAAQhS,EAAI79D,GAAGj3C,UAAYkC,GAClC8e,EAAMgxG,aAAald,GAAK,GACjBA,GAEAysB,GAAYjxH,GAAOwyF,OAElC,CAEA,SAASiiC,GAAc/rI,GAGnB,OAAQ/R,KAAK4M,MAAMmF,EAAEi+C,GAAGh1C,oBAC5B,CAyJA,SAAS+iI,KACL,QAAOhhJ,KAAKsb,WAAYtb,KAAK4tI,QAA2B,IAAjB5tI,KAAK6tI,OAChD,CArJA7wG,EAAMgxG,aAAe,WAAa,EAwJlC,IAAIiT,GAAc,wDAIdC,GACI,sKAER,SAASC,GAAe70H,EAAOxf,GAC3B,IAGI6zI,EACAt9H,EACA+9H,EA4FmBjwH,EAAMmuH,EACzBxuB,EAlGAz+G,EAAWia,EAEX1lB,EAAQ,KAkEZ,OA7DI65I,GAAWn0H,GACXja,EAAW,CACP6G,GAAIoT,EAAM+zH,cACVzrI,EAAG0X,EAAMg0H,MACTxoI,EAAGwU,EAAMi0H,SAENz6F,EAASx5B,KAAW7c,OAAO6c,IAClCja,EAAW,CAAC,EACRvF,EACAuF,EAASvF,IAAQwf,EAEjBja,EAAS4tI,cAAgB3zH,IAErB1lB,EAAQq6I,GAAYv3H,KAAK4C,KACjCq0H,EAAoB,MAAb/5I,EAAM,IAAc,EAAI,EAC/ByL,EAAW,CACPwF,EAAG,EACHjD,EAAG87H,EAAM9pI,EAAMssI,KAASyN,EACxB5qI,EAAG26H,EAAM9pI,EAAMusI,KAASwN,EACxB3rI,EAAG07H,EAAM9pI,EAAMwsI,KAAWuN,EAC1B71I,EAAG4lI,EAAM9pI,EAAMysI,KAAWsN,EAC1BznI,GAAIw3H,EAAMgQ,GAA8B,IAArB95I,EAAM0sI,MAAwBqN,KAE7C/5I,EAAQs6I,GAASx3H,KAAK4C,KAC9Bq0H,EAAoB,MAAb/5I,EAAM,IAAc,EAAI,EAC/ByL,EAAW,CACPwF,EAAGwpI,GAASz6I,EAAM,GAAI+5I,GACtB7oI,EAAGupI,GAASz6I,EAAM,GAAI+5I,GACtB3nI,EAAGqoI,GAASz6I,EAAM,GAAI+5I,GACtB/rI,EAAGysI,GAASz6I,EAAM,GAAI+5I,GACtB5qI,EAAGsrI,GAASz6I,EAAM,GAAI+5I,GACtB3rI,EAAGqsI,GAASz6I,EAAM,GAAI+5I,GACtB71I,EAAGu2I,GAASz6I,EAAM,GAAI+5I,KAEP,MAAZtuI,EAEPA,EAAW,CAAC,EAEQ,iBAAbA,IACN,SAAUA,GAAY,OAAQA,KAmDZ8e,EAhDfosH,GAAYlrI,EAASsN,MAgDA2/H,EA/CrB/B,GAAYlrI,EAASqN,IAFzB0hI,EAmDEjwH,EAAK7V,WAAagkI,EAAMhkI,WAI9BgkI,EAAQwB,GAAgBxB,EAAOnuH,GAC3BA,EAAKvV,SAAS0jI,GACdxuB,EAAMwwB,GAA0BnwH,EAAMmuH,KAEtCxuB,EAAMwwB,GAA0BhC,EAAOnuH,IACnC8uH,cAAgBnvB,EAAImvB,aACxBnvB,EAAI94G,QAAU84G,EAAI94G,QAGf84G,GAZI,CAAEmvB,aAAc,EAAGjoI,OAAQ,IA/ClC3F,EAAW,CAAC,GACH6G,GAAKkoI,EAAQnB,aACtB5tI,EAASyF,EAAIspI,EAAQppI,QAGzBqL,EAAM,IAAIs8H,GAASttI,GAEfouI,GAAWn0H,IAAU6+G,EAAW7+G,EAAO,aACvCjJ,EAAIyqH,QAAUxhH,EAAMwhH,SAGpB2S,GAAWn0H,IAAU6+G,EAAW7+G,EAAO,cACvCjJ,EAAIspH,SAAWrgH,EAAMqgH,UAGlBtpH,CACX,CAKA,SAASg+H,GAASE,EAAKZ,GAInB,IAAI7vB,EAAMywB,GAAOv3G,WAAWu3G,EAAI59I,QAAQ,IAAK,MAE7C,OAAQ8L,MAAMqhH,GAAO,EAAIA,GAAO6vB,CACpC,CAEA,SAASW,GAA0BnwH,EAAMmuH,GACrC,IAAIxuB,EAAM,CAAC,EAUX,OARAA,EAAI94G,OACAsnI,EAAM1mI,QAAUuY,EAAKvY,QAAyC,IAA9B0mI,EAAM3mI,OAASwY,EAAKxY,QACpDwY,EAAKtY,QAAQC,IAAIg4G,EAAI94G,OAAQ,KAAK2D,QAAQ2jI,MACxCxuB,EAAI94G,OAGV84G,EAAImvB,cAAgBX,GAASnuH,EAAKtY,QAAQC,IAAIg4G,EAAI94G,OAAQ,KAEnD84G,CACX,CAqBA,SAAS0wB,GAAYC,EAAW5uI,GAC5B,OAAO,SAAU3S,EAAKizE,GAClB,IAAS9mD,EAmBT,OAjBe,OAAX8mD,GAAoB1jE,OAAO0jE,KAC3Bo7D,EACI17H,EACA,YACIA,EACA,uDACAA,EAHJ,kGAOJwZ,EAAMnsB,EACNA,EAAMizE,EACNA,EAAS9mD,GAIbq1H,GAAY1hJ,KADNmhJ,GAAejhJ,EAAKizE,GACHsuE,GAChBzhJ,IACX,CACJ,CAEA,SAAS0hJ,GAAY/Y,EAAKt2H,EAAUsvI,EAAU3T,GAC1C,IAAIiS,EAAe5tI,EAASguI,cACxBxd,EAAO6d,GAASruI,EAASiuI,OACzBtoI,EAAS0oI,GAASruI,EAASkuI,SAE1B5X,EAAIrtH,YAKT0yH,EAA+B,MAAhBA,GAA8BA,EAEzCh2H,GACAu8H,GAAS5L,EAAKpsH,EAAIosH,EAAK,SAAW3wH,EAAS2pI,GAE3C9e,GACAkO,EAAMpI,EAAK,OAAQpsH,EAAIosH,EAAK,QAAU9F,EAAO8e,GAE7C1B,GACAtX,EAAI11E,GAAG6vE,QAAQ6F,EAAI11E,GAAGj3C,UAAYikI,EAAe0B,GAEjD3T,GACAhxG,EAAMgxG,aAAarF,EAAK9F,GAAQ7qH,GAExC,CA9FAmpI,GAAet9I,GAAK87I,GAAShgJ,UAC7BwhJ,GAAeS,QA/Xf,WACI,OAAOT,GAAejnI,IAC1B,EA4dA,IAAIpB,GAAM0oI,GAAY,EAAG,OACrB/kI,GAAW+kI,IAAa,EAAG,YAE/B,SAASK,GAASv1H,GACd,MAAwB,iBAAVA,GAAsBA,aAAiBnU,MACzD,CAGA,SAAS2pI,GAAcx1H,GACnB,OACI2hH,EAAS3hH,IACTi/G,EAAOj/G,IACPu1H,GAASv1H,IACTw5B,EAASx5B,IAiDjB,SAA+BA,GAC3B,IAAIy1H,EAAY3hJ,EAAQksB,GACpB01H,GAAe,EAOnB,OANID,IACAC,EAGkB,IAFd11H,EAAMxlB,QAAO,SAAUmb,GACnB,OAAQ6jC,EAAS7jC,IAAS4/H,GAASv1H,EACvC,IAAG7nB,QAEJs9I,GAAaC,CACxB,CA1DQC,CAAsB31H,IAO9B,SAA6BA,GACzB,IA4BIrlB,EACAi2D,EA7BAglF,EAAa5lF,EAAShwC,KAAW8+G,EAAc9+G,GAC/C61H,GAAe,EACfrzG,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIJszG,EAActzG,EAAWrqC,OAE7B,IAAKwC,EAAI,EAAGA,EAAIm7I,EAAan7I,GAAK,EAC9Bi2D,EAAWpuB,EAAW7nC,GACtBk7I,EAAeA,GAAgBhX,EAAW7+G,EAAO4wC,GAGrD,OAAOglF,GAAcC,CACzB,CA7CQE,CAAoB/1H,IALpB2hH,MAMA3hH,CAGR,CAsPA,SAASg2H,GAAU54I,EAAGE,GAClB,GAAIF,EAAEgP,OAAS9O,EAAE8O,OAGb,OAAQ4pI,GAAU14I,EAAGF,GAGzB,IAAI64I,EAAyC,IAAvB34I,EAAE+O,OAASjP,EAAEiP,SAAgB/O,EAAEgP,QAAUlP,EAAEkP,SAE7D4pI,EAAS94I,EAAEmP,QAAQC,IAAIypI,EAAgB,UAe3C,QAASA,GAXL34I,EAAI44I,EAAS,GAGH54I,EAAI44I,IAAWA,EAFf94I,EAAEmP,QAAQC,IAAIypI,EAAiB,EAAG,YAMlC34I,EAAI44I,IAFJ94I,EAAEmP,QAAQC,IAAIypI,EAAiB,EAAG,UAETC,MAIF,CACzC,CAkHA,SAAShpI,GAAO1M,GACZ,IAAI21I,EAEJ,YAAY3vI,IAARhG,EACO9M,KAAK8tI,QAAQwL,OAGC,OADrBmJ,EAAgBl6C,GAAUz7F,MAEtB9M,KAAK8tI,QAAU2U,GAEZziJ,KAEf,CA5HAg9B,EAAM0lH,cAAgB,uBACtB1lH,EAAM2lH,iBAAmB,yBA6HzB,IAAI7yH,GAAOq+G,EACP,mJACA,SAAUrhI,GACN,YAAYgG,IAARhG,EACO9M,KAAKuvI,aAELvvI,KAAKwZ,OAAO1M,EAE3B,IAGJ,SAASyiI,KACL,OAAOvvI,KAAK8tI,OAChB,CAEA,IAAI8U,GAAgB,IAChBC,GAAgB,IAChBC,GAAc,KACdC,GAAmB,YAGvB,SAASC,GAAMC,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,CAC9C,CAEA,SAASC,GAAiBtrI,EAAG7C,EAAGJ,GAE5B,OAAIiD,EAAI,KAAOA,GAAK,EAET,IAAIoC,KAAKpC,EAAI,IAAK7C,EAAGJ,GAAKmuI,GAE1B,IAAI9oI,KAAKpC,EAAG7C,EAAGJ,GAAGoH,SAEjC,CAEA,SAASonI,GAAevrI,EAAG7C,EAAGJ,GAE1B,OAAIiD,EAAI,KAAOA,GAAK,EAEToC,KAAKG,IAAIvC,EAAI,IAAK7C,EAAGJ,GAAKmuI,GAE1B9oI,KAAKG,IAAIvC,EAAG7C,EAAGJ,EAE9B,CAkbA,SAASyuI,GAAalR,EAAU34H,GAC5B,OAAOA,EAAO8pI,cAAcnR,EAChC,CAcA,SAASoR,KACL,IAIIt8I,EACAC,EALAs8I,EAAa,GACbC,EAAa,GACbC,EAAe,GACf5O,EAAc,GAGd1L,EAAOppI,KAAKopI,OAEhB,IAAKniI,EAAI,EAAGC,EAAIkiI,EAAK3kI,OAAQwC,EAAIC,IAAKD,EAClCw8I,EAAWvuI,KAAKm9H,GAAYjJ,EAAKniI,GAAG4L,OACpC2wI,EAAWtuI,KAAKm9H,GAAYjJ,EAAKniI,GAAGsiI,OACpCma,EAAaxuI,KAAKm9H,GAAYjJ,EAAKniI,GAAGqiI,SAEtCwL,EAAY5/H,KAAKm9H,GAAYjJ,EAAKniI,GAAG4L,OACrCiiI,EAAY5/H,KAAKm9H,GAAYjJ,EAAKniI,GAAGsiI,OACrCuL,EAAY5/H,KAAKm9H,GAAYjJ,EAAKniI,GAAGqiI,SAGzCtpI,KAAK2jJ,WAAa,IAAI38I,OAAO,KAAO8tI,EAAY18H,KAAK,KAAO,IAAK,KACjEpY,KAAK4jJ,eAAiB,IAAI58I,OAAO,KAAOy8I,EAAWrrI,KAAK,KAAO,IAAK,KACpEpY,KAAK6jJ,eAAiB,IAAI78I,OAAO,KAAOw8I,EAAWprI,KAAK,KAAO,IAAK,KACpEpY,KAAK8jJ,iBAAmB,IAAI98I,OACxB,KAAO08I,EAAatrI,KAAK,KAAO,IAChC,IAER,CAYA,SAAS2rI,GAAuB/vH,EAAOoe,GACnCi9F,EAAe,EAAG,CAACr7G,EAAOA,EAAMvvB,QAAS,EAAG2tC,EAChD,CAiFA,SAAS4xG,GAAqB13H,EAAOg5G,EAAMuQ,EAAStQ,EAAKC,GACrD,IAAIye,EACJ,OAAa,MAAT33H,EACO2pH,GAAWj2I,KAAMulI,EAAKC,GAAK7sH,MAG9B2sH,GADJ2e,EAAc7N,GAAY9pH,EAAOi5G,EAAKC,MAElCF,EAAO2e,GAEJC,GAAWnkJ,KAAKC,KAAMssB,EAAOg5G,EAAMuQ,EAAStQ,EAAKC,GAEhE,CAEA,SAAS0e,GAAWjH,EAAU3X,EAAMuQ,EAAStQ,EAAKC,GAC9C,IAAI2e,EAAgBvO,GAAmBqH,EAAU3X,EAAMuQ,EAAStQ,EAAKC,GACjE9sH,EAAO88H,GAAc2O,EAAcxrI,KAAM,EAAGwrI,EAAcnO,WAK9D,OAHAh2I,KAAK2Y,KAAKD,EAAKqmG,kBACf/+G,KAAK4Y,MAAMF,EAAKsmG,eAChBh/G,KAAK0Y,KAAKA,EAAKumG,cACRj/G,IACX,CAzYAqvI,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpC4C,GAAc,IAAKoR,IACnBpR,GAAc,KAAMoR,IACpBpR,GAAc,MAAOoR,IACrBpR,GAAc,QAiOd,SAAsBE,EAAU34H,GAC5B,OAAOA,EAAO4qI,cAAcjS,EAChC,IAlOAF,GAAc,SAoOd,SAAwBE,EAAU34H,GAC9B,OAAOA,EAAO6qI,gBAAgBlS,EAClC,IApOAO,GACI,CAAC,IAAK,KAAM,MAAO,OAAQ,UAC3B,SAAUpmH,EAAO3K,EAAOsrC,EAAQj5B,GAC5B,IAAIw4G,EAAMv/E,EAAO6gF,QAAQwW,UAAUh4H,EAAO0H,EAAOi5B,EAAO8/E,SACpDP,EACAZ,EAAgB3+E,GAAQu/E,IAAMA,EAE9BZ,EAAgB3+E,GAAQi/E,WAAa5/G,CAE7C,IAGJ2lH,GAAc,IAAKL,IACnBK,GAAc,KAAML,IACpBK,GAAc,MAAOL,IACrBK,GAAc,OAAQL,IACtBK,GAAc,MAsNd,SAA6BE,EAAU34H,GACnC,OAAOA,EAAO+qI,sBAAwB3S,EAC1C,IAtNAc,GAAc,CAAC,IAAK,KAAM,MAAO,QAASM,IAC1CN,GAAc,CAAC,OAAO,SAAUpmH,EAAO3K,EAAOsrC,EAAQj5B,GAClD,IAAIptB,EACAqmD,EAAO6gF,QAAQyW,uBACf39I,EAAQ0lB,EAAM1lB,MAAMqmD,EAAO6gF,QAAQyW,uBAGnCt3F,EAAO6gF,QAAQrE,oBACf9nH,EAAMqxH,IAAQ/lF,EAAO6gF,QAAQrE,oBAAoBn9G,EAAO1lB,GAExD+a,EAAMqxH,IAAQzjI,SAAS+c,EAAO,GAEtC,IA0OA+iH,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOrvI,KAAKi9I,WAAa,GAC7B,IAEA5N,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOrvI,KAAKwkJ,cAAgB,GAChC,IAMAT,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhCjU,EAAa,WAAY,MACzBA,EAAa,cAAe,MAI5BS,EAAgB,WAAY,GAC5BA,EAAgB,cAAe,GAI/B0B,GAAc,IAAKJ,IACnBI,GAAc,IAAKJ,IACnBI,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,OAAQP,GAAWN,IACjCa,GAAc,OAAQP,GAAWN,IACjCa,GAAc,QAASN,GAAWN,IAClCY,GAAc,QAASN,GAAWN,IAElCuB,GACI,CAAC,OAAQ,QAAS,OAAQ,UAC1B,SAAUtmH,EAAOg5G,EAAMr4E,EAAQj5B,GAC3BsxG,EAAKtxG,EAAMsrC,OAAO,EAAG,IAAMoxE,EAAMpkH,EACrC,IAGJsmH,GAAkB,CAAC,KAAM,OAAO,SAAUtmH,EAAOg5G,EAAMr4E,EAAQj5B,GAC3DsxG,EAAKtxG,GAASgJ,EAAMo4G,kBAAkB9oH,EAC1C,IAqEA+iH,EAAe,IAAK,EAAG,KAAM,WAI7BS,EAAa,UAAW,KAIxBS,EAAgB,UAAW,GAI3B0B,GAAc,IAAKhB,GACnByB,GAAc,KAAK,SAAUpmH,EAAO3K,GAChCA,EAAMsxH,IAA8B,GAApBvC,EAAMpkH,GAAS,EACnC,IAYA+iH,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCS,EAAa,OAAQ,KAGrBS,EAAgB,OAAQ,GAIxB0B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/Be,GAAc,MAAM,SAAUE,EAAU34H,GAEpC,OAAO24H,EACD34H,EAAOirI,yBAA2BjrI,EAAOkrI,cACzClrI,EAAOmrI,8BACjB,IAEAjS,GAAc,CAAC,IAAK,MAAOQ,IAC3BR,GAAc,MAAM,SAAUpmH,EAAO3K,GACjCA,EAAMuxH,IAAQxC,EAAMpkH,EAAM1lB,MAAM0qI,IAAW,GAC/C,IAIA,IAAIsT,GAAmB/T,EAAW,QAAQ,GAI1CxB,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CS,EAAa,YAAa,OAG1BS,EAAgB,YAAa,GAI7B0B,GAAc,MAAOR,IACrBQ,GAAc,OAAQd,IACtBuB,GAAc,CAAC,MAAO,SAAS,SAAUpmH,EAAO3K,EAAOsrC,GACnDA,EAAOywF,WAAahN,EAAMpkH,EAC9B,IAgBA+iH,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCS,EAAa,SAAU,KAIvBS,EAAgB,SAAU,IAI1B0B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/BwB,GAAc,CAAC,IAAK,MAAOU,IAI3B,IAAIyR,GAAehU,EAAW,WAAW,GAIzCxB,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCS,EAAa,SAAU,KAIvBS,EAAgB,SAAU,IAI1B0B,GAAc,IAAKX,IACnBW,GAAc,KAAMX,GAAWJ,GAC/BwB,GAAc,CAAC,IAAK,MAAOW,IAI3B,IA8CIr/G,GAAO8wH,GA9CPC,GAAelU,EAAW,WAAW,GA+CzC,IA3CAxB,EAAe,IAAK,EAAG,GAAG,WACtB,SAAUrvI,KAAKk/I,cAAgB,IACnC,IAEA7P,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,SAAUrvI,KAAKk/I,cAAgB,GACnC,IAEA7P,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAC9B,OAA4B,GAArBrvI,KAAKk/I,aAChB,IACA7P,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WAC/B,OAA4B,IAArBrvI,KAAKk/I,aAChB,IACA7P,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAChC,OAA4B,IAArBrvI,KAAKk/I,aAChB,IACA7P,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACjC,OAA4B,IAArBrvI,KAAKk/I,aAChB,IACA7P,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WAClC,OAA4B,IAArBrvI,KAAKk/I,aAChB,IACA7P,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACnC,OAA4B,IAArBrvI,KAAKk/I,aAChB,IAIApP,EAAa,cAAe,MAI5BS,EAAgB,cAAe,IAI/B0B,GAAc,IAAKR,GAAWR,GAC9BgB,GAAc,KAAMR,GAAWP,GAC/Be,GAAc,MAAOR,GAAWN,IAG3Bn9G,GAAQ,OAAQA,GAAMvvB,QAAU,EAAGuvB,IAAS,IAC7Ci+G,GAAcj+G,GAAO49G,IAGzB,SAASoT,GAAQ14H,EAAO3K,GACpBA,EAAM2xH,IAAe5C,EAAuB,KAAhB,KAAOpkH,GACvC,CAEA,IAAK0H,GAAQ,IAAKA,GAAMvvB,QAAU,EAAGuvB,IAAS,IAC1C0+G,GAAc1+G,GAAOgxH,IAGzBF,GAAoBjU,EAAW,gBAAgB,GAI/CxB,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAI7qH,GAAQupH,EAAOpuI,UAgHnB,SAASslJ,GAAmBppH,GACxB,OAAOA,CACX,CAhHArX,GAAM1L,IAAMA,GACZ0L,GAAMsgH,SAhoCN,SAAoBnzF,EAAM1yB,GAEG,IAArBvL,UAAUjP,SACLiP,UAAU,GAGJouI,GAAcpuI,UAAU,KAC/Bi+B,EAAOj+B,UAAU,GACjBuL,OAAUnM,GA/CtB,SAAwBwZ,GACpB,IAUIrlB,EAVAi7I,EAAa5lF,EAAShwC,KAAW8+G,EAAc9+G,GAC/C61H,GAAe,EACfrzG,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAK7nC,EAAI,EAAGA,EAAI6nC,EAAWrqC,OAAQwC,GAAK,EAEpCk7I,EAAeA,GAAgBhX,EAAW7+G,EAD/BwiB,EAAW7nC,IAI1B,OAAOi7I,GAAcC,CACzB,CA4BmB+C,CAAexxI,UAAU,MAChCuL,EAAUvL,UAAU,GACpBi+B,OAAO7+B,IAPP6+B,OAAO7+B,EACPmM,OAAUnM,IAWlB,IAAIkxB,EAAM2N,GAAQ4rG,KACd4H,EAAMrE,GAAgB98G,EAAKhkC,MAAMyb,QAAQ,OACzCiB,EAASsgB,EAAMooH,eAAeplJ,KAAMmlJ,IAAQ,WAC5C11F,EACIxwC,IACCzT,EAAWyT,EAAQvC,IACduC,EAAQvC,GAAQ3c,KAAKC,KAAMgkC,GAC3B/kB,EAAQvC,IAEtB,OAAO1c,KAAK0c,OACR+yC,GAAUzvD,KAAKuvI,aAAazK,SAASpoH,EAAQ1c,KAAMu9I,GAAYv5G,IAEvE,EAqmCAxf,GAAM3L,MAnmCN,WACI,OAAO,IAAIk1H,EAAO/tI,KACtB,EAkmCAwkB,GAAMtG,KA3hCN,SAAcoO,EAAOy9G,EAAOsb,GACxB,IAAI73I,EAAM83I,EAAW71F,EAErB,IAAKzvD,KAAKsb,UACN,OAAOpB,IAKX,KAFA1M,EAAOszI,GAAgBx0H,EAAOtsB,OAEpBsb,UACN,OAAOpB,IAOX,OAJAorI,EAAoD,KAAvC93I,EAAK+K,YAAcvY,KAAKuY,aAErCwxH,EAAQkG,EAAelG,IAGnB,IAAK,OACDt6E,EAAS6yF,GAAUtiJ,KAAMwN,GAAQ,GACjC,MACJ,IAAK,QACDiiD,EAAS6yF,GAAUtiJ,KAAMwN,GACzB,MACJ,IAAK,UACDiiD,EAAS6yF,GAAUtiJ,KAAMwN,GAAQ,EACjC,MACJ,IAAK,SACDiiD,GAAUzvD,KAAOwN,GAAQ,IACzB,MACJ,IAAK,SACDiiD,GAAUzvD,KAAOwN,GAAQ,IACzB,MACJ,IAAK,OACDiiD,GAAUzvD,KAAOwN,GAAQ,KACzB,MACJ,IAAK,MACDiiD,GAAUzvD,KAAOwN,EAAO83I,GAAa,MACrC,MACJ,IAAK,OACD71F,GAAUzvD,KAAOwN,EAAO83I,GAAa,OACrC,MACJ,QACI71F,EAASzvD,KAAOwN,EAGxB,OAAO63I,EAAU51F,EAASghF,EAAShhF,EACvC,EA6+BAjrC,GAAM9I,MAtuBN,SAAequH,GACX,IAAIp4F,EAAM4zG,EAEV,QAAczyI,KADdi3H,EAAQkG,EAAelG,KACc,gBAAVA,IAA4B/pI,KAAKsb,UACxD,OAAOtb,KAKX,OAFAulJ,EAAcvlJ,KAAK4tI,OAASwV,GAAiBD,GAErCpZ,GACJ,IAAK,OACDp4F,EAAO4zG,EAAYvlJ,KAAK2Y,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACDg5B,EACI4zG,EACIvlJ,KAAK2Y,OACL3Y,KAAK4Y,QAAW5Y,KAAK4Y,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACD+4B,EAAO4zG,EAAYvlJ,KAAK2Y,OAAQ3Y,KAAK4Y,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACD+4B,EACI4zG,EACIvlJ,KAAK2Y,OACL3Y,KAAK4Y,QACL5Y,KAAK0Y,OAAS1Y,KAAK61I,UAAY,GAC/B,EACR,MACJ,IAAK,UACDlkG,EACI4zG,EACIvlJ,KAAK2Y,OACL3Y,KAAK4Y,QACL5Y,KAAK0Y,QAAU1Y,KAAKwlJ,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACD7zG,EAAO4zG,EAAYvlJ,KAAK2Y,OAAQ3Y,KAAK4Y,QAAS5Y,KAAK0Y,OAAS,GAAK,EACjE,MACJ,IAAK,OACDi5B,EAAO3xC,KAAKizD,GAAGj3C,UACf21B,GACImxG,GACAE,GACIrxG,GAAQ3xC,KAAK4tI,OAAS,EAAI5tI,KAAKuY,YAAcsqI,IAC7CC,IAEJ,EACJ,MACJ,IAAK,SACDnxG,EAAO3xC,KAAKizD,GAAGj3C,UACf21B,GAAQkxG,GAAgBG,GAAMrxG,EAAMkxG,IAAiB,EACrD,MACJ,IAAK,SACDlxG,EAAO3xC,KAAKizD,GAAGj3C,UACf21B,GAAQixG,GAAgBI,GAAMrxG,EAAMixG,IAAiB,EAM7D,OAFA5iJ,KAAKizD,GAAG6vE,QAAQnxF,GAChB3U,EAAMgxG,aAAahuI,MAAM,GAClBA,IACX,EAoqBAwkB,GAAM9H,OAh5BN,SAAgB+oI,GACPA,IACDA,EAAczlJ,KAAKghJ,QACbhkH,EAAM2lH,iBACN3lH,EAAM0lH,eAEhB,IAAIjzF,EAAS+/E,EAAaxvI,KAAMylJ,GAChC,OAAOzlJ,KAAKuvI,aAAatJ,WAAWx2E,EACxC,EAy4BAjrC,GAAM7E,KAv4BN,SAAcgyB,EAAMi0F,GAChB,OACI5lI,KAAKsb,YACH2yH,EAASt8F,IAASA,EAAKr2B,WAAciiI,GAAY5rG,GAAMr2B,WAElD6lI,GAAe,CAAEzhI,GAAI1f,KAAM2f,KAAMgyB,IACnCn4B,OAAOxZ,KAAKwZ,UACZksI,UAAU9f,GAER5lI,KAAKuvI,aAAa5yH,aAEjC,EA63BA6H,GAAM3E,QA33BN,SAAiB+lH,GACb,OAAO5lI,KAAK2f,KAAK49H,KAAe3X,EACpC,EA03BAphH,GAAM9E,GAx3BN,SAAYiyB,EAAMi0F,GACd,OACI5lI,KAAKsb,YACH2yH,EAASt8F,IAASA,EAAKr2B,WAAciiI,GAAY5rG,GAAMr2B,WAElD6lI,GAAe,CAAExhI,KAAM3f,KAAM0f,GAAIiyB,IACnCn4B,OAAOxZ,KAAKwZ,UACZksI,UAAU9f,GAER5lI,KAAKuvI,aAAa5yH,aAEjC,EA82BA6H,GAAM5E,MA52BN,SAAegmH,GACX,OAAO5lI,KAAK0f,GAAG69H,KAAe3X,EAClC,EA22BAphH,GAAMjI,IA9jIN,SAAmBwtH,GAEf,OAAIv+H,EAAWxL,KADf+pI,EAAQkG,EAAelG,KAEZ/pI,KAAK+pI,KAET/pI,IACX,EAyjIAwkB,GAAMmhI,UArnBN,WACI,OAAO/Z,EAAgB5rI,MAAMowC,QACjC,EAonBA5rB,GAAM7I,QAzmCN,SAAiB2Q,EAAOy9G,GACpB,IAAI6b,EAAa3X,EAAS3hH,GAASA,EAAQixH,GAAYjxH,GACvD,SAAMtsB,KAAKsb,YAAasqI,EAAWtqI,aAIrB,iBADdyuH,EAAQkG,EAAelG,IAAU,eAEtB/pI,KAAKgc,UAAY4pI,EAAW5pI,UAE5B4pI,EAAW5pI,UAAYhc,KAAK6Y,QAAQ4C,QAAQsuH,GAAO/tH,UAElE,EA+lCAwI,GAAM5I,SA7lCN,SAAkB0Q,EAAOy9G,GACrB,IAAI6b,EAAa3X,EAAS3hH,GAASA,EAAQixH,GAAYjxH,GACvD,SAAMtsB,KAAKsb,YAAasqI,EAAWtqI,aAIrB,iBADdyuH,EAAQkG,EAAelG,IAAU,eAEtB/pI,KAAKgc,UAAY4pI,EAAW5pI,UAE5Bhc,KAAK6Y,QAAQ6C,MAAMquH,GAAO/tH,UAAY4pI,EAAW5pI,UAEhE,EAmlCAwI,GAAMqhI,UAjlCN,SAAmBlmI,EAAMD,EAAIqqH,EAAO+b,GAChC,IAAIC,EAAY9X,EAAStuH,GAAQA,EAAO49H,GAAY59H,GAChDqmI,EAAU/X,EAASvuH,GAAMA,EAAK69H,GAAY79H,GAC9C,SAAM1f,KAAKsb,WAAayqI,EAAUzqI,WAAa0qI,EAAQ1qI,aAK/B,OAFxBwqI,EAAcA,GAAe,MAEZ,GACP9lJ,KAAK2b,QAAQoqI,EAAWhc,IACvB/pI,KAAK4b,SAASmqI,EAAWhc,MACZ,MAAnB+b,EAAY,GACP9lJ,KAAK4b,SAASoqI,EAASjc,IACtB/pI,KAAK2b,QAAQqqI,EAASjc,GAErC,EAmkCAvlH,GAAMhJ,OAjkCN,SAAgB8Q,EAAOy9G,GACnB,IACIkc,EADAL,EAAa3X,EAAS3hH,GAASA,EAAQixH,GAAYjxH,GAEvD,SAAMtsB,KAAKsb,YAAasqI,EAAWtqI,aAIrB,iBADdyuH,EAAQkG,EAAelG,IAAU,eAEtB/pI,KAAKgc,YAAc4pI,EAAW5pI,WAErCiqI,EAAUL,EAAW5pI,UAEjBhc,KAAK6Y,QAAQ4C,QAAQsuH,GAAO/tH,WAAaiqI,GACzCA,GAAWjmJ,KAAK6Y,QAAQ6C,MAAMquH,GAAO/tH,WAGjD,EAkjCAwI,GAAM0hI,cAhjCN,SAAuB55H,EAAOy9G,GAC1B,OAAO/pI,KAAKwb,OAAO8Q,EAAOy9G,IAAU/pI,KAAK2b,QAAQ2Q,EAAOy9G,EAC5D,EA+iCAvlH,GAAM2hI,eA7iCN,SAAwB75H,EAAOy9G,GAC3B,OAAO/pI,KAAKwb,OAAO8Q,EAAOy9G,IAAU/pI,KAAK4b,SAAS0Q,EAAOy9G,EAC7D,EA4iCAvlH,GAAMlJ,QApoBN,WACI,OAAOA,EAAQtb,KACnB,EAmoBAwkB,GAAMsL,KAAOA,GACbtL,GAAMhL,OAASA,GACfgL,GAAM+qH,WAAaA,GACnB/qH,GAAMthB,IAAMq8I,GACZ/6H,GAAM3N,IAAMwoI,GACZ76H,GAAM4hI,aAtoBN,WACI,OAAO3lJ,EAAO,CAAC,EAAGmrI,EAAgB5rI,MACtC,EAqoBAwkB,GAAM1I,IArkIN,SAAmBiuH,EAAOhjI,GACtB,GAAqB,iBAAVgjI,EAAoB,CAE3B,IACI9iI,EADAo/I,EAzFZ,SAA6BC,GACzB,IACIl7I,EADA2+H,EAAQ,GAEZ,IAAK3+H,KAAKk7I,EACFnb,EAAWmb,EAAUl7I,IACrB2+H,EAAM70H,KAAK,CAAEopB,KAAMlzB,EAAGoxD,SAAU8zE,EAAWllI,KAMnD,OAHA2+H,EAAMr0H,MAAK,SAAUhM,EAAGE,GACpB,OAAOF,EAAE8yD,SAAW5yD,EAAE4yD,QAC1B,IACOutE,CACX,CA6E0Bwc,CADlBxc,EAAQmG,EAAqBnG,IAGzByc,EAAiBH,EAAY5hJ,OACjC,IAAKwC,EAAI,EAAGA,EAAIu/I,EAAgBv/I,IAC5BjH,KAAKqmJ,EAAYp/I,GAAGq3B,MAAMyrG,EAAMsc,EAAYp/I,GAAGq3B,MAEvD,MAEI,GAAI9yB,EAAWxL,KADf+pI,EAAQkG,EAAelG,KAEnB,OAAO/pI,KAAK+pI,GAAOhjI,GAG3B,OAAO/G,IACX,EAsjIAwkB,GAAM/I,QA3zBN,SAAiBsuH,GACb,IAAIp4F,EAAM4zG,EAEV,QAAczyI,KADdi3H,EAAQkG,EAAelG,KACc,gBAAVA,IAA4B/pI,KAAKsb,UACxD,OAAOtb,KAKX,OAFAulJ,EAAcvlJ,KAAK4tI,OAASwV,GAAiBD,GAErCpZ,GACJ,IAAK,OACDp4F,EAAO4zG,EAAYvlJ,KAAK2Y,OAAQ,EAAG,GACnC,MACJ,IAAK,UACDg5B,EAAO4zG,EACHvlJ,KAAK2Y,OACL3Y,KAAK4Y,QAAW5Y,KAAK4Y,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACD+4B,EAAO4zG,EAAYvlJ,KAAK2Y,OAAQ3Y,KAAK4Y,QAAS,GAC9C,MACJ,IAAK,OACD+4B,EAAO4zG,EACHvlJ,KAAK2Y,OACL3Y,KAAK4Y,QACL5Y,KAAK0Y,OAAS1Y,KAAK61I,WAEvB,MACJ,IAAK,UACDlkG,EAAO4zG,EACHvlJ,KAAK2Y,OACL3Y,KAAK4Y,QACL5Y,KAAK0Y,QAAU1Y,KAAKwlJ,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACD7zG,EAAO4zG,EAAYvlJ,KAAK2Y,OAAQ3Y,KAAK4Y,QAAS5Y,KAAK0Y,QACnD,MACJ,IAAK,OACDi5B,EAAO3xC,KAAKizD,GAAGj3C,UACf21B,GAAQqxG,GACJrxG,GAAQ3xC,KAAK4tI,OAAS,EAAI5tI,KAAKuY,YAAcsqI,IAC7CC,IAEJ,MACJ,IAAK,SACDnxG,EAAO3xC,KAAKizD,GAAGj3C,UACf21B,GAAQqxG,GAAMrxG,EAAMkxG,IACpB,MACJ,IAAK,SACDlxG,EAAO3xC,KAAKizD,GAAGj3C,UACf21B,GAAQqxG,GAAMrxG,EAAMixG,IAM5B,OAFA5iJ,KAAKizD,GAAG6vE,QAAQnxF,GAChB3U,EAAMgxG,aAAahuI,MAAM,GAClBA,IACX,EA+vBAwkB,GAAM/H,SAAWA,GACjB+H,GAAMvB,QA7qBN,WACI,IAAIjO,EAAIhV,KACR,MAAO,CACHgV,EAAE2D,OACF3D,EAAE4D,QACF5D,EAAE0D,OACF1D,EAAE+wH,OACF/wH,EAAEgxH,SACFhxH,EAAE8P,SACF9P,EAAEkqI,cAEV,EAmqBA16H,GAAMw4C,SAjqBN,WACI,IAAIhoD,EAAIhV,KACR,MAAO,CACH4/I,MAAO5qI,EAAE2D,OACTX,OAAQhD,EAAE4D,QACVF,KAAM1D,EAAE0D,OACRgsH,MAAO1vH,EAAE0vH,QACTC,QAAS3vH,EAAE2vH,UACX0T,QAASrjI,EAAEqjI,UACX4H,aAAcjrI,EAAEirI,eAExB,EAupBAz7H,GAAMtI,OAnrBN,WACI,OAAO,IAAIjC,KAAKja,KAAKgc,UACzB,EAkrBAwI,GAAMpG,YAp+BN,SAAqBqoI,GACjB,IAAKzmJ,KAAKsb,UACN,OAAO,KAEX,IAAI5B,GAAqB,IAAf+sI,EACNzxI,EAAI0E,EAAM1Z,KAAK6Y,QAAQa,MAAQ1Z,KACnC,OAAIgV,EAAE2D,OAAS,GAAK3D,EAAE2D,OAAS,KACpB62H,EACHx6H,EACA0E,EACM,iCACA,gCAGVlO,EAAWyO,KAAKta,UAAUye,aAEtB1E,EACO1Z,KAAKkc,SAASkC,cAEd,IAAInE,KAAKja,KAAKgc,UAA+B,GAAnBhc,KAAKuY,YAAmB,KACpD6F,cACAza,QAAQ,IAAK6rI,EAAax6H,EAAG,MAGnCw6H,EACHx6H,EACA0E,EAAM,+BAAiC,6BAE/C,EAy8BA8K,GAAM4xB,QAj8BN,WACI,IAAKp2C,KAAKsb,UACN,MAAO,qBAAuBtb,KAAKslB,GAAK,OAE5C,IAEI5T,EACAiH,EAEAq0B,EALA7U,EAAO,SACPuuH,EAAO,GAcX,OATK1mJ,KAAK82C,YACN3e,EAA4B,IAArBn4B,KAAKuY,YAAoB,aAAe,mBAC/CmuI,EAAO,KAEXh1I,EAAS,IAAMymB,EAAO,MACtBxf,EAAO,GAAK3Y,KAAK2Y,QAAU3Y,KAAK2Y,QAAU,KAAO,OAAS,SAC/C,wBACXq0B,EAAS05G,EAAO,OAET1mJ,KAAK0c,OAAOhL,EAASiH,EAHjB,wBAGmCq0B,EAClD,EA86BsB,oBAAX5nB,QAAwC,MAAdA,OAAM,MACvCZ,GAAMY,OAAM,IAAK,+BAAiC,WAC9C,MAAO,UAAYplB,KAAK0c,SAAW,GACvC,GAEJ8H,GAAMrG,OA7pBN,WAEI,OAAOne,KAAKsb,UAAYtb,KAAKoe,cAAgB,IACjD,EA2pBAoG,GAAMjJ,SAh/BN,WACI,OAAOvb,KAAK6Y,QAAQW,OAAO,MAAMkD,OAAO,mCAC5C,EA++BA8H,GAAMzI,KAjsBN,WACI,OAAO9Y,KAAKwV,MAAMzY,KAAKgc,UAAY,IACvC,EAgsBAwI,GAAMxI,QAtsBN,WACI,OAAOhc,KAAKizD,GAAGj3C,UAAkC,KAArBhc,KAAK6tI,SAAW,EAChD,EAqsBArpH,GAAMmiI,aAhpBN,WACI,MAAO,CACHr6H,MAAOtsB,KAAKslB,GACZ5I,OAAQ1c,KAAKytI,GACbj0H,OAAQxZ,KAAK8tI,QACbtuB,MAAOx/G,KAAK4tI,OACZlC,OAAQ1rI,KAAK+sI,QAErB,EAyoBAvoH,GAAMoiI,QAvgBN,WACI,IAAI3/I,EACAC,EACAhH,EACAkpI,EAAOppI,KAAKuvI,aAAanG,OAC7B,IAAKniI,EAAI,EAAGC,EAAIkiI,EAAK3kI,OAAQwC,EAAIC,IAAKD,EAAG,CAIrC,GAFA/G,EAAMF,KAAK6Y,QAAQ4C,QAAQ,OAAOO,UAE9BotH,EAAKniI,GAAGoiI,OAASnpI,GAAOA,GAAOkpI,EAAKniI,GAAGstB,MACvC,OAAO60G,EAAKniI,GAAG4L,KAEnB,GAAIu2H,EAAKniI,GAAGstB,OAASr0B,GAAOA,GAAOkpI,EAAKniI,GAAGoiI,MACvC,OAAOD,EAAKniI,GAAG4L,IAEvB,CAEA,MAAO,EACX,EAsfA2R,GAAMqiI,UApfN,WACI,IAAI5/I,EACAC,EACAhH,EACAkpI,EAAOppI,KAAKuvI,aAAanG,OAC7B,IAAKniI,EAAI,EAAGC,EAAIkiI,EAAK3kI,OAAQwC,EAAIC,IAAKD,EAAG,CAIrC,GAFA/G,EAAMF,KAAK6Y,QAAQ4C,QAAQ,OAAOO,UAE9BotH,EAAKniI,GAAGoiI,OAASnpI,GAAOA,GAAOkpI,EAAKniI,GAAGstB,MACvC,OAAO60G,EAAKniI,GAAGqiI,OAEnB,GAAIF,EAAKniI,GAAGstB,OAASr0B,GAAOA,GAAOkpI,EAAKniI,GAAGoiI,MACvC,OAAOD,EAAKniI,GAAGqiI,MAEvB,CAEA,MAAO,EACX,EAmeA9kH,GAAMsiI,QAjeN,WACI,IAAI7/I,EACAC,EACAhH,EACAkpI,EAAOppI,KAAKuvI,aAAanG,OAC7B,IAAKniI,EAAI,EAAGC,EAAIkiI,EAAK3kI,OAAQwC,EAAIC,IAAKD,EAAG,CAIrC,GAFA/G,EAAMF,KAAK6Y,QAAQ4C,QAAQ,OAAOO,UAE9BotH,EAAKniI,GAAGoiI,OAASnpI,GAAOA,GAAOkpI,EAAKniI,GAAGstB,MACvC,OAAO60G,EAAKniI,GAAGsiI,KAEnB,GAAIH,EAAKniI,GAAGstB,OAASr0B,GAAOA,GAAOkpI,EAAKniI,GAAGoiI,MACvC,OAAOD,EAAKniI,GAAGsiI,IAEvB,CAEA,MAAO,EACX,EAgdA/kH,GAAMuiI,QA9cN,WACI,IAAI9/I,EACAC,EACA+hB,EACA/oB,EACAkpI,EAAOppI,KAAKuvI,aAAanG,OAC7B,IAAKniI,EAAI,EAAGC,EAAIkiI,EAAK3kI,OAAQwC,EAAIC,IAAKD,EAMlC,GALAgiB,EAAMmgH,EAAKniI,GAAGoiI,OAASD,EAAKniI,GAAGstB,MAAQ,GAAM,EAG7Cr0B,EAAMF,KAAK6Y,QAAQ4C,QAAQ,OAAOO,UAG7BotH,EAAKniI,GAAGoiI,OAASnpI,GAAOA,GAAOkpI,EAAKniI,GAAGstB,OACvC60G,EAAKniI,GAAGstB,OAASr0B,GAAOA,GAAOkpI,EAAKniI,GAAGoiI,MAExC,OACKrpI,KAAK2Y,OAASqkB,EAAMosG,EAAKniI,GAAGoiI,OAAO1wH,QAAUsQ,EAC9CmgH,EAAKniI,GAAGnF,OAKpB,OAAO9B,KAAK2Y,MAChB,EAubA6L,GAAM7L,KAAO08H,GACb7wH,GAAMgsH,WAjlHN,WACI,OAAOA,EAAWxwI,KAAK2Y,OAC3B,EAglHA6L,GAAMy4H,SAjUN,SAAwB3wH,GACpB,OAAO03H,GAAqBjkJ,KACxBC,KACAssB,EACAtsB,KAAKslI,OACLtlI,KAAK61I,UACL71I,KAAKuvI,aAAaiO,MAAMjY,IACxBvlI,KAAKuvI,aAAaiO,MAAMhY,IAEhC,EAyTAhhH,GAAMggI,YAvTN,SAA2Bl4H,GACvB,OAAO03H,GAAqBjkJ,KACxBC,KACAssB,EACAtsB,KAAKggJ,UACLhgJ,KAAKwlJ,aACL,EACA,EAER,EA+SAhhI,GAAMs7H,QAAUt7H,GAAMq7H,SA/OtB,SAAuBvzH,GACnB,OAAgB,MAATA,EACDrpB,KAAK8V,MAAM/Y,KAAK4Y,QAAU,GAAK,GAC/B5Y,KAAK4Y,MAAoB,GAAb0T,EAAQ,GAAUtsB,KAAK4Y,QAAU,EACvD,EA4OA4L,GAAM5L,MAAQ67H,GACdjwH,GAAMlI,YAxuHN,WACI,OAAOA,GAAYtc,KAAK2Y,OAAQ3Y,KAAK4Y,QACzC,EAuuHA4L,GAAM8gH,KAAO9gH,GAAMu7H,MA37GnB,SAAoBzzH,GAChB,IAAIg5G,EAAOtlI,KAAKuvI,aAAajK,KAAKtlI,MAClC,OAAgB,MAATssB,EAAgBg5G,EAAOtlI,KAAK8Y,IAAqB,GAAhBwT,EAAQg5G,GAAW,IAC/D,EAy7GA9gH,GAAMw7H,QAAUx7H,GAAMwiI,SAv7GtB,SAAuB16H,GACnB,IAAIg5G,EAAO2Q,GAAWj2I,KAAM,EAAG,GAAGslI,KAClC,OAAgB,MAATh5G,EAAgBg5G,EAAOtlI,KAAK8Y,IAAqB,GAAhBwT,EAAQg5G,GAAW,IAC/D,EAq7GA9gH,GAAM4xH,YA1SN,WACI,IAAI6Q,EAAWjnJ,KAAKuvI,aAAaiO,MACjC,OAAOpH,GAAYp2I,KAAK2Y,OAAQsuI,EAAS1hB,IAAK0hB,EAASzhB,IAC3D,EAwSAhhH,GAAM0iI,gBAtSN,WACI,IAAID,EAAWjnJ,KAAKuvI,aAAaiO,MACjC,OAAOpH,GAAYp2I,KAAKi9I,WAAYgK,EAAS1hB,IAAK0hB,EAASzhB,IAC/D,EAoSAhhH,GAAM2iI,eApTN,WACI,OAAO/Q,GAAYp2I,KAAK2Y,OAAQ,EAAG,EACvC,EAmTA6L,GAAM4iI,sBAjTN,WACI,OAAOhR,GAAYp2I,KAAKwkJ,cAAe,EAAG,EAC9C,EAgTAhgI,GAAM9L,KAAOksI,GACbpgI,GAAMkiH,IAAMliH,GAAMq+G,KAzqGlB,SAAyBv2G,GACrB,IAAKtsB,KAAKsb,UACN,OAAgB,MAATgR,EAAgBtsB,KAAOka,IAElC,IAAIwsH,EAAM1mI,KAAK4tI,OAAS5tI,KAAKizD,GAAGisD,YAAcl/G,KAAKizD,GAAGr4C,SACtD,OAAa,MAAT0R,GACAA,EAxNR,SAAsBA,EAAO9S,GACzB,MAAqB,iBAAV8S,EACAA,EAGN7c,MAAM6c,GAKU,iBADrBA,EAAQ9S,EAAOiuH,cAAcn7G,IAElBA,EAGJ,KARI/c,SAAS+c,EAAO,GAS/B,CAyMgB+6H,CAAa/6H,EAAOtsB,KAAKuvI,cAC1BvvI,KAAK8Y,IAAIwT,EAAQo6G,EAAK,MAEtBA,CAEf,EA+pGAliH,GAAMqxH,QA7pGN,SAA+BvpH,GAC3B,IAAKtsB,KAAKsb,UACN,OAAgB,MAATgR,EAAgBtsB,KAAOka,IAElC,IAAI27H,GAAW71I,KAAK0mI,MAAQ,EAAI1mI,KAAKuvI,aAAaiO,MAAMjY,KAAO,EAC/D,OAAgB,MAATj5G,EAAgBupH,EAAU71I,KAAK8Y,IAAIwT,EAAQupH,EAAS,IAC/D,EAwpGArxH,GAAMghI,WAtpGN,SAA4Bl5H,GACxB,IAAKtsB,KAAKsb,UACN,OAAgB,MAATgR,EAAgBtsB,KAAOka,IAOlC,GAAa,MAAToS,EAAe,CACf,IAAIupH,EAhOZ,SAAyBvpH,EAAO9S,GAC5B,MAAqB,iBAAV8S,EACA9S,EAAOiuH,cAAcn7G,GAAS,GAAK,EAEvC7c,MAAM6c,GAAS,KAAOA,CACjC,CA2NsBg7H,CAAgBh7H,EAAOtsB,KAAKuvI,cAC1C,OAAOvvI,KAAK0mI,IAAI1mI,KAAK0mI,MAAQ,EAAImP,EAAUA,EAAU,EACzD,CACI,OAAO71I,KAAK0mI,OAAS,CAE7B,EAwoGAliH,GAAMwxH,UAhMN,SAAyB1pH,GACrB,IAAI0pH,EACA/yI,KAAK4M,OACA7P,KAAK6Y,QAAQ4C,QAAQ,OAASzb,KAAK6Y,QAAQ4C,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAAT6Q,EAAgB0pH,EAAYh2I,KAAK8Y,IAAIwT,EAAQ0pH,EAAW,IACnE,EA2LAxxH,GAAMuhH,KAAOvhH,GAAMkgH,MAAQiU,GAC3Bn0H,GAAMwhH,OAASxhH,GAAMmgH,QAAUkgB,GAC/BrgI,GAAMM,OAASN,GAAM6zH,QAAU0M,GAC/BvgI,GAAM06H,YAAc16H,GAAMy7H,aAAe6E,GACzCtgI,GAAMjM,UA9mDN,SAAsB+T,EAAOi7H,EAAeC,GACxC,IACIC,EADA3lJ,EAAS9B,KAAK6tI,SAAW,EAE7B,IAAK7tI,KAAKsb,UACN,OAAgB,MAATgR,EAAgBtsB,KAAOka,IAElC,GAAa,MAAToS,EAAe,CACf,GAAqB,iBAAVA,GAEP,GAAc,QADdA,EAAQs0H,GAAiB7O,GAAkBzlH,IAEvC,OAAOtsB,UAEJiD,KAAKuV,IAAI8T,GAAS,KAAOk7H,IAChCl7H,GAAgB,IAwBpB,OAtBKtsB,KAAK4tI,QAAU2Z,IAChBE,EAAc1G,GAAc/gJ,OAEhCA,KAAK6tI,QAAUvhH,EACftsB,KAAK4tI,QAAS,EACK,MAAf6Z,GACAznJ,KAAK8Y,IAAI2uI,EAAa,KAEtB3lJ,IAAWwqB,KACNi7H,GAAiBvnJ,KAAK0nJ,kBACvBhG,GACI1hJ,KACAmhJ,GAAe70H,EAAQxqB,EAAQ,KAC/B,GACA,GAEI9B,KAAK0nJ,oBACb1nJ,KAAK0nJ,mBAAoB,EACzB1qH,EAAMgxG,aAAahuI,MAAM,GACzBA,KAAK0nJ,kBAAoB,OAG1B1nJ,IACX,CACI,OAAOA,KAAK4tI,OAAS9rI,EAASi/I,GAAc/gJ,KAEpD,EAskDAwkB,GAAM9K,IAtjDN,SAAwB6tI,GACpB,OAAOvnJ,KAAKuY,UAAU,EAAGgvI,EAC7B,EAqjDA/iI,GAAMs6F,MAnjDN,SAA0ByoC,GAStB,OARIvnJ,KAAK4tI,SACL5tI,KAAKuY,UAAU,EAAGgvI,GAClBvnJ,KAAK4tI,QAAS,EAEV2Z,GACAvnJ,KAAKyc,SAASskI,GAAc/gJ,MAAO,MAGpCA,IACX,EA0iDAwkB,GAAMmjI,UAxiDN,WACI,GAAiB,MAAb3nJ,KAAK2tI,KACL3tI,KAAKuY,UAAUvY,KAAK2tI,MAAM,GAAO,QAC9B,GAAuB,iBAAZ3tI,KAAKslB,GAAiB,CACpC,IAAIsiI,EAAQhH,GAAiB9O,GAAa9xI,KAAKslB,IAClC,MAATsiI,EACA5nJ,KAAKuY,UAAUqvI,GAEf5nJ,KAAKuY,UAAU,GAAG,EAE1B,CACA,OAAOvY,IACX,EA6hDAwkB,GAAMqjI,qBA3hDN,SAA8Bv7H,GAC1B,QAAKtsB,KAAKsb,YAGVgR,EAAQA,EAAQixH,GAAYjxH,GAAO/T,YAAc,GAEzCvY,KAAKuY,YAAc+T,GAAS,IAAO,EAC/C,EAqhDA9H,GAAMsjI,MAnhDN,WACI,OACI9nJ,KAAKuY,YAAcvY,KAAK6Y,QAAQD,MAAM,GAAGL,aACzCvY,KAAKuY,YAAcvY,KAAK6Y,QAAQD,MAAM,GAAGL,WAEjD,EA+gDAiM,GAAMsyB,QAv/CN,WACI,QAAO92C,KAAKsb,YAAatb,KAAK4tI,MAClC,EAs/CAppH,GAAMujI,YAp/CN,WACI,QAAO/nJ,KAAKsb,WAAYtb,KAAK4tI,MACjC,EAm/CAppH,GAAMw8H,MAAQA,GACdx8H,GAAMg7F,MAAQwhC,GACdx8H,GAAMwjI,SAzFN,WACI,OAAOhoJ,KAAK4tI,OAAS,MAAQ,EACjC,EAwFAppH,GAAMyjI,SAtFN,WACI,OAAOjoJ,KAAK4tI,OAAS,6BAA+B,EACxD,EAqFAppH,GAAM0jI,MAAQ/Z,EACV,kDACAyW,IAEJpgI,GAAMxM,OAASm2H,EACX,mDACAsG,IAEJjwH,GAAMo7H,MAAQzR,EACV,iDACAkH,IAEJ7wH,GAAMkiI,KAAOvY,EACT,4GA5lDJ,SAAoB7hH,EAAOi7H,GACvB,OAAa,MAATj7H,GACqB,iBAAVA,IACPA,GAASA,GAGbtsB,KAAKuY,UAAU+T,EAAOi7H,GAEfvnJ,OAECA,KAAKuY,WAErB,IAmlDAiM,GAAM2jI,aAAeha,EACjB,2GApiDJ,WACI,IAAK7C,EAAYtrI,KAAKooJ,eAClB,OAAOpoJ,KAAKooJ,cAGhB,IACI9I,EADA3qI,EAAI,CAAC,EAcT,OAXA24H,EAAW34H,EAAG3U,OACd2U,EAAI0pI,GAAc1pI,IAEZo+H,IACFuM,EAAQ3qI,EAAEi5H,OAASnC,EAAU92H,EAAEo+H,IAAMwK,GAAY5oI,EAAEo+H,IACnD/yI,KAAKooJ,cACDpoJ,KAAKsb,WAtOjB,SAAuB+sI,EAAQC,EAAQC,GACnC,IAGIthJ,EAHAc,EAAM9E,KAAK4T,IAAIwxI,EAAO5jJ,OAAQ6jJ,EAAO7jJ,QACrC+jJ,EAAavlJ,KAAKuV,IAAI6vI,EAAO5jJ,OAAS6jJ,EAAO7jJ,QAC7CgkJ,EAAQ,EAEZ,IAAKxhJ,EAAI,EAAGA,EAAIc,EAAKd,KAEZshJ,GAAeF,EAAOphJ,KAAOqhJ,EAAOrhJ,KACnCshJ,GAAe7X,EAAM2X,EAAOphJ,MAAQypI,EAAM4X,EAAOrhJ,MAEnDwhJ,IAGR,OAAOA,EAAQD,CACnB,CAwN8BE,CAAc/zI,EAAEo+H,GAAIuM,EAAMr8H,WAAa,GAE7DjjB,KAAKooJ,eAAgB,EAGlBpoJ,KAAKooJ,aAChB,IAgiDA,IAAIO,GAAUha,EAAOhvI,UAuCrB,SAASipJ,GAAMlsI,EAAQ7W,EAAOwkE,EAAOltC,GACjC,IAAI3jB,EAAS+uF,KACT7uF,EAAM+xH,IAAY3vH,IAAIqhB,EAAQt3B,GAClC,OAAO2T,EAAO6wD,GAAO3wD,EAAKgD,EAC9B,CAEA,SAASmsI,GAAensI,EAAQ7W,EAAOwkE,GAQnC,GAPIvkB,EAASppC,KACT7W,EAAQ6W,EACRA,OAAS5J,GAGb4J,EAASA,GAAU,GAEN,MAAT7W,EACA,OAAO+iJ,GAAMlsI,EAAQ7W,EAAOwkE,EAAO,SAGvC,IAAIpjE,EACA0pD,EAAM,GACV,IAAK1pD,EAAI,EAAGA,EAAI,GAAIA,IAChB0pD,EAAI1pD,GAAK2hJ,GAAMlsI,EAAQzV,EAAGojE,EAAO,SAErC,OAAO1Z,CACX,CAUA,SAASm4F,GAAiBC,EAAcrsI,EAAQ7W,EAAOwkE,GACvB,kBAAjB0+E,GACHjjG,EAASppC,KACT7W,EAAQ6W,EACRA,OAAS5J,GAGb4J,EAASA,GAAU,KAGnB7W,EADA6W,EAASqsI,EAETA,GAAe,EAEXjjG,EAASppC,KACT7W,EAAQ6W,EACRA,OAAS5J,GAGb4J,EAASA,GAAU,IAGvB,IAEIzV,EAFAuS,EAAS+uF,KACTj+E,EAAQy+H,EAAevvI,EAAOgkI,MAAMjY,IAAM,EAE1C50E,EAAM,GAEV,GAAa,MAAT9qD,EACA,OAAO+iJ,GAAMlsI,GAAS7W,EAAQykB,GAAS,EAAG+/C,EAAO,OAGrD,IAAKpjE,EAAI,EAAGA,EAAI,EAAGA,IACf0pD,EAAI1pD,GAAK2hJ,GAAMlsI,GAASzV,EAAIqjB,GAAS,EAAG+/C,EAAO,OAEnD,OAAO1Z,CACX,CAzGAg4F,GAAQ7jB,SA79IR,SAAkBh4H,EAAK67H,EAAK3kG,GACxB,IAAIyrB,EAASzvD,KAAKgpJ,UAAUl8I,IAAQ9M,KAAKgpJ,UAAoB,SAC7D,OAAOx9I,EAAWikD,GAAUA,EAAO1vD,KAAK4oI,EAAK3kG,GAAOyrB,CACxD,EA29IAk5F,GAAQ9jB,eAj2IR,SAAwB/3H,GACpB,IAAI4P,EAAS1c,KAAKipJ,gBAAgBn8I,GAC9Bo8I,EAAclpJ,KAAKipJ,gBAAgBn8I,EAAIoS,eAE3C,OAAIxC,IAAWwsI,EACJxsI,GAGX1c,KAAKipJ,gBAAgBn8I,GAAOo8I,EACvBtiJ,MAAMqoI,GACNrnI,KAAI,SAAUuhJ,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAI5zI,MAAM,GAEd4zI,CACX,IACC/wI,KAAK,IAEHpY,KAAKipJ,gBAAgBn8I,GAChC,EA00IA67I,GAAQhsI,YAt0IR,WACI,OAAO3c,KAAKopJ,YAChB,EAq0IAT,GAAQ1wI,QAh0IR,SAAiBuoD,GACb,OAAOxgE,KAAKqpJ,SAAS1lJ,QAAQ,KAAM68D,EACvC,EA+zIAmoF,GAAQxiB,SAAW8e,GACnB0D,GAAQ1iB,WAAagf,GACrB0D,GAAQppI,aA5yIR,SAAsBihD,EAAQolE,EAAe/pG,EAAQgqG,GACjD,IAAIp2E,EAASzvD,KAAKspJ,cAAcztH,GAChC,OAAOrwB,EAAWikD,GACZA,EAAO+Q,EAAQolE,EAAe/pG,EAAQgqG,GACtCp2E,EAAO9rD,QAAQ,MAAO68D,EAChC,EAwyIAmoF,GAAQY,WAtyIR,SAAoBrrI,EAAMuxC,GACtB,IAAI/yC,EAAS1c,KAAKspJ,cAAcprI,EAAO,EAAI,SAAW,QACtD,OAAO1S,EAAWkR,GAAUA,EAAO+yC,GAAU/yC,EAAO/Y,QAAQ,MAAO8rD,EACvE,EAoyIAk5F,GAAQ7sI,IAzjJR,SAAamxC,GACT,IAAI7wB,EAAMn1B,EACV,IAAKA,KAAKgmD,EACFk+E,EAAWl+E,EAAQhmD,KAEfuE,EADJ4wB,EAAO6wB,EAAOhmD,IAEVjH,KAAKiH,GAAKm1B,EAEVp8B,KAAK,IAAMiH,GAAKm1B,GAI5Bp8B,KAAKy5I,QAAUxsF,EAIfjtD,KAAK2kJ,+BAAiC,IAAI39I,QACrChH,KAAKykJ,wBAAwBlnH,QAAUv9B,KAAK0kJ,cAAcnnH,QACvD,IACA,UAAUA,OAEtB,EAqiJAorH,GAAQvf,KAxqBR,SAAoBp0H,EAAG0H,GACnB,IAAIzV,EACAC,EACAwR,EACA0wH,EAAOppI,KAAKwpJ,OAASjhD,GAAU,MAAMihD,MACzC,IAAKviJ,EAAI,EAAGC,EAAIkiI,EAAK3kI,OAAQwC,EAAIC,IAAKD,EASlC,OAPS,iBADMmiI,EAAKniI,GAAGoiI,QAGf3wH,EAAOskB,EAAMosG,EAAKniI,GAAGoiI,OAAO5tH,QAAQ,OACpC2tH,EAAKniI,GAAGoiI,MAAQ3wH,EAAKsD,kBAIdotH,EAAKniI,GAAGstB,OACnB,IAAK,YACD60G,EAAKniI,GAAGstB,MAAQ,IAChB,MACJ,IAAK,SAED7b,EAAOskB,EAAMosG,EAAKniI,GAAGstB,OAAO9Y,QAAQ,OAAOO,UAC3CotH,EAAKniI,GAAGstB,MAAQ7b,EAAKsD,UAIjC,OAAOotH,CACX,EA+oBAuf,GAAQrE,UA7oBR,SAAyBsC,EAASlqI,EAAQgvH,GACtC,IAAIzkI,EACAC,EAEA2L,EACA02H,EACAD,EAHAF,EAAOppI,KAAKopI,OAMhB,IAFAwd,EAAUA,EAAQ1nI,cAEbjY,EAAI,EAAGC,EAAIkiI,EAAK3kI,OAAQwC,EAAIC,IAAKD,EAKlC,GAJA4L,EAAOu2H,EAAKniI,GAAG4L,KAAKqM,cACpBqqH,EAAOH,EAAKniI,GAAGsiI,KAAKrqH,cACpBoqH,EAASF,EAAKniI,GAAGqiI,OAAOpqH,cAEpBwsH,EACA,OAAQhvH,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAI6sH,IAASqd,EACT,OAAOxd,EAAKniI,GAEhB,MAEJ,IAAK,OACD,GAAI4L,IAAS+zI,EACT,OAAOxd,EAAKniI,GAEhB,MAEJ,IAAK,QACD,GAAIqiI,IAAWsd,EACX,OAAOxd,EAAKniI,QAIrB,GAAI,CAAC4L,EAAM02H,EAAMD,GAAQpoH,QAAQ0lI,IAAY,EAChD,OAAOxd,EAAKniI,EAGxB,EAsmBA0hJ,GAAQvK,gBApmBR,SAA+B5R,EAAK7zH,GAChC,IAAIsQ,EAAMujH,EAAInD,OAASmD,EAAIj4G,MAAQ,GAAM,EACzC,YAAazhB,IAAT6F,EACOqkB,EAAMwvG,EAAInD,OAAO1wH,OAEjBqkB,EAAMwvG,EAAInD,OAAO1wH,QAAUA,EAAO6zH,EAAI1qI,QAAUmnB,CAE/D,EA8lBA0/H,GAAQrF,cA/fR,SAAuBnR,GAInB,OAHKhH,EAAWnrI,KAAM,mBAClBujJ,GAAiBxjJ,KAAKC,MAEnBmyI,EAAWnyI,KAAK6jJ,eAAiB7jJ,KAAK2jJ,UACjD,EA2fAgF,GAAQvE,cAvgBR,SAAuBjS,GAInB,OAHKhH,EAAWnrI,KAAM,mBAClBujJ,GAAiBxjJ,KAAKC,MAEnBmyI,EAAWnyI,KAAK4jJ,eAAiB5jJ,KAAK2jJ,UACjD,EAmgBAgF,GAAQtE,gBA1fR,SAAyBlS,GAIrB,OAHKhH,EAAWnrI,KAAM,qBAClBujJ,GAAiBxjJ,KAAKC,MAEnBmyI,EAAWnyI,KAAK8jJ,iBAAmB9jJ,KAAK2jJ,UACnD,EAufAgF,GAAQ3wI,OA59HR,SAAsBhD,EAAG0H,GACrB,OAAK1H,EAKE5U,EAAQJ,KAAKugJ,SACdvgJ,KAAKugJ,QAAQvrI,EAAE4D,SACf5Y,KAAKugJ,SACAvgJ,KAAKugJ,QAAQ9Z,UAAYmN,IAAkBrvI,KAAKmY,GAC3C,SACA,cACR1H,EAAE4D,SAVCxY,EAAQJ,KAAKugJ,SACdvgJ,KAAKugJ,QACLvgJ,KAAKugJ,QAAoB,UASvC,EAg9HAoI,GAAQ1rI,YA98HR,SAA2BjI,EAAG0H,GAC1B,OAAK1H,EAKE5U,EAAQJ,KAAKypJ,cACdzpJ,KAAKypJ,aAAaz0I,EAAE4D,SACpB5Y,KAAKypJ,aACD7V,GAAiBrvI,KAAKmY,GAAU,SAAW,cAC7C1H,EAAE4D,SARCxY,EAAQJ,KAAKypJ,cACdzpJ,KAAKypJ,aACLzpJ,KAAKypJ,aAAyB,UAO5C,EAo8HAd,GAAQrhB,YAn5HR,SAA2B0M,EAAWt3H,EAAQgvH,GAC1C,IAAIzkI,EAAG0hI,EAAKh1B,EAEZ,GAAI3zG,KAAK0pJ,kBACL,OAAO3V,GAAkBh0I,KAAKC,KAAMg0I,EAAWt3H,EAAQgvH,GAY3D,IATK1rI,KAAKo0I,eACNp0I,KAAKo0I,aAAe,GACpBp0I,KAAKq0I,iBAAmB,GACxBr0I,KAAKs0I,kBAAoB,IAMxBrtI,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBA0hI,EAAM8C,EAAU,CAAC,IAAMxkI,IACnBykI,IAAW1rI,KAAKq0I,iBAAiBptI,KACjCjH,KAAKq0I,iBAAiBptI,GAAK,IAAID,OAC3B,IAAMhH,KAAKgY,OAAO2wH,EAAK,IAAIhlI,QAAQ,IAAK,IAAM,IAC9C,KAEJ3D,KAAKs0I,kBAAkBrtI,GAAK,IAAID,OAC5B,IAAMhH,KAAKid,YAAY0rH,EAAK,IAAIhlI,QAAQ,IAAK,IAAM,IACnD,MAGH+nI,GAAW1rI,KAAKo0I,aAAantI,KAC9B0sG,EACI,IAAM3zG,KAAKgY,OAAO2wH,EAAK,IAAM,KAAO3oI,KAAKid,YAAY0rH,EAAK,IAC9D3oI,KAAKo0I,aAAantI,GAAK,IAAID,OAAO2sG,EAAMhwG,QAAQ,IAAK,IAAK,MAI1D+nI,GACW,SAAXhvH,GACA1c,KAAKq0I,iBAAiBptI,GAAG1C,KAAKyvI,GAE9B,OAAO/sI,EACJ,GACHykI,GACW,QAAXhvH,GACA1c,KAAKs0I,kBAAkBrtI,GAAG1C,KAAKyvI,GAE/B,OAAO/sI,EACJ,IAAKykI,GAAU1rI,KAAKo0I,aAAantI,GAAG1C,KAAKyvI,GAC5C,OAAO/sI,CAEf,CACJ,EAi2HA0hJ,GAAQphB,YAlyHR,SAAqB4K,GACjB,OAAInyI,KAAK0pJ,mBACAve,EAAWnrI,KAAM,iBAClB00I,GAAmB30I,KAAKC,MAExBmyI,EACOnyI,KAAKi1I,mBAELj1I,KAAK+0I,eAGX5J,EAAWnrI,KAAM,kBAClBA,KAAK+0I,aAAejB,IAEjB9zI,KAAKi1I,oBAAsB9C,EAC5BnyI,KAAKi1I,mBACLj1I,KAAK+0I,aAEnB,EAixHA4T,GAAQ5hB,iBAvzHR,SAA0BoL,GACtB,OAAInyI,KAAK0pJ,mBACAve,EAAWnrI,KAAM,iBAClB00I,GAAmB30I,KAAKC,MAExBmyI,EACOnyI,KAAKk1I,wBAELl1I,KAAKg1I,oBAGX7J,EAAWnrI,KAAM,uBAClBA,KAAKg1I,kBAAoBnB,IAEtB7zI,KAAKk1I,yBAA2B/C,EACjCnyI,KAAKk1I,wBACLl1I,KAAKg1I,kBAEnB,EAsyHA2T,GAAQrjB,KAjiHR,SAAoBqD,GAChB,OAAOsN,GAAWtN,EAAK3oI,KAAKw9I,MAAMjY,IAAKvlI,KAAKw9I,MAAMhY,KAAKF,IAC3D,EAgiHAqjB,GAAQgB,eArhHR,WACI,OAAO3pJ,KAAKw9I,MAAMhY,GACtB,EAohHAmjB,GAAQiB,eA1hHR,WACI,OAAO5pJ,KAAKw9I,MAAMjY,GACtB,EA0hHAojB,GAAQ5wI,SAt6GR,SAAwB/C,EAAG0H,GACvB,IAAI3E,EAAW3X,EAAQJ,KAAK6pJ,WACtB7pJ,KAAK6pJ,UACL7pJ,KAAK6pJ,UACD70I,IAAW,IAANA,GAAchV,KAAK6pJ,UAAUpjB,SAASliI,KAAKmY,GAC1C,SACA,cAEhB,OAAa,IAAN1H,EACDshI,GAAcv+H,EAAU/X,KAAKw9I,MAAMjY,KACnCvwH,EACA+C,EAAS/C,EAAE0xH,OACX3uH,CACV,EA05GA4wI,GAAQtrI,YAh5GR,SAA2BrI,GACvB,OAAa,IAANA,EACDshI,GAAct2I,KAAK8pJ,aAAc9pJ,KAAKw9I,MAAMjY,KAC5CvwH,EACAhV,KAAK8pJ,aAAa90I,EAAE0xH,OACpB1mI,KAAK8pJ,YACf,EA24GAnB,GAAQprI,cAz5GR,SAA6BvI,GACzB,OAAa,IAANA,EACDshI,GAAct2I,KAAK+pJ,eAAgB/pJ,KAAKw9I,MAAMjY,KAC9CvwH,EACAhV,KAAK+pJ,eAAe/0I,EAAE0xH,OACtB1mI,KAAK+pJ,cACf,EAo5GApB,GAAQlhB,cAj0GR,SAA6ByP,EAAax6H,EAAQgvH,GAC9C,IAAIzkI,EAAG0hI,EAAKh1B,EAEZ,GAAI3zG,KAAKgqJ,oBACL,OAAO/S,GAAoBl3I,KAAKC,KAAMk3I,EAAax6H,EAAQgvH,GAU/D,IAPK1rI,KAAKm3I,iBACNn3I,KAAKm3I,eAAiB,GACtBn3I,KAAKq3I,kBAAoB,GACzBr3I,KAAKo3I,oBAAsB,GAC3Bp3I,KAAKiqJ,mBAAqB,IAGzBhjJ,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BA0hI,EAAM8C,EAAU,CAAC,IAAM,IAAI/E,IAAIz/H,GAC3BykI,IAAW1rI,KAAKiqJ,mBAAmBhjJ,KACnCjH,KAAKiqJ,mBAAmBhjJ,GAAK,IAAID,OAC7B,IAAMhH,KAAK+X,SAAS4wH,EAAK,IAAIhlI,QAAQ,IAAK,QAAU,IACpD,KAEJ3D,KAAKo3I,oBAAoBnwI,GAAK,IAAID,OAC9B,IAAMhH,KAAKud,cAAcorH,EAAK,IAAIhlI,QAAQ,IAAK,QAAU,IACzD,KAEJ3D,KAAKq3I,kBAAkBpwI,GAAK,IAAID,OAC5B,IAAMhH,KAAKqd,YAAYsrH,EAAK,IAAIhlI,QAAQ,IAAK,QAAU,IACvD,MAGH3D,KAAKm3I,eAAelwI,KACrB0sG,EACI,IACA3zG,KAAK+X,SAAS4wH,EAAK,IACnB,KACA3oI,KAAKud,cAAcorH,EAAK,IACxB,KACA3oI,KAAKqd,YAAYsrH,EAAK,IAC1B3oI,KAAKm3I,eAAelwI,GAAK,IAAID,OAAO2sG,EAAMhwG,QAAQ,IAAK,IAAK,MAI5D+nI,GACW,SAAXhvH,GACA1c,KAAKiqJ,mBAAmBhjJ,GAAG1C,KAAK2yI,GAEhC,OAAOjwI,EACJ,GACHykI,GACW,QAAXhvH,GACA1c,KAAKo3I,oBAAoBnwI,GAAG1C,KAAK2yI,GAEjC,OAAOjwI,EACJ,GACHykI,GACW,OAAXhvH,GACA1c,KAAKq3I,kBAAkBpwI,GAAG1C,KAAK2yI,GAE/B,OAAOjwI,EACJ,IAAKykI,GAAU1rI,KAAKm3I,eAAelwI,GAAG1C,KAAK2yI,GAC9C,OAAOjwI,CAEf,CACJ,EAkwGA0hJ,GAAQjS,cAxtGR,SAAuBvE,GACnB,OAAInyI,KAAKgqJ,qBACA7e,EAAWnrI,KAAM,mBAClBs3I,GAAqBv3I,KAAKC,MAE1BmyI,EACOnyI,KAAK83I,qBAEL93I,KAAK23I,iBAGXxM,EAAWnrI,KAAM,oBAClBA,KAAK23I,eAAiBb,IAEnB92I,KAAK83I,sBAAwB3F,EAC9BnyI,KAAK83I,qBACL93I,KAAK23I,eAEnB,EAusGAgR,GAAQlS,mBArsGR,SAA4BtE,GACxB,OAAInyI,KAAKgqJ,qBACA7e,EAAWnrI,KAAM,mBAClBs3I,GAAqBv3I,KAAKC,MAE1BmyI,EACOnyI,KAAK+3I,0BAEL/3I,KAAK43I,sBAGXzM,EAAWnrI,KAAM,yBAClBA,KAAK43I,oBAAsBb,IAExB/2I,KAAK+3I,2BAA6B5F,EACnCnyI,KAAK+3I,0BACL/3I,KAAK43I,oBAEnB,EAorGA+Q,GAAQnS,iBAlrGR,SAA0BrE,GACtB,OAAInyI,KAAKgqJ,qBACA7e,EAAWnrI,KAAM,mBAClBs3I,GAAqBv3I,KAAKC,MAE1BmyI,EACOnyI,KAAKg4I,wBAELh4I,KAAK63I,oBAGX1M,EAAWnrI,KAAM,uBAClBA,KAAK63I,kBAAoBb,IAEtBh3I,KAAKg4I,yBAA2B7F,EACjCnyI,KAAKg4I,wBACLh4I,KAAK63I,kBAEnB,EAkqGA8Q,GAAQlkB,KAl/FR,SAAoBn4G,GAGhB,MAAgD,OAAxCA,EAAQ,IAAI9lB,cAAc8+C,OAAO,EAC7C,EA++FAqjG,GAAQ/rI,SAt+FR,SAAwB8nH,EAAOC,EAASC,GACpC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAEhC,EA4jGA4U,GAAmB,KAAM,CACrBpQ,KAAM,CACF,CACIC,MAAO,aACP90G,MAAO,IACPzyB,OAAQ,EACR+Q,KAAM,cACNy2H,OAAQ,KACRC,KAAM,MAEV,CACIF,MAAO,aACP90G,OAAO,IACPzyB,OAAQ,EACR+Q,KAAM,gBACNy2H,OAAQ,KACRC,KAAM,OAGdlE,uBAAwB,uBACxBptH,QAAS,SAAUuoD,GACf,IAAI52D,EAAI42D,EAAS,GAWjB,OAAOA,GATgC,IAA/BkwE,EAAOlwE,EAAS,IAAO,IACjB,KACM,IAAN52D,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAElB,IAKJozB,EAAMlN,KAAOq+G,EACT,wDACAqL,IAEJx8G,EAAMktH,SAAW/b,EACb,gEACA5lC,IAGJ,IAAI4hD,GAAUlnJ,KAAKuV,IAmBnB,SAAS4xI,GAAc/3I,EAAUia,EAAOvlB,EAAO06I,GAC3C,IAAInC,EAAQ6B,GAAe70H,EAAOvlB,GAMlC,OAJAsL,EAASguI,eAAiBoB,EAAYnC,EAAMe,cAC5ChuI,EAASiuI,OAASmB,EAAYnC,EAAMgB,MACpCjuI,EAASkuI,SAAWkB,EAAYnC,EAAMiB,QAE/BluI,EAASmuI,SACpB,CAYA,SAAS6J,GAAQ7pF,GACb,OAAIA,EAAS,EACFv9D,KAAKwV,MAAM+nD,GAEXv9D,KAAK8V,KAAKynD,EAEzB,CAyDA,SAAS8pF,GAAaznB,GAGlB,OAAe,KAAPA,EAAe,MAC3B,CAEA,SAAS0nB,GAAavyI,GAElB,OAAiB,OAATA,EAAmB,IAC/B,CA2DA,SAASwyI,GAAOC,GACZ,OAAO,WACH,OAAOzqJ,KAAK0qJ,GAAGD,EACnB,CACJ,CAEA,IAAIE,GAAiBH,GAAO,MACxBI,GAAYJ,GAAO,KACnBK,GAAYL,GAAO,KACnBM,GAAUN,GAAO,KACjBO,GAASP,GAAO,KAChBQ,GAAUR,GAAO,KACjBS,GAAWT,GAAO,KAClBU,GAAaV,GAAO,KACpBW,GAAUX,GAAO,KAWrB,SAASY,GAAWv4I,GAChB,OAAO,WACH,OAAO7S,KAAKsb,UAAYtb,KAAK48B,MAAM/pB,GAAQqH,GAC/C,CACJ,CAEA,IAAI+lI,GAAemL,GAAW,gBAC1B/S,GAAU+S,GAAW,WACrBzmB,GAAUymB,GAAW,WACrB1mB,GAAQ0mB,GAAW,SACnBvoB,GAAOuoB,GAAW,QAClBpzI,GAASozI,GAAW,UACpBxL,GAAQwL,GAAW,SAMvB,IAAIv7I,GAAQ5M,KAAK4M,MACb2P,GAAa,CACT1B,GAAI,GACJhT,EAAG,GACHkK,EAAG,GACHe,EAAG,GACHnB,EAAG,GACHoE,EAAG,KACHlB,EAAG,IAIX,SAASuzI,GAAkBxvH,EAAQ2kC,EAAQolE,EAAeC,EAAUrsH,GAChE,OAAOA,EAAO+F,aAAaihD,GAAU,IAAKolE,EAAe/pG,EAAQgqG,EACrE,CAmGA,IAAIylB,GAAQroJ,KAAKuV,IAEjB,SAASmoI,GAAK/mI,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,CACjC,CAEA,SAAS2xI,KAQL,IAAKvrJ,KAAKsb,UACN,OAAOtb,KAAKuvI,aAAa5yH,cAG7B,IAGIgoH,EACAD,EACAkb,EACA90I,EAEA0gJ,EACAC,EACAC,EACAC,EAXAtT,EAAUiT,GAAMtrJ,KAAKqgJ,eAAiB,IACtCxd,EAAOyoB,GAAMtrJ,KAAKsgJ,OAClBtoI,EAASszI,GAAMtrJ,KAAKugJ,SAKpBr7F,EAAQllD,KAAK4qJ,YAMjB,OAAK1lG,GAOLy/E,EAAU8L,EAAS4H,EAAU,IAC7B3T,EAAQ+L,EAAS9L,EAAU,IAC3B0T,GAAW,GACX1T,GAAW,GAGXib,EAAQnP,EAASz4H,EAAS,IAC1BA,GAAU,GAGVlN,EAAIutI,EAAUA,EAAQ13E,QAAQ,GAAGh9D,QAAQ,SAAU,IAAM,GAEzD6nJ,EAAYtmG,EAAQ,EAAI,IAAM,GAC9BumG,EAAS9K,GAAK3gJ,KAAKugJ,WAAaI,GAAKz7F,GAAS,IAAM,GACpDwmG,EAAW/K,GAAK3gJ,KAAKsgJ,SAAWK,GAAKz7F,GAAS,IAAM,GACpDymG,EAAUhL,GAAK3gJ,KAAKqgJ,iBAAmBM,GAAKz7F,GAAS,IAAM,GAGvDsmG,EACA,KACC5L,EAAQ6L,EAAS7L,EAAQ,IAAM,KAC/B5nI,EAASyzI,EAASzzI,EAAS,IAAM,KACjC6qH,EAAO6oB,EAAW7oB,EAAO,IAAM,KAC/B6B,GAASC,GAAW0T,EAAU,IAAM,KACpC3T,EAAQinB,EAAUjnB,EAAQ,IAAM,KAChCC,EAAUgnB,EAAUhnB,EAAU,IAAM,KACpC0T,EAAUsT,EAAU7gJ,EAAI,IAAM,KA9BxB,KAgCf,CAEA,IAAI8gJ,GAAUjM,GAAShgJ,UAwGvB,OAtGAisJ,GAAQtwI,QAh4ER,WACI,OAAOtb,KAAK2sI,QAChB,EA+3EAif,GAAQpzI,IA3YR,WACI,IAAI7W,EAAO3B,KAAK48B,MAahB,OAXA58B,KAAKqgJ,cAAgB8J,GAAQnqJ,KAAKqgJ,eAClCrgJ,KAAKsgJ,MAAQ6J,GAAQnqJ,KAAKsgJ,OAC1BtgJ,KAAKugJ,QAAU4J,GAAQnqJ,KAAKugJ,SAE5B5+I,EAAKs+I,aAAekK,GAAQxoJ,EAAKs+I,cACjCt+I,EAAK02I,QAAU8R,GAAQxoJ,EAAK02I,SAC5B12I,EAAKgjI,QAAUwlB,GAAQxoJ,EAAKgjI,SAC5BhjI,EAAK+iI,MAAQylB,GAAQxoJ,EAAK+iI,OAC1B/iI,EAAKqW,OAASmyI,GAAQxoJ,EAAKqW,QAC3BrW,EAAKi+I,MAAQuK,GAAQxoJ,EAAKi+I,OAEnB5/I,IACX,EA6XA4rJ,GAAQ9yI,IAhXR,SAAewT,EAAOvlB,GAClB,OAAOqjJ,GAAcpqJ,KAAMssB,EAAOvlB,EAAO,EAC7C,EA+WA6kJ,GAAQnvI,SA5WR,SAAoB6P,EAAOvlB,GACvB,OAAOqjJ,GAAcpqJ,KAAMssB,EAAOvlB,GAAQ,EAC9C,EA2WA6kJ,GAAQlB,GA/RR,SAAY3gB,GACR,IAAK/pI,KAAKsb,UACN,OAAOpB,IAEX,IAAI2oH,EACA7qH,EACAioI,EAAejgJ,KAAKqgJ,cAIxB,GAAc,WAFdtW,EAAQkG,EAAelG,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFAlH,EAAO7iI,KAAKsgJ,MAAQL,EAAe,MACnCjoI,EAAShY,KAAKugJ,QAAU+J,GAAaznB,GAC7BkH,GACJ,IAAK,QACD,OAAO/xH,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADA6qH,EAAO7iI,KAAKsgJ,MAAQr9I,KAAK4M,MAAM06I,GAAavqJ,KAAKugJ,UACzCxW,GACJ,IAAK,OACD,OAAOlH,EAAO,EAAIod,EAAe,OACrC,IAAK,MACD,OAAOpd,EAAOod,EAAe,MACjC,IAAK,OACD,OAAc,GAAPpd,EAAYod,EAAe,KACtC,IAAK,SACD,OAAc,KAAPpd,EAAcod,EAAe,IACxC,IAAK,SACD,OAAc,MAAPpd,EAAeod,EAAe,IAEzC,IAAK,cACD,OAAOh9I,KAAKwV,MAAa,MAAPoqH,GAAgBod,EACtC,QACI,MAAM,IAAIp0I,MAAM,gBAAkBk+H,GAGlD,EAsPA6hB,GAAQjB,eAAiBA,GACzBiB,GAAQhB,UAAYA,GACpBgB,GAAQf,UAAYA,GACpBe,GAAQd,QAAUA,GAClBc,GAAQb,OAASA,GACjBa,GAAQZ,QAAUA,GAClBY,GAAQX,SAAWA,GACnBW,GAAQV,WAAaA,GACrBU,GAAQT,QAAUA,GAClBS,GAAQ5vI,QA5PR,WACI,OAAKhc,KAAKsb,UAINtb,KAAKqgJ,cACQ,MAAbrgJ,KAAKsgJ,MACJtgJ,KAAKugJ,QAAU,GAAM,OACK,QAA3B7P,EAAM1wI,KAAKugJ,QAAU,IANdrmI,GAQf,EAmPA0xI,GAAQpL,QA5WR,WACI,IAIInI,EACA1T,EACAD,EACAkb,EACAiM,EARA5L,EAAejgJ,KAAKqgJ,cACpBxd,EAAO7iI,KAAKsgJ,MACZtoI,EAAShY,KAAKugJ,QACd5+I,EAAO3B,KAAK48B,MAgDhB,OArCSqjH,GAAgB,GAAKpd,GAAQ,GAAK7qH,GAAU,GAC5CioI,GAAgB,GAAKpd,GAAQ,GAAK7qH,GAAU,IAGjDioI,GAAuD,MAAvCoK,GAAQE,GAAavyI,GAAU6qH,GAC/CA,EAAO,EACP7qH,EAAS,GAKbrW,EAAKs+I,aAAeA,EAAe,IAEnC5H,EAAU5H,EAASwP,EAAe,KAClCt+I,EAAK02I,QAAUA,EAAU,GAEzB1T,EAAU8L,EAAS4H,EAAU,IAC7B12I,EAAKgjI,QAAUA,EAAU,GAEzBD,EAAQ+L,EAAS9L,EAAU,IAC3BhjI,EAAK+iI,MAAQA,EAAQ,GAErB7B,GAAQ4N,EAAS/L,EAAQ,IAIzB1sH,GADA6zI,EAAiBpb,EAAS6Z,GAAaznB,IAEvCA,GAAQwnB,GAAQE,GAAasB,IAG7BjM,EAAQnP,EAASz4H,EAAS,IAC1BA,GAAU,GAEVrW,EAAKkhI,KAAOA,EACZlhI,EAAKqW,OAASA,EACdrW,EAAKi+I,MAAQA,EAEN5/I,IACX,EAwTA4rJ,GAAQ/yI,MAlOR,WACI,OAAOsoI,GAAenhJ,KAC1B,EAiOA4rJ,GAAQrvI,IA/NR,SAAewtH,GAEX,OADAA,EAAQkG,EAAelG,GAChB/pI,KAAKsb,UAAYtb,KAAK+pI,EAAQ,OAAS7vH,GAClD,EA6NA0xI,GAAQ3L,aAAeA,GACvB2L,GAAQvT,QAAUA,GAClBuT,GAAQjnB,QAAUA,GAClBinB,GAAQlnB,MAAQA,GAChBknB,GAAQ/oB,KAAOA,GACf+oB,GAAQ7L,MAlNR,WACI,OAAOtP,EAASzwI,KAAK6iI,OAAS,EAClC,EAiNA+oB,GAAQ5zI,OAASA,GACjB4zI,GAAQhM,MAAQA,GAChBgM,GAAQlG,SAlIR,SAAkBoG,EAAeC,GAC7B,IAAK/rJ,KAAKsb,UACN,OAAOtb,KAAKuvI,aAAa5yH,cAG7B,IAEInD,EACAi2C,EAHAu8F,GAAa,EACbhsH,EAAKxgB,GAyBT,MArB6B,iBAAlBssI,IACPC,EAAgBD,EAChBA,GAAgB,GAES,kBAAlBA,IACPE,EAAaF,GAEY,iBAAlBC,IACP/rH,EAAKve,OAAOs+B,OAAO,CAAC,EAAGvgC,GAAYusI,GACZ,MAAnBA,EAAcjhJ,GAAiC,MAApBihJ,EAAcjuI,KACzCkiB,EAAGliB,GAAKiuI,EAAcjhJ,EAAI,IAKlC2kD,EAxFJ,SAAwBw8F,EAAgBrmB,EAAepmH,EAAYhG,GAC/D,IAAInH,EAAW8uI,GAAe8K,GAAgBzzI,MAC1C6/H,EAAUxoI,GAAMwC,EAASq4I,GAAG,MAC5B/lB,EAAU90H,GAAMwC,EAASq4I,GAAG,MAC5BhmB,EAAQ70H,GAAMwC,EAASq4I,GAAG,MAC1B7nB,EAAOhzH,GAAMwC,EAASq4I,GAAG,MACzB1yI,EAASnI,GAAMwC,EAASq4I,GAAG,MAC3B3K,EAAQlwI,GAAMwC,EAASq4I,GAAG,MAC1B9K,EAAQ/vI,GAAMwC,EAASq4I,GAAG,MAC1BhhJ,EACK2uI,GAAW74H,EAAW1B,IAAM,CAAC,IAAKu6H,IAClCA,EAAU74H,EAAW1U,GAAK,CAAC,KAAMutI,IACjC1T,GAAW,GAAK,CAAC,MACjBA,EAAUnlH,EAAWxK,GAAK,CAAC,KAAM2vH,IACjCD,GAAS,GAAK,CAAC,MACfA,EAAQllH,EAAWzJ,GAAK,CAAC,KAAM2uH,IAC/B7B,GAAQ,GAAK,CAAC,MACdA,EAAOrjH,EAAW5K,GAAK,CAAC,KAAMiuH,GAgBvC,OAdoB,MAAhBrjH,EAAWxG,IACXtP,EACIA,GACCq2I,GAAS,GAAK,CAAC,MACfA,EAAQvgI,EAAWxG,GAAK,CAAC,KAAM+mI,KAExCr2I,EAAIA,GACCsO,GAAU,GAAK,CAAC,MAChBA,EAASwH,EAAW1H,GAAK,CAAC,KAAME,IAChC4nI,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAKha,EACPl8H,EAAE,IAAMuiJ,EAAiB,EACzBviJ,EAAE,GAAK8P,EACA6xI,GAAkB53I,MAAM,KAAM/J,EACzC,CAsDawiJ,CAAelsJ,MAAOgsJ,EAAYhsH,EAD3CxmB,EAASxZ,KAAKuvI,cAGVyc,IACAv8F,EAASj2C,EAAO+vI,YAAYvpJ,KAAMyvD,IAG/Bj2C,EAAOysH,WAAWx2E,EAC7B,EAmGAm8F,GAAQxtI,YAAcmtI,GACtBK,GAAQrwI,SAAWgwI,GACnBK,GAAQztI,OAASotI,GACjBK,GAAQpyI,OAASA,GACjBoyI,GAAQrc,WAAaA,GAErBqc,GAAQO,YAAche,EAClB,sFACAod,IAEJK,GAAQ97H,KAAOA,GAIfu/G,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1B4C,GAAc,IAAKJ,IACnBI,GAAc,IAxuJO,wBAyuJrBS,GAAc,KAAK,SAAUpmH,EAAO3K,EAAOsrC,GACvCA,EAAOgG,GAAK,IAAIh5C,KAAyB,IAApB+vB,WAAW1d,GACpC,IACAomH,GAAc,KAAK,SAAUpmH,EAAO3K,EAAOsrC,GACvCA,EAAOgG,GAAK,IAAIh5C,KAAKy2H,EAAMpkH,GAC/B,IAIA0Q,EAAM5b,QAAU,SAh/KZ8pH,EAk/KYqS,GAEhBvgH,EAAMn5B,GAAK2gB,GACXwY,EAAMnmB,IAz/EN,WAGI,OAAO2oI,GAAO,WAFH,GAAGjqI,MAAMxV,KAAK2T,UAAW,GAGxC,EAs/EAspB,EAAM95B,IAp/EN,WAGI,OAAOs8I,GAAO,UAFH,GAAGjqI,MAAMxV,KAAK2T,UAAW,GAGxC,EAi/EAspB,EAAMgH,IA/+EI,WACN,OAAO/pB,KAAK+pB,IAAM/pB,KAAK+pB,OAAS,IAAI/pB,IACxC,EA8+EA+iB,EAAMtjB,IAAM+xH,EACZzuG,EAAMjhB,KA1oBN,SAAoBuQ,GAChB,OAAOixH,GAAoB,IAARjxH,EACvB,EAyoBA0Q,EAAMhlB,OAlhBN,SAAoB0E,EAAQ7W,GACxB,OAAOgjJ,GAAensI,EAAQ7W,EAAO,SACzC,EAihBAm3B,EAAMuuG,OAASA,EACfvuG,EAAMxjB,OAASggI,GACfx8G,EAAM4kH,QAAU1U,EAChBlwG,EAAM3qB,SAAW8uI,GACjBnkH,EAAMixG,SAAWA,EACjBjxG,EAAMjlB,SAhhBN,SAAsBgxI,EAAcrsI,EAAQ7W,GACxC,OAAOijJ,GAAiBC,EAAcrsI,EAAQ7W,EAAO,WACzD,EA+gBAm3B,EAAM2qH,UA9oBN,WACI,OAAOpK,GAAY9pI,MAAM,KAAMC,WAAWi0I,WAC9C,EA6oBA3qH,EAAMuyG,WAAahnC,GACnBvrE,EAAMyjH,WAAaA,GACnBzjH,EAAM/f,YAxhBN,SAAyBP,EAAQ7W,GAC7B,OAAOgjJ,GAAensI,EAAQ7W,EAAO,cACzC,EAuhBAm3B,EAAM3f,YA7gBN,SAAyB0rI,EAAcrsI,EAAQ7W,GAC3C,OAAOijJ,GAAiBC,EAAcrsI,EAAQ7W,EAAO,cACzD,EA4gBAm3B,EAAMunG,aAAeA,GACrBvnG,EAAMovH,aA14GN,SAAsBv5I,EAAMo6C,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAIzzC,EACA6yI,EACA5d,EAAeoK,GAEE,MAAjBj1D,GAAQ/wE,IAA+C,MAA9B+wE,GAAQ/wE,GAAM6mI,aAEvC91D,GAAQ/wE,GAAMiJ,IAAI0yH,EAAa5qD,GAAQ/wE,GAAM4mI,QAASxsF,KAIrC,OADjBo/F,EAAYlT,GAAWtmI,MAEnB47H,EAAe4d,EAAU5S,SAE7BxsF,EAASuhF,EAAaC,EAAcxhF,GACnB,MAAbo/F,IAIAp/F,EAAOs8E,KAAO12H,IAElB2G,EAAS,IAAIm1H,EAAO1hF,IACbysF,aAAe91D,GAAQ/wE,GAC9B+wE,GAAQ/wE,GAAQ2G,GAIpBggI,GAAmB3mI,EACvB,MAEyB,MAAjB+wE,GAAQ/wE,KAC0B,MAA9B+wE,GAAQ/wE,GAAM6mI,cACd91D,GAAQ/wE,GAAQ+wE,GAAQ/wE,GAAM6mI,aAC1B7mI,IAAS2mI,MACTA,GAAmB3mI,IAEC,MAAjB+wE,GAAQ/wE,WACR+wE,GAAQ/wE,IAI3B,OAAO+wE,GAAQ/wE,EACnB,EAg2GAmqB,EAAM4mD,QAt0GN,WACI,OAAO1jE,EAAK0jE,GAChB,EAq0GA5mD,EAAMzf,cArhBN,SAA2BwrI,EAAcrsI,EAAQ7W,GAC7C,OAAOijJ,GAAiBC,EAAcrsI,EAAQ7W,EAAO,gBACzD,EAohBAm3B,EAAMizG,eAAiBA,EACvBjzG,EAAMsvH,qBAtNN,SAAoCC,GAChC,YAAyBz5I,IAArBy5I,EACO18I,GAEqB,mBAArB08I,IACP18I,GAAQ08I,GACD,EAGf,EA8MAvvH,EAAMwvH,sBA3MN,SAAqCC,EAAWrrE,GAC5C,YAA8BtuE,IAA1B0M,GAAWitI,UAGD35I,IAAVsuE,EACO5hE,GAAWitI,IAEtBjtI,GAAWitI,GAAarrE,EACN,MAAdqrE,IACAjtI,GAAW1B,GAAKsjE,EAAQ,IAErB,GACX,EAgMApkD,EAAMooH,eAp5DN,SAA2BsH,EAAU1oH,GACjC,IAAI9lB,EAAOwuI,EAASxuI,KAAK8lB,EAAK,QAAQ,GACtC,OAAO9lB,GAAQ,EACT,WACAA,GAAQ,EACR,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,UACV,EAs4DA8e,EAAMr9B,UAAY6kB,GAGlBwY,EAAM2vH,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnB5Z,KAAM,aACN6Z,KAAM,QACNC,aAAc,WACdC,QAAS,eACT1Z,KAAM,aACNN,MAAO,WAGJj2G,CAEX,CA7iLoF3b,mBCPpF,IAAIzZ,EAAM,CACT,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,IACX,aAAc,IACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,UAAW,KACX,aAAc,KACd,UAAW,IACX,aAAc,IACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,IACX,aAAc,IACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,gBAAiB,KACjB,aAAc,KACd,gBAAiB,KACjB,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,IACX,aAAc,IACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,WAAY,KACZ,cAAe,KACf,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,IACX,aAAc,IACd,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAChB,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,GACR,UAAW,GACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,OAAQ,KACR,UAAW,KACX,UAAW,KACX,aAAc,KACd,QAAS,KACT,WAAY,KACZ,OAAQ,KACR,UAAW,KACX,QAAS,IACT,WAAY,IACZ,QAAS,KACT,aAAc,KACd,gBAAiB,KACjB,WAAY,KACZ,UAAW,KACX,aAAc,KACd,OAAQ,KACR,UAAW,KACX,OAAQ,IACR,UAAW,IACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAChB,UAAW,KACX,OAAQ,KACR,UAAW,KACX,aAAc,KACd,gBAAiB,KACjB,OAAQ,IACR,UAAW,IACX,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,KACd,UAAW,KACX,aAAc,MAIf,SAASslJ,EAAeC,GACvB,IAAIxjI,EAAKyjI,EAAsBD,GAC/B,OAAO30F,EAAoB7uC,EAC5B,CACA,SAASyjI,EAAsBD,GAC9B,IAAI30F,EAAoB/mD,EAAE7J,EAAKulJ,GAAM,CACpC,IAAI5pJ,EAAI,IAAIsI,MAAM,uBAAyBshJ,EAAM,KAEjD,MADA5pJ,EAAEwG,KAAO,mBACHxG,CACP,CACA,OAAOqE,EAAIulJ,EACZ,CACAD,EAAehtI,KAAO,WACrB,OAAOuB,OAAOvB,KAAKtY,EACpB,EACAslJ,EAAev2H,QAAUy2H,EACzB11I,EAAOC,QAAUu1I,EACjBA,EAAevjI,GAAK,OClShB4uC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CACjD9uC,GAAI8uC,EACJqP,QAAQ,EACRnwD,QAAS,CAAC,GAUX,OANAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG3E9gD,EAAOowD,QAAS,EAGTpwD,EAAOC,OACf,CCxBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,IACzB0oC,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,ECL9DyxD,EAAoB60F,IAAO31I,IAC1BA,EAAO41I,MAAQ,GACV51I,EAAO4d,WAAU5d,EAAO4d,SAAW,IACjC5d,sCCHR,MAAM,EAA+B6/F,OAAOC,KAAK/D,OAAe,OCA1D,EAA+B8D,OAAOC,KAAK/D,OAAY,iBCA7D,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,wCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,wCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yCCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0ECAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCNA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,6ECAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6CCUnC85C,EAAgB,SAAAC,GCTtB,IAAwB76F,EAAUC,EDSZ,SAAA26F,IAAA,OAAAC,EAAA/5I,MAAA,KAAAC,YAAA,KCTYk/C,EDSZ46F,GCTE76F,EDSF46F,GCR1B5tJ,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDMU,IAAAw5D,EAAAmhC,EAAA5tJ,UA4GhC,OA5GgCysH,EACjC7pE,OAAA,SAAOH,GACHorG,EAAA7tJ,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,EACjB,EAACgqE,EAEDtgG,UAAA,WACI,MAAO,mBACX,EAACsgG,EAEDlsD,KAAA,WACI,MAAO,iBACX,EAACksD,EAEDh2F,QAAA,WACI,IAAM02B,EAAO0M,IAAAA,QAAY1M,KACnBg+B,EAAoC,QAAnB,MAAJh+B,OAAI,EAAJA,EAAMg+B,gBAA4B,MAAJh+B,OAAI,EAAJA,EAAMg+B,cACjD2iE,EAAWj0F,IAAAA,WAAe+uC,YAC1BmlD,EAAYl0F,IAAAA,MAAU4J,UAAU,sCAChCuqF,EAAmBn0F,IAAAA,MAAU4J,UAAU,gBACvCwqF,EAAep0F,IAAAA,MAAU,YACzBq0F,EACFr0F,IAAAA,MAAU4J,UAAU,WAAa5J,IAAAA,MAAU4J,UAAU,WAAa,4DAEtE,OAAIsqF,GAAa5gG,EAET93C,EAAA,OAAK8W,UAAU,eACX9W,EAAA,OAAK8W,UAAU,YACV23C,IAAAA,UAAiB,CACdvD,KAAM,8BACN/2D,MAAOqwD,IAAAA,WAAekH,MAAM,oCAC5B50C,UAAW,iCACXw2B,QAASkX,IAAAA,QAAYmwC,OAAOj6D,KAAK8pB,IAAAA,WAErCxkD,EAAA,WACIA,EAAA,KAAGob,KAAMopC,IAAAA,MAAU1M,KAAKA,IACpB93C,EAAA,OAAK8W,UAAU,YAAY89D,IAAAA,UAAuB,CAAE98B,KAAAA,MAExD93C,EAAA,OAAK8W,UAAU,aACX9W,EAAA,OAAK8W,UAAU,YACV0tC,IAAAA,WAAekH,MAAM,qCACtB1rD,EAAA,WACAA,EAAA,cAASwmC,IAASsR,KAEtB93C,EAAA,OAAK8W,UAAU,QACX9W,EAAA,OAAK8W,UAAU,aACX9W,EAAA,KAAGob,KAAMw9H,EAAczkJ,MAAOqwD,IAAAA,WAAekH,MAAM,8BAC/C1rD,EAAA,KAAG8W,UAAU,2BAEjB9W,EAAA,KAAGob,KAAMopC,IAAAA,MAAU1M,KAAKA,GAAO3jD,MAAOqwD,IAAAA,WAAekH,MAAM,+CACvD1rD,EAAA,KAAG8W,UAAU,0BAEjB9W,EAAA,KACIob,KAAMopC,IAAAA,MAAU1M,KAAKA,GAAQ,YAC7B3jD,MAAOqwD,IAAAA,WAAekH,MAAM,gDAE5B1rD,EAAA,KAAG8W,UAAU,wBAEjB9W,EAAA,KACIob,KAAMopC,IAAAA,MAAU1M,KAAKA,GAAQ,eAC7B3jD,MAAOqwD,IAAAA,WAAekH,MAAM,gDAE5B1rD,EAAA,KAAG8W,UAAU,iCAK7B9W,EAAA,OAAK8W,UAAU,aAAa0xC,IAAU1Q,EAAKqR,SAASl7C,YACpDjO,EAAA,OAAK8W,UAAU,kBACX9W,EAAA,UACIA,EAAA,SAAO8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,sCAA6C,IAAE,IACjG1rD,EAAA,UAAQ8W,UAAU,YAAY6pD,IAAa7oB,EAAK8wB,kBAEpD5oE,EAAA,UACIA,EAAA,SAAO8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,2CAAkD,IAAE,IACtG1rD,EAAA,UAAQ8W,UAAU,YAAY6pD,IAAa7oB,EAAK48B,qBAEpC,OAAfoB,GACG91E,EAAA,UACIA,EAAA,SAAO8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,yCAAgD,IAAE,IACpG1rD,EAAA,UAAQ8W,UAAU,YAAU,GAAKw4G,IAAOx5C,GACnCtxE,OAAOi0I,GAAY,MACnB5tI,iBAQzBitC,GAAQ6gG,GAAoBD,EAEhC14I,EAAA,OAAK8W,UAAU,eACX9W,EAAA,OAAK8W,UAAU,iBACX9W,EAAA,OAAK8W,UAAU,iBAAiB1J,IAAKyrI,IACrC74I,EAAA,OAAK8W,UAAU,aAAa0tC,IAAAA,WAAekH,MAAM,6CACjD1rD,EAAA,KAAG8W,UAAU,aAAa0tC,IAAAA,WAAekH,MAAM,8CAC/C1rD,EAAA,UACI8W,UAAU,uDACV9mB,KAAK,SACLs9C,QAAS,SAAC4hC,EAAgBx5D,GAAK,OAAK8uC,IAAAA,MAAU9sD,KAAKw9D,IAAax/C,EAAM,GAErE8uC,IAAAA,WAAekH,MAAM,mCAE1B1rD,EAAA,OAAK8W,UAAU,qBAdxB,CAmBX,EAACyhI,CAAA,CA5GgC,CAAS7iC,KEE9ClxD,IAAAA,aAAiB1gD,IAAI,uCAAuC,WCR7C,IAAU0gD,IDSNA,KCRf,IAAIixD,MACC3xG,IAAI,CACDhM,IAAK,gBACL4yC,UAAW6tG,EACXpiI,YAAY,EACZ2iI,UAAU,EACV7kJ,UAAW,MACX3G,SAAU,IAEb7B,OAAO+4D,EAAK,6BDAjB/4D,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,gBAAgB,SAAC7vB,GACzC,IAAM7Q,EAAO0M,IAAAA,QAAY1M,KACnBg+B,EAAoC,QAAnB,MAAJh+B,OAAI,EAAJA,EAAMg+B,gBAA4B,MAAJh+B,OAAI,EAAJA,EAAMg+B,cACjD2iE,EAAWj0F,IAAAA,WAAe+uC,YAC1BqlD,EAAep0F,IAAAA,MAAU,aACbA,IAAAA,MAAU4J,UAAU,uCAEpBtW,GACd6Q,EAAM7kD,IACF,aACA9D,EAAA,OAAK8W,UAAU,eACX9W,EAAA,OAAK8W,UAAU,YACV23C,IAAAA,UAAiB,CACdvD,KAAM,8BACN/2D,MAAOqwD,IAAAA,WAAekH,MAAM,oCAC5B50C,UAAW,iCACXw2B,QAASkX,IAAAA,QAAYmwC,OAAOj6D,KAAK8pB,IAAAA,WAEpC,CACGxkD,EAAA,WACIA,EAAA,KAAGob,KAAMopC,IAAAA,MAAU1M,KAAKA,IACpB93C,EAAA,OAAK8W,UAAU,YAAY89D,IAAAA,UAAuB,CAAE98B,KAAAA,OAG5D93C,EAAA,OAAK8W,UAAU,aACX9W,EAAA,OAAK8W,UAAU,YACV0tC,IAAAA,WAAekH,MAAM,qCACtB1rD,EAAA,WACAA,EAAA,cAASwmC,IAASsR,KAEtB93C,EAAA,OAAK8W,UAAU,QACX9W,EAAA,OAAK8W,UAAU,aACX9W,EAAA,KAAGob,KAAMw9H,EAAczkJ,MAAOqwD,IAAAA,WAAekH,MAAM,8BAC/C1rD,EAAA,KAAG8W,UAAU,2BAEjB9W,EAAA,KAAGob,KAAMopC,IAAAA,MAAU1M,KAAKA,GAAO3jD,MAAOqwD,IAAAA,WAAekH,MAAM,+CACvD1rD,EAAA,KAAG8W,UAAU,0BAEjB9W,EAAA,KACIob,KAAMopC,IAAAA,MAAU1M,KAAKA,GAAQ,YAC7B3jD,MAAOqwD,IAAAA,WAAekH,MAAM,gDAE5B1rD,EAAA,KAAG8W,UAAU,wBAEjB9W,EAAA,KACIob,KAAMopC,IAAAA,MAAU1M,KAAKA,GAAQ,eAC7B3jD,MAAOqwD,IAAAA,WAAekH,MAAM,gDAE5B1rD,EAAA,KAAG8W,UAAU,iCAK7B9W,EAAA,OAAK8W,UAAU,aAAa0xC,IAAU1Q,EAAKqR,SAASl7C,YACpDjO,EAAA,OAAK8W,UAAU,kBACX9W,EAAA,UACIA,EAAA,SAAO8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,sCAA6C,IAAE,IACjG1rD,EAAA,UAAQ8W,UAAU,YAAY6pD,IAAa7oB,EAAK8wB,kBAEpD5oE,EAAA,UACIA,EAAA,SAAO8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,2CAAkD,IAAE,IACtG1rD,EAAA,UAAQ8W,UAAU,YAAY6pD,IAAa7oB,EAAK48B,qBAEpC,OAAfoB,GACG91E,EAAA,UACIA,EAAA,SAAO8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,yCAAgD,IAAE,IACpG1rD,EAAA,UAAQ8W,UAAU,YACbw4G,IAAOx5C,GACHtxE,OAAOi0I,GAAY,MACnB5tI,gBAQjC,GAGZ,GACJ,KACApf,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,gBAAgB,SAAC7vB,GACzC,IAAMowF,EAAmBv0F,IAAAA,MAAU4J,UAAU,eACvCsqF,EAAYl0F,IAAAA,MAAU4J,UAAU,sCAChCyqF,EAAYr0F,IAAAA,MAAU4J,UAAU,WAAa5J,IAAAA,MAAU4J,UAAU,WAAa,4DAE9E4qF,EAAkB,CACpBrpH,KAAM,WACF,OAAIopH,EAEI/4I,EAAA,UACI8W,UAAU,uDACV9mB,KAAK,SACLs9C,QAAS,SAAC4hC,EAAgBx5D,GAAK,OAAK8uC,IAAAA,MAAU9sD,KAAKw9D,IAAax/C,EAAM,GAErE8uC,IAAAA,WAAekH,MAAM,mCAI3B,IACX,GAGCgtF,GACIl0F,IAAAA,QAAY1M,OAC+B,IAAxC0M,IAAAA,MAAU4J,UAAU,iBACpBzF,EAAM7kD,IACF,kBACA9D,EAAA,OAAK8W,UAAU,eACX9W,EAAA,OAAK8W,UAAU,iBACX9W,EAAA,OAAK8W,UAAU,iBAAiB1J,IAAKyrI,IACrC74I,EAAA,OAAK8W,UAAU,aAAa0tC,IAAAA,WAAekH,MAAM,6CACjD1rD,EAAA,KAAG8W,UAAU,aAAa0tC,IAAAA,WAAekH,MAAM,8CAC9C1rD,EAAEg5I,GACHh5I,EAAA,OAAK8W,UAAU,gBAGvB,GAKpB;;;;;;;2BExIE,IAAIi+F,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,I,gBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,c,eCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,8D,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,iE,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,uC,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,2B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,0B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,8B,iDCArB,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,IAGcA,EAAG7G,G,2GCYPqjJ,E,YCjBN,IAAwBt7F,EAAUC,E,kDAAAA,E,GAAVD,E,GAC5BhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,G,2BDezBrQ,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GACbpiD,KAAK0+D,SAAU,G,EAGjBvc,SAAA,SAASC,GAAO,WAER8rG,EAAY10F,IAAI2J,MAAMC,UAAU,mDAAqD,GAEvE5J,IAAImiB,MACrB96E,KAAK,QAAS,CACb6U,KAAM,aACN2rE,QAAS,kBACTvH,KAAM,CAAEsH,MAAO8sE,GACfpnJ,OAAQ,CAAE9B,KAAM,aAEjBiyB,MAAK,SAACpS,GACL,EAAKsjD,KAAOtjD,EACZ,EAAK65C,SAAU,EACf1pD,EAAEwqC,a,EAIR1zB,UAAA,WAEE,MAAO,oB,EAGTo0C,KAAA,WAEE,MAAO,e,EAGT/2D,MAAA,WAEE,OAAOqwD,IAAIiH,WAAWC,MAAM,sD,EAG9BtqC,QAAA,WACE,GAAIp2B,KAAK0+D,QACP,OAAO,EAAC,IAAD,MAET,IAAMyvF,EAAa30F,IAAI2J,MAAMC,UAAU,8CAAgD,GACvF,OACE,SAAKt3C,UAAU,sBACb,QAAIA,UAAU,wBACX9rB,KAAKmoE,KAAKvgE,KAAI,SAACugE,GAChB,IAAKA,EAAK8D,WACR,OACE,QAAI4mD,MAAM,eACR,SAAKA,MAAM,iBAAgB,EAAC,IAAD,CAAStiH,KAAM43D,EAAKrb,OAAO6J,eAAgB8H,IAAO0J,EAAKrb,UAElF,EAAC,IAAD,CAAM18B,KAAMopC,IAAIhZ,MAAM2nB,KAAKA,GAAOr8C,UAAU,cACzC0I,mBAAS2zC,EAAKkkB,cACZ1oF,QAAQ,kDAAmD,UAC3DA,QAAQ,wBAAyB,OACjCA,QAAQ,qNAHD,OAIPA,QAAQ,kBAAmB,KAAMwqJ,EAAY,W,GA1DxBzjC,KEd3B,aAAUlxD,IACrB,IAAIixD,KACC3xG,IAAI,CACDhM,IAAK,iBACL4yC,UAAW0uG,EACXjjI,YAAY,EACZ2iI,UAAU,EACV7kJ,UAAW,MACX3G,SAAU,IAEb7B,OAAO+4D,EAAK,oC,+DCDrBA,IAAI4yC,aAAatzF,IAAI,kCAAkC,WACnDu1I,YAAe70F;;;;;;;2BCbjB,IAAIuwD,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,G,iBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,c,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,kB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,iC,+ECErB,aACbzzG,KAAKK,EAAE,WACJiE,KAAK,QAASk1D,IAAIiH,WAAWC,MAAM,0DACnCj1D,OAAM,SAAClI,GACFA,EAAE0d,SAAW1d,EAAEyd,SAAuB,IAAZzd,EAAEqB,QAChCrB,EAAEmC,iBACFsP,EAAEwrC,MAAM1kC,IAAIvY,EAAE5C,OAAOyvB,WCH3BopC,IAAI4yC,aAAatzF,IAAI,oCAAoC,WACvDrY,iBAAOyrF,IAAYvsF,UAAW,CAAC,WAAY,YAAa2uJ;;;;;;;2BCLxD,IAAIvkC,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,G,gBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,c,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,kB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,oC,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,2B,+FCKpCj6C,IAAI4yC,aAAatzF,IAAI,0CAA0C,WAC3DrY,iBAAOw9D,IAAet+D,UAAW,SAAS,SAAUg+D,GAChDA,EAAM7kD,IACF,UACA9D,EAAE,MAAO,CAAE8W,UAAW,YAAc,CAChC9W,EAAE,MAAO,CAAE8W,UAAW,aAAe0tC,IAAIiH,WAAWC,MAAM,uDAAyD,KACnH1rD,EACI,MACA,CACI8W,UAAW,eAEfkvF,IAAUxhD,IAAImiB,MAAM12B,IAAI,QAAS,CAC7Bg5B,MAAM,EACNnyD,UAAW;;;;;;;2BCjBjC,IAAIi+F,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,G,gBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAY,K,cCAzC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,kC,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,8B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAe,Q,cCA5C/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,iC,wFCY9B86C,EAAa,SAAChrJ,GAChB,IACIirJ,EAAkB,GADR5tJ,SAASuC,KAAKmL,YACD,IACb/K,EAAEihC,OACNgqH,GAAKh1F,IAAIyX,KAAKvkE,Q,uBCZ5B8sD,IAAI4yC,aAAatzF,IAAI,wBAAwB,WDoBzC+3D,IAAmBlxE,UAAUqhD,SAAW,SAACoB,GACrCoX,IAAIpvC,MAAMqkI,4BAA8BpuJ,EAAE+hD,EAAMqF,KAAKplD,YACrDhC,EAAEO,UAAUsR,IAAI,YAAaq8I,IAMjC19E,IAAmBlxE,UAAUwiD,SAAW,SAACC,GACrC,IAAM4uB,EAAQ3wE,EAAE+hD,EAAMqF,KAClBwpB,EAAOzX,IAAIyX,KAKf,GAHAD,EAAMtlE,MAAMulE,EAAKvkE,KAAKgjC,KAAKuhC,GAAOA,EAAK/V,aAAaxrB,KAAKuhC,IACzD5wE,EAAEO,UAAUG,GAAG,YAAawtJ,GAExB/0F,IAAIuC,SAAS/2C,QAAQ0mD,KAAiB,CACtC,IAAMlpE,EAAMg3D,IAAIpvC,MAAMqkI,6BAA+B,EACrDz9E,EAAM3uE,UAAUG,OACb,CACH,IAAM0uE,EAAcF,EAAMnwE,KAAK,8BAC/B,GAAIqwE,EAAYzsE,OAAQ,CACpB,IAAM0sE,EAAUH,EAAMlvE,SAASU,IACzB4uE,EAAaD,EAAUH,EAAMK,cAC7BC,EAAgBJ,EAAYpvE,SAASU,IACrC+uE,EAAmBD,EAAgBJ,EAAYG,eAEjDC,EAAgBH,GAAWI,EAAmBH,IAC9CJ,EAAM3uE,UAAU2uE,EAAM3uE,YAAc8uE,EAAUG,ME9C9D7wE,iBAAO4uG,IAAW1vG,UAAW,iBAAiB,SAAU2gE,GAChDA,EAAK51C,QACL41C,EAAK51C,MAAMw1C,KAAO;;;;;;;2BCP9BxoD,EAAOC,QAAU,EAAjBD,I,mCCCA,IAAIg3I,EAAmB1uJ,MAAQA,KAAK0uJ,kBAAqBjtI,OAAOugB,OAAU,SAASvwB,EAAGuD,EAAGD,EAAG45I,QAC7E77I,IAAP67I,IAAkBA,EAAK55I,GAC3B0M,OAAOya,eAAezqB,EAAGk9I,EAAI,CAAEprH,YAAY,EAAMhnB,IAAK,WAAa,OAAOvH,EAAED,EAAI,GACpF,EAAM,SAAStD,EAAGuD,EAAGD,EAAG45I,QACT77I,IAAP67I,IAAkBA,EAAK55I,GAC3BtD,EAAEk9I,GAAM35I,EAAED,EACd,GACI65I,EAAgB5uJ,MAAQA,KAAK4uJ,cAAiB,SAAS55I,EAAG2C,GAC1D,IAAK,IAAI/M,KAAKoK,EAAa,YAANpK,GAAoB6W,OAAO9hB,UAAU8M,eAAe1M,KAAK4X,EAAS/M,IAAI8jJ,EAAgB/2I,EAAS3C,EAAGpK,EAC3H,EACIikJ,EAAmB7uJ,MAAQA,KAAK6uJ,iBAAoB,SAAUC,GAC9D,OAAQA,GAAOA,EAAI18F,WAAc08F,EAAM,CAAE,QAAWA,EACxD,EACArtI,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,IACtD4Q,EAAQu1C,UAAYv1C,EAAQoC,WAAQ,EACpC60I,EAAa1vG,EAAQ,KAAYvnC,GACjC,IAAIo3I,EAAU7vG,EAAQ,KACtBz9B,OAAOya,eAAevkB,EAAS,QAAS,CAAE4rB,YAAY,EAAMhnB,IAAK,WAAc,OAAOsyI,EAAgBE,GAAQ,OAAU,IACxH,IAAIC,EAAc9vG,EAAQ,KAC1Bz9B,OAAOya,eAAevkB,EAAS,YAAa,CAAE4rB,YAAY,EAAMhnB,IAAK,WAAc,OAAOsyI,EAAgBG,GAAY,OAAU,G,iCCnBhI,IAAIC,EAAiBjvJ,MAAQA,KAAKivJ,eAAkB,SAAUvvI,EAAIC,EAAMuvI,GACpE,GAAIA,GAA6B,IAArBx7I,UAAUjP,OAAc,IAAK,IAA4B0qJ,EAAxBloJ,EAAI,EAAGC,EAAIyY,EAAKlb,OAAYwC,EAAIC,EAAGD,KACxEkoJ,GAAQloJ,KAAK0Y,IACRwvI,IAAIA,EAAKzvJ,MAAMC,UAAU4V,MAAMxV,KAAK4f,EAAM,EAAG1Y,IAClDkoJ,EAAGloJ,GAAK0Y,EAAK1Y,IAGrB,OAAOyY,EAAGvf,OAAOgvJ,GAAMzvJ,MAAMC,UAAU4V,MAAMxV,KAAK4f,GACtD,EACA8B,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,IACtD4Q,EAAQy3I,iBAAc,EACtB,IAAIC,EAAS,2DACTC,EAAW,+BACXC,EAAc,IAAI7vE,IAAI,CACtB,CAAC,IAAK,WACN,CAAC,IAAK,SACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,OACN,CAAC,IAAK,YAEN8vE,EAAa,CACb,IAAK,QACL,IAAK,SACL,IAAK,UACL,IAAK,YAELC,EAAkB,CAClB,IAAK,CAAC,KAAM,UACZ,IAAK,CAAC,QAAS,YAGfC,EAAgB,IAAI7/C,IAAI,CACxB,MACA,MACA,UACA,KACA,QACA,OACA,iBAEA8/C,EAAiB,IAAI9/C,IAAIo/C,EAAc,CACvC,cACDxtI,OAAOvB,KAAKsvI,GAAY5nJ,KAAI,SAAUmN,GAAK,OAAOy6I,EAAWz6I,EAAI,KAAI,IAOpE66I,EAA4B,IAAI//C,IAAI,CACpC,SACA,iBACA,QACA,QACA,OACA,UACA,UACA,UACA,QACA,WACA,QACA,UACA,UACA,QACA,MACA,YACA,WACA,UACA,OACA,QACA,WACA,aACA,OACA,WACA,OACA,QACA,SACA,WACA,SACA,WACA,UACA,SACA,WACA,MACA,MACA,QACA,QACA,YACA,WACA,QACA,SACA,OACA,OACA,SACA,YACA,UASJ,SAASu/C,EAAY/qJ,GACjB,OAAOsrJ,EAAej6H,IAAIrxB,EAASW,KACvC,CACA2S,EAAQy3I,YAAcA,EACtB,IAAIS,EAAyB,IAAIhgD,IAAI,CAAC,WAAY,cAC9CigD,EAAS,IAAIjgD,IAAI,CAAC,IAAK,MAE3B,SAASznF,EAAUhP,EAAG22I,EAASC,GAC3B,IAAIznI,EAAOhZ,SAASwgJ,EAAS,IAAM,MAEnC,OAAOxnI,GAASA,GAAQynI,EAClBD,EACAxnI,EAAO,EAEDpQ,OAAOyI,aAAa2H,EAAO,OAE3BpQ,OAAOyI,aAAc2H,GAAQ,GAAM,MAAgB,KAAPA,EAAgB,MAC5E,CACA,SAAS0nI,EAAYzwF,GACjB,OAAOA,EAAI77D,QAAQ2rJ,EAAUlnI,EACjC,CACA,SAAS66E,EAAatuF,GAClB,MAAa,MAANA,GAAmB,OAANA,GAAoB,OAANA,GAAoB,OAANA,GAAoB,OAANA,CAClE,CAmBA,SAASu7I,EAAcC,EAAY9rJ,EAAU7D,EAAS4vJ,GAClD,IAAIrd,EAAIsd,OACQ,IAAZ7vJ,IAAsBA,EAAU,CAAC,GACrC,IAAIywB,EAAS,GACTq/H,GAAQ,EACZ,SAASC,EAAQzuJ,GACb,IAAI8E,EAAQvC,EAASkR,MAAM66I,EAAgBtuJ,GAAQ8E,MAAMyoJ,GACzD,IAAKzoJ,EACD,MAAM,IAAIiF,MAAM,wBAA0BxH,EAASkR,MAAM66I,IAE7D,IAAIv9I,EAAOjM,EAAM,GAEjB,OADAwpJ,GAAiBtuJ,EAAS+Q,EAAKpO,OACxBwrJ,EAAYp9I,EACvB,CACA,SAAS29I,EAAgB1uJ,GACrB,KAAOmhG,EAAa5+F,EAASihD,OAAO8qG,EAAgBtuJ,KAChDA,IACJsuJ,GAAiBtuJ,CACrB,CACA,SAAS2uJ,EAAUtiJ,GAEf,IADA,IAAIuiJ,EAAa,EACiB,OAA3BrsJ,EAASihD,SAASn3C,IACrBuiJ,IACJ,OAA4B,IAAP,EAAbA,EACZ,CACA,SAASC,IACL,GAAI1/H,EAAOxsB,OAAS,GAAK2qJ,EAAYn+H,EAAOA,EAAOxsB,OAAS,IACxD,MAAM,IAAIoH,MAAM,wCAExB,CAEA,IADA2kJ,EAAgB,GACI,KAAbnsJ,GAAiB,CACpB,IAAIusJ,EAAYvsJ,EAASihD,OAAO8qG,GAChC,GAAIntD,EAAa2tD,GACbN,GAAQ,EACRE,EAAgB,QAEf,GAAII,KAAapB,EAClBmB,IACA1/H,EAAO/b,KAAK,CAAElQ,KAAMwqJ,EAAWoB,KAC/BN,GAAQ,EACRE,EAAgB,QAEf,GAAkB,MAAdI,EAAmB,CACxB,GAAsB,IAAlB3/H,EAAOxsB,OACP,MAAM,IAAIoH,MAAM,sBAEpBskJ,EAAWj7I,KAAK+b,GAChBA,EAAS,GACTq/H,GAAQ,EACRE,EAAgB,EACpB,MACK,GAAInsJ,EAASmgG,WAAW,KAAM4rD,GAAgB,CAC/C,IAAIS,EAAWxsJ,EAAS6c,QAAQ,KAAMkvI,EAAgB,GACtD,GAAIS,EAAW,EACX,MAAM,IAAIhlJ,MAAM,8BAEpBukJ,EAAgBS,EAAW,CAC/B,MAOI,GALIP,IACAK,IACA1/H,EAAO/b,KAAK,CAAElQ,KAAM,eACpBsrJ,GAAQ,GAERM,KAAanB,EAAiB,CAC9B,IAAIqB,EAAKrB,EAAgBmB,GAAYG,EAASD,EAAG,GAAIE,EAASF,EAAG,GACjE7/H,EAAO/b,KAAK,CACRlQ,KAAM,YACN6N,KAAMk+I,EACNC,OAAQA,EACRjqJ,MAAOwpJ,EAAQ,GACfhlI,UAAW,KAEX0lI,aAAYzwJ,EAAQ0wJ,SAAU,MAEtC,MACK,GAAkB,MAAdN,EAAmB,CACxBJ,EAAgB,GAEhB,IAAIjlI,EAAY,KACuB,MAAnClnB,EAASihD,OAAO8qG,KAChB7kI,EAAY,GACZ6kI,GAAiB,GAEjB/rJ,EAASmgG,WAAW,KAAM4rD,KAC1B7kI,EAAY,IACZ6kI,GAAiB,GAErB,IAAIe,EAASZ,EAAQ,GACH,OAAdhlI,GACmC,MAAnClnB,EAASihD,OAAO8qG,IACuB,MAAvC/rJ,EAASihD,OAAO8qG,EAAgB,KAChC7kI,EAAY4lI,EACZA,EAASZ,EAAQ,KAE0B,QAA1Cxd,EAAKvyI,EAAQ4wJ,+BAA4C,IAAPre,EAAgBA,GAAMvyI,EAAQ0wJ,WACjFC,EAASA,EAAO3qJ,eAEpBgqJ,EAAgB,GAEZQ,EAAS,SAAb,IACIK,EAAiB9B,EAAYhzI,IAAIlY,EAASihD,OAAO8qG,IACrD,GAAIiB,EAAgB,CAEhB,GADAL,EAASK,EACkC,MAAvChtJ,EAASihD,OAAO8qG,EAAgB,GAChC,MAAM,IAAIvkJ,MAAM,gBAEpB2kJ,EAAgB,EACpB,KAC4C,MAAnCnsJ,EAASihD,OAAO8qG,KACrBY,EAAS,SACTR,EAAgB,IAGpB,IAAIzpJ,EAAQ,GACRkqJ,EAAa,KACjB,GAAe,WAAXD,EAAqB,CACrB,GAAIlB,EAAOp6H,IAAIrxB,EAASihD,OAAO8qG,IAAiB,CAG5C,IAFA,IAAInvC,EAAQ58G,EAASihD,OAAO8qG,GACxBkB,EAAalB,EAAgB,EAC1BkB,EAAajtJ,EAASI,SACxBJ,EAASihD,OAAOgsG,KAAgBrwC,GAC7BwvC,EAAUa,KACdA,GAAc,EAElB,GAAIjtJ,EAASihD,OAAOgsG,KAAgBrwC,EAChC,MAAM,IAAIp1G,MAAM,8BAEpB9E,EAAQkpJ,EAAY5rJ,EAASkR,MAAM66I,EAAgB,EAAGkB,IACtDlB,EAAgBkB,EAAa,CACjC,KACK,CAED,IADA,IAAIC,EAAanB,EACVA,EAAgB/rJ,EAASI,UACzBw+F,EAAa5+F,EAASihD,OAAO8qG,KACO,MAAnC/rJ,EAASihD,OAAO8qG,IAChBK,EAAUL,KACdA,GAAiB,EAErBrpJ,EAAQkpJ,EAAY5rJ,EAASkR,MAAMg8I,EAAYnB,GACnD,CACAI,EAAgB,GAEhB,IAAIgB,EAAcntJ,EAASihD,OAAO8qG,GAEd,MAAhBoB,GAAuC,MAAhBA,GACvBP,GAAa,EACbT,EAAgB,IAEK,MAAhBgB,GAAuC,MAAhBA,IAC5BP,GAAa,EACbT,EAAgB,GAExB,CAMA,GAJKhwJ,EAAQ0wJ,SAETD,UAA6DA,EAAarB,EAA0Bl6H,IAAIy7H,IAErE,MAAnC9sJ,EAASihD,OAAO8qG,GAChB,MAAM,IAAIvkJ,MAAM,uCAEpBukJ,GAAiB,EACjB,IAAIqB,EAAoB,CACpBzsJ,KAAM,YACN6N,KAAMs+I,EACNH,OAAQA,EACRjqJ,MAAOA,EACPwkB,UAAWA,EACX0lI,WAAYA,GAEhBhgI,EAAO/b,KAAKu8I,EAChB,MACK,GAAkB,MAAdb,EAAmB,CACxB,GAA2C,MAAvCvsJ,EAASihD,OAAO8qG,EAAgB,GAAY,CAC5Cn/H,EAAO/b,KAAK,CACRlQ,KAAM,iBACN6N,KAAM09I,EAAQ,GAAG/pJ,gBAErB,QACJ,CACA,IAAIkrJ,EAASnB,EAAQ,GAAG/pJ,cACpB7E,EAAO,KACX,GAAuC,MAAnC0C,EAASihD,OAAO8qG,GAChB,GAAIV,EAAch6H,IAAIg8H,GAAS,CAC3B,GAAI5B,EAAOp6H,IAAIrxB,EAASihD,OAAO8qG,EAAgB,IAC3C,MAAM,IAAIvkJ,MAAM,mBAAqB6lJ,EAAS,qBAIlD,GADAtB,EAAgBF,EADhBvuJ,EAAO,GAC6B0C,EAAU7D,EAAS4vJ,EAAgB,GAChC,MAAnC/rJ,EAASihD,OAAO8qG,GAChB,MAAM,IAAIvkJ,MAAM,mCAAqC6lJ,EAAS,KAAOrtJ,EAAW,KAEpF+rJ,GAAiB,CACrB,KACK,CAID,IAFA,IAAIhhI,EADJghI,GAAiB,EAEb1gG,EAAU,EACPA,EAAU,GAAK0gG,EAAgB/rJ,EAASI,OAAQ2rJ,IACZ,MAAnC/rJ,EAASihD,OAAO8qG,IACfK,EAAUL,GAG6B,MAAnC/rJ,EAASihD,OAAO8qG,IACpBK,EAAUL,IACX1gG,IAJAA,IAOR,GAAIA,EACA,MAAM,IAAI7jD,MAAM,2BAGpB,GADAlK,EAAO0C,EAASkR,MAAM6Z,EAAOghI,EAAgB,GACzCP,EAAuBn6H,IAAIg8H,GAAS,CACpC,IAAIC,EAAOhwJ,EAAK2jD,OAAO,GACnBqsG,IAAShwJ,EAAK4T,OAAO,IAAMu6I,EAAOp6H,IAAIi8H,KACtChwJ,EAAOA,EAAK4T,MAAM,GAAI,IAE1B5T,EAAOsuJ,EAAYtuJ,EACvB,CACJ,CAEJsvB,EAAO/b,KAAK,CAAElQ,KAAM,SAAU6N,KAAM6+I,EAAQ/vJ,KAAMA,GACtD,KACK,CACG4pB,EAAY,KAAhB,IACIqmI,OAAS,EACb,GAAkB,MAAdhB,EACAR,GAAiB,EACjBwB,EAAS,QAER,KAAIvC,EAAO9qJ,KAAKF,EAASkR,MAAM66I,IAmBhC,OALIn/H,EAAOxsB,QAC4B,eAAnCwsB,EAAOA,EAAOxsB,OAAS,GAAGO,MAC1BisB,EAAOrb,MAEXi8I,EAAS1B,EAAYl/H,GACdm/H,EAlBgC,MAAnC/rJ,EAASihD,OAAO8qG,KAChB7kI,EAAY,GACZ6kI,GAAiB,GAErBwB,EAASrB,EAAQ,EAerB,CACuC,MAAnClsJ,EAASihD,OAAO8qG,KAChB7kI,EAAYqmI,EAC+B,MAAvCvtJ,EAASihD,OAAO8qG,EAAgB,IAChCwB,EAAS,IACTxB,GAAiB,GAGjBwB,EAASrB,EAAQ,IAGV,MAAXqB,EACA3gI,EAAO/b,KAAK,CAAElQ,KAAM,YAAaumB,UAAWA,MAGP,QAAhC8kI,EAAK7vJ,EAAQsxJ,qBAAkC,IAAPzB,EAAgBA,GAAM7vJ,EAAQ0wJ,WACvEU,EAASA,EAAOprJ,eAEpByqB,EAAO/b,KAAK,CAAElQ,KAAM,MAAO6N,KAAM++I,EAAQrmI,UAAWA,IAE5D,CAER,CAEA,OADAsmI,EAAS1B,EAAYl/H,GACdm/H,CACX,CACA,SAASyB,EAAS1B,EAAYl/H,GAC1B,GAAIk/H,EAAW1rJ,OAAS,GAAuB,IAAlBwsB,EAAOxsB,OAChC,MAAM,IAAIoH,MAAM,sBAEpBskJ,EAAWj7I,KAAK+b,EACpB,CA5RAtZ,EAAAA,QARA,SAAetT,EAAU7D,GACrB,IAAI2vJ,EAAa,GACbU,EAAWX,EAAcC,EAAY,GAAK9rJ,EAAU7D,EAAS,GACjE,GAAIqwJ,EAAWxsJ,EAASI,OACpB,MAAM,IAAIoH,MAAM,uBAAyBxH,EAASkR,MAAMs7I,IAE5D,OAAOV,CACX,C,iCCjJA,IAAIlB,EAAiBjvJ,MAAQA,KAAKivJ,eAAkB,SAAUvvI,EAAIC,EAAMuvI,GACpE,GAAIA,GAA6B,IAArBx7I,UAAUjP,OAAc,IAAK,IAA4B0qJ,EAAxBloJ,EAAI,EAAGC,EAAIyY,EAAKlb,OAAYwC,EAAIC,EAAGD,KACxEkoJ,GAAQloJ,KAAK0Y,IACRwvI,IAAIA,EAAKzvJ,MAAMC,UAAU4V,MAAMxV,KAAK4f,EAAM,EAAG1Y,IAClDkoJ,EAAGloJ,GAAK0Y,EAAK1Y,IAGrB,OAAOyY,EAAGvf,OAAOgvJ,GAAMzvJ,MAAMC,UAAU4V,MAAMxV,KAAK4f,GACtD,EACA8B,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,IACtD,IAAIwoJ,EAAc,CACdwC,OAAQ,GACRxxJ,QAAS,IACT6uB,MAAO,IACP5c,IAAK,IACLw/I,IAAK,IACLj9H,IAAK,IACLk9H,OAAQ,KAERC,EAAgB,IAAIriD,IAAIo/C,EAAcA,EAAc,GAAIxtI,OAAOvB,KAAKqvI,GACnE3nJ,KAAI,SAAUuqJ,GAAW,OAAO5C,EAAY4C,EAAU,IACtDrrJ,OAAOJ,UAAU,GAAO,CACzB,IACA,IACA,IACA,IACA,KACA,IACA,IACA,MACD,IAMH,SAASwmD,EAAU7oD,GACf,OAAOA,EAASuD,IAAIwqJ,GAAsBh6I,KAAK,KACnD,CAEA,SAASg6I,EAAqBp+H,GAC1B,OAAOA,EAAMpsB,IAAIyqJ,GAAgBj6I,KAAK,GAC1C,CACA,SAASi6I,EAAer+H,GACpB,OAAQA,EAAMhvB,MAEV,IAAK,QACD,MAAO,MACX,IAAK,SACD,MAAO,MACX,IAAK,UACD,MAAO,MACX,IAAK,WACD,MAAO,MACX,IAAK,aACD,MAAO,IACX,IAAK,YACD,OAAOstJ,EAAat+H,EAAMzI,WAAa,IAC3C,IAAK,MACD,OAAOgnI,EAAkBv+H,GAC7B,IAAK,iBACD,MAAO,KAAOw+H,EAAWx+H,EAAMnhB,MACnC,IAAK,SACD,OAAmB,OAAfmhB,EAAMryB,KACC,IAAM6wJ,EAAWx+H,EAAMnhB,MACR,iBAAfmhB,EAAMryB,KACN,IAAM6wJ,EAAWx+H,EAAMnhB,MAAQ,IAAM2/I,EAAWx+H,EAAMryB,MAAQ,IAElE,IAAM6wJ,EAAWx+H,EAAMnhB,MAAQ,IAAMq6C,EAAUl5B,EAAMryB,MAAQ,IACxE,IAAK,YACD,GAAmB,OAAfqyB,EAAMnhB,MACW,WAAjBmhB,EAAMg9H,SACLh9H,EAAMi9H,aACNj9H,EAAMzI,UACP,MAAO,IAAMinI,EAAWx+H,EAAMjtB,OAElC,GAAmB,UAAfitB,EAAMnhB,MACW,YAAjBmhB,EAAMg9H,SACLh9H,EAAMi9H,aACNj9H,EAAMzI,UACP,MAAO,IAAMinI,EAAWx+H,EAAMjtB,OAElC,IAAIgqJ,EAASwB,EAAkBv+H,GAC/B,MAAqB,WAAjBA,EAAMg9H,OACC,IAAMD,EAAS,IAEnB,IAAMA,EAASxB,EAAYv7H,EAAMg9H,QAAU,KAAOwB,EAAWx+H,EAAMjtB,OAAS,KAAOitB,EAAMi9H,WAAa,KAA2B,IAArBj9H,EAAMi9H,WAAuB,IAAM,IAAM,IAGxK,CACA,SAASsB,EAAkBv+H,GACvB,MAAO,GAAKs+H,EAAat+H,EAAMzI,WAAainI,EAAWx+H,EAAMnhB,KACjE,CACA,SAASy/I,EAAa/mI,GAClB,OAAqB,OAAdA,GACc,MAAdA,EAAoB,IAAMinI,EAAWjnI,IAAc,IACpD,EACV,CACA,SAASinI,EAAWhzF,GAChB,OAAOA,EACFzzD,MAAM,IACNnE,KAAI,SAAU+M,GAAK,OAAQu9I,EAAcx8H,IAAI/gB,GAAK,KAAOA,EAAIA,CAAI,IACjEyD,KAAK,GACd,CAhEAT,EAAAA,QAAkBu1C,C,UCjClB,IAAIkL,EAAW,SAAUzgD,GACvB,aAEA,IAEI7E,EAFAugD,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eAEZ6mD,EAA4B,mBAAXluC,OAAwBA,OAAS,CAAC,EACnDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAO7mD,EAAKD,EAAK/F,GAOxB,OANA0a,OAAOya,eAAenvB,EAAKD,EAAK,CAC9B/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IAEL12B,EAAID,EACb,CACA,IAEE8mD,EAAO,CAAC,EAAG,GACb,CAAE,MAAO5yB,GACP4yB,EAAS,SAAS7mD,EAAKD,EAAK/F,GAC1B,OAAOgG,EAAID,GAAO/F,CACpB,CACF,CAEA,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EAC/EC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IAMzC,OAFAG,EAAUW,QAsMZ,SAA0BhB,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQo6H,EAEZ,OAAO,SAAgB37H,EAAQ5R,GAC7B,GAAImT,IAAUq6H,EACZ,MAAM,IAAI7mJ,MAAM,gCAGlB,GAAIwsB,IAAUs6H,EAAmB,CAC/B,GAAe,UAAX77H,EACF,MAAM5R,EAKR,OAAOwxC,GACT,CAKA,IAHA7iD,EAAQijB,OAASA,EACjBjjB,EAAQqR,IAAMA,IAED,CACX,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CAEA,GAAuB,SAAnBzhD,EAAQijB,OAGVjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAElC,GAAuB,UAAnBrR,EAAQijB,OAAoB,CACrC,GAAIuB,IAAUo6H,EAEZ,MADAp6H,EAAQs6H,EACF9+I,EAAQqR,IAGhBrR,EAAQ6hD,kBAAkB7hD,EAAQqR,IAEpC,KAA8B,WAAnBrR,EAAQijB,QACjBjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KAGnCmT,EAAQq6H,EAER,IAAIz9F,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAoB,WAAhBohD,EAAOjwD,KAAmB,CAO5B,GAJAqzB,EAAQxkB,EAAQ2S,KACZmsI,EACAC,EAEA39F,EAAO/vC,MAAQovC,EACjB,SAGF,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAGlB,CAA2B,UAAhByuC,EAAOjwD,OAChBqzB,EAAQs6H,EAGR9+I,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM+vC,EAAO/vC,IAEzB,CACF,CACF,CAlRsBkvC,CAAiBP,EAAS7mD,EAAM6G,GAE7CqgD,CACT,CAaA,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CAAElgB,KAAM,SAAUkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAC7C,CAAE,MAAO8b,GACP,MAAO,CAAEh8B,KAAM,QAASkgB,IAAK8b,EAC/B,CACF,CAlBArpB,EAAQ2oB,KAAOA,EAoBf,IAAImyH,EAAyB,iBACzBG,EAAyB,iBACzBF,EAAoB,YACpBC,EAAoB,YAIpBr+F,EAAmB,CAAC,EAMxB,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CAIvC,IAAIC,EAAoB,CAAC,EACzBA,EAAkBlB,GAAkB,WAClC,OAAOvzD,IACT,EAEA,IAAIwhB,EAAWC,OAAOC,eAClBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MAC/D81B,GACAA,IAA4BrB,GAC5BxxC,EAAO9hB,KAAK20D,EAAyBnB,KAGvCkB,EAAoBC,GAGtB,IAAIC,EAAKH,EAA2B70D,UAClCs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GAWtC,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAASmgB,GAC3C88B,EAAOj0D,EAAWm3B,GAAQ,SAAS5R,GACjC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC9B,GACF,GACF,CA+BA,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAoB,UAAhB+vC,EAAOjwD,KAEJ,CACL,IAAIypB,EAASwmC,EAAO/vC,IAChBne,EAAQ0nB,EAAO1nB,MACnB,OAAIA,GACiB,iBAAVA,GACP8a,EAAO9hB,KAAKgH,EAAO,WACdguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAASlwB,GACtDiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EACjC,IAAG,SAASoK,GACVg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAChC,IAGKm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAASk+B,GAI9C1mC,EAAO1nB,MAAQouD,EACfx+B,EAAQlI,EACV,IAAG,SAASpK,GAGV,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACzC,GACF,CAzBEA,EAAOq+B,EAAO/vC,IA0BlB,CAEA,IAAIkwC,EAgCJp1D,KAAK60D,QA9BL,SAAiB/9B,EAAQ5R,GACvB,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAASp+B,EAASC,GACvCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC/B,GACF,CAEA,OAAOw+B,EAaLA,EAAkBA,EAAgBn+B,KAChCo+B,EAGAA,GACEA,GACR,CAKF,CA4GA,SAASE,EAAoBjX,EAAUzqC,GACrC,IAAIijB,EAASwnB,EAASj5B,SAASxR,EAAQijB,QACvC,GAAIA,IAAWhkB,EAAW,CAKxB,GAFAe,EAAQyqC,SAAW,KAEI,UAAnBzqC,EAAQijB,OAAoB,CAE9B,GAAIwnB,EAASj5B,SAAiB,SAG5BxR,EAAQijB,OAAS,SACjBjjB,EAAQqR,IAAMpS,EACdyiD,EAAoBjX,EAAUzqC,GAEP,UAAnBA,EAAQijB,QAGV,OAAOw9B,EAIXzgD,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM,IAAIkU,UAChB,iDACJ,CAEA,OAAOk7B,CACT,CAEA,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KAEzD,GAAoB,UAAhB+vC,EAAOjwD,KAIT,OAHA6O,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM+vC,EAAO/vC,IACrBrR,EAAQyqC,SAAW,KACZgW,EAGT,IAAIsB,EAAOX,EAAO/vC,IAElB,OAAM0wC,EAOFA,EAAKpvC,MAGP3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAGpC8M,EAAQqV,KAAOo1B,EAASwX,QAQD,WAAnBjiD,EAAQijB,SACVjjB,EAAQijB,OAAS,OACjBjjB,EAAQqR,IAAMpS,GAUlBe,EAAQyqC,SAAW,KACZgW,GANEsB,GA3BP/hD,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAC5BvlB,EAAQyqC,SAAW,KACZgW,EA+BX,CAqBA,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CAAEwQ,OAAQD,EAAK,IAEvB,KAAKA,IACPvQ,EAAMyQ,SAAWF,EAAK,IAGpB,KAAKA,IACPvQ,EAAM0Q,WAAaH,EAAK,GACxBvQ,EAAM2Q,SAAWJ,EAAK,IAGxBh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACvB,CAEA,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBACPiwD,EAAO/vC,IACdugC,EAAM8Q,WAAatB,CACrB,CAEA,SAASd,EAAQJ,GAIf/zD,KAAKq2D,WAAa,CAAC,CAAEJ,OAAQ,SAC7BlC,EAAYp9C,QAAQo/C,EAAc/1D,MAClCA,KAAKgxB,OAAM,EACb,CA6BA,SAAS4N,EAAO43B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EACF,OAAOA,EAAe12D,KAAKy2D,GAG7B,GAA6B,mBAAlBA,EAASttC,KAClB,OAAOstC,EAGT,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EAAGiiB,EAAO,SAASA,IAC1B,OAASjiB,EAAIuvD,EAAS/xD,QACpB,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAGxB,OAFAiiB,EAAKniB,MAAQyvD,EAASvvD,GACtBiiB,EAAK1C,MAAO,EACL0C,EAOX,OAHAA,EAAKniB,MAAQ+L,EACboW,EAAK1C,MAAO,EAEL0C,CACT,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAGA,MAAO,CAAEA,KAAMwtC,EACjB,CAGA,SAASA,IACP,MAAO,CAAE3vD,MAAO+L,EAAW0T,MAAM,EACnC,CA8MA,OA5mBA+tC,EAAkB50D,UAAYg1D,EAAG/oD,YAAc4oD,EAC/CA,EAA2B5oD,YAAc2oD,EACzCA,EAAkBoC,YAAc/C,EAC9BY,EACAd,EACA,qBAaF/7C,EAAQi/C,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAOjrD,YAClD,QAAOkrD,IACHA,IAASvC,GAG2B,uBAAnCuC,EAAKH,aAAeG,EAAKjkD,MAEhC,EAEA8E,EAAQo/C,KAAO,SAASF,GAQtB,OAPIp1C,OAAOixC,eACTjxC,OAAOixC,eAAemE,EAAQrC,IAE9BqC,EAAOrK,UAAYgI,EACnBZ,EAAOiD,EAAQnD,EAAmB,sBAEpCmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAC1BkC,CACT,EAMAl/C,EAAQq/C,MAAQ,SAAS9xC,GACvB,MAAO,CAAEgwC,QAAShwC,EACpB,EAqEA0vC,EAAsBE,EAAcn1D,WACpCm1D,EAAcn1D,UAAU6zD,GAAuB,WAC7C,OAAOxzD,IACT,EACA2X,EAAQm9C,cAAgBA,EAKxBn9C,EAAQs/B,MAAQ,SAAS4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxC,IAAhBA,IAAwBA,EAAcpV,SAE1C,IAAIsX,EAAO,IAAInC,EACbx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAC7BgB,GAGF,OAAOp9C,EAAQi/C,oBAAoB9C,GAC/BmD,EACAA,EAAK/tC,OAAO+N,MAAK,SAASxI,GACxB,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC3C,GACN,EAqKA0rC,EAAsBD,GAEtBf,EAAOe,EAAIjB,EAAmB,aAO9BiB,EAAGpB,GAAkB,WACnB,OAAOvzD,IACT,EAEA20D,EAAGp5C,SAAW,WACZ,MAAO,oBACT,EAiCA5D,EAAQuI,KAAO,SAASiX,GACtB,IAAIjX,EAAO,GACX,IAAK,IAAIpT,KAAOqqB,EACdjX,EAAKhL,KAAKpI,GAMZ,OAJAoT,EAAKmW,UAIE,SAASnN,IACd,KAAOhJ,EAAKzb,QAAQ,CAClB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAGT,OAFAjO,EAAKniB,MAAQ+F,EACboc,EAAK1C,MAAO,EACL0C,CAEX,CAMA,OADAA,EAAK1C,MAAO,EACL0C,CACT,CACF,EAoCAvR,EAAQinB,OAASA,EAMjBu1B,EAAQx0D,UAAY,CAClBiM,YAAauoD,EAEbnjC,MAAO,SAASkmC,GAcd,GAbAl3D,KAAKw1B,KAAO,EACZx1B,KAAKkpB,KAAO,EAGZlpB,KAAKw1D,KAAOx1D,KAAKy1D,MAAQ3iD,EACzB9S,KAAKwmB,MAAO,EACZxmB,KAAKs+C,SAAW,KAEhBt+C,KAAK82B,OAAS,OACd92B,KAAKklB,IAAMpS,EAEX9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAEnBY,EACH,IAAK,IAAIrkD,KAAQ7S,KAEQ,MAAnB6S,EAAKyyC,OAAO,IACZzjC,EAAO9hB,KAAKC,KAAM6S,KACjBpD,OAAOoD,EAAK0C,MAAM,MACrBvV,KAAK6S,GAAQC,EAIrB,EAEAoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EAEZ,IACI2wC,EADYn3D,KAAKq2D,WAAW,GACLE,WAC3B,GAAwB,UAApBY,EAAWnyD,KACb,MAAMmyD,EAAWjyC,IAGnB,OAAOllB,KAAKo3D,IACd,EAEA1B,kBAAmB,SAAS2B,GAC1B,GAAIr3D,KAAKwmB,KACP,MAAM6wC,EAGR,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GAYnB,OAXAtC,EAAOjwD,KAAO,QACdiwD,EAAO/vC,IAAMmyC,EACbxjD,EAAQqV,KAAOouC,EAEXC,IAGF1jD,EAAQijB,OAAS,OACjBjjB,EAAQqR,IAAMpS,KAGNykD,CACZ,CAEA,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GACxBguD,EAASxP,EAAM8Q,WAEnB,GAAqB,SAAjB9Q,EAAMwQ,OAIR,OAAO3iD,EAAO,OAGhB,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAC9BgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAEpC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SACpB,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GACzB,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAC3B,OAAO7iD,EAAOmyC,EAAM0Q,WAGxB,MAAO,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SACpB,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OAG3B,KAAIuB,EAMT,MAAM,IAAI5rD,MAAM,0CALhB,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WACpB,OAAO7iD,EAAOmyC,EAAM0Q,WAKxB,CACF,CACF,CACF,EAEAR,OAAQ,SAAS3wD,EAAMkgB,GACrB,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MACrB3T,EAAO9hB,KAAK0lD,EAAO,eACnBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CAChC,IAAIuB,EAAejS,EACnB,KACF,CACF,CAEIiS,IACU,UAAT1yD,GACS,aAATA,IACD0yD,EAAazB,QAAU/wC,GACvBA,GAAOwyC,EAAavB,aAGtBuB,EAAe,MAGjB,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EAIvD,OAHAtB,EAAOjwD,KAAOA,EACdiwD,EAAO/vC,IAAMA,EAETwyC,GACF13D,KAAK82B,OAAS,OACd92B,KAAKkpB,KAAOwuC,EAAavB,WAClB7B,GAGFt0D,KAAKgP,SAASimD,EACvB,EAEAjmD,SAAU,SAASimD,EAAQmB,GACzB,GAAoB,UAAhBnB,EAAOjwD,KACT,MAAMiwD,EAAO/vC,IAcf,MAXoB,UAAhB+vC,EAAOjwD,MACS,aAAhBiwD,EAAOjwD,KACThF,KAAKkpB,KAAO+rC,EAAO/vC,IACM,WAAhB+vC,EAAOjwD,MAChBhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAC9BllB,KAAK82B,OAAS,SACd92B,KAAKkpB,KAAO,OACa,WAAhB+rC,EAAOjwD,MAAqBoxD,IACrCp2D,KAAKkpB,KAAOktC,GAGP9B,CACT,EAEAvjB,OAAQ,SAASolB,GACf,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAGvB,OAFAn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UACtCE,EAAc7Q,GACP6O,CAEX,CACF,EAEA,MAAS,SAAS2B,GAChB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAoB,UAAhBtB,EAAOjwD,KAAkB,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EAChB,CACA,OAAOkS,CACT,CACF,CAIA,MAAM,IAAI9rD,MAAM,wBAClB,EAEA+rD,cAAe,SAASpB,EAAUX,EAAYC,GAa5C,OAZA91D,KAAKs+C,SAAW,CACdj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhB91D,KAAK82B,SAGP92B,KAAKklB,IAAMpS,GAGNwhD,CACT,GAOK38C,CAET,CA/sBe,CAotBgBD,EAAOC,SAGtC,IACE0gD,mBAAqBD,CACvB,CAAE,MAAOE,GAUPv4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAC1C,C,GC1uBIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAGpE9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,0DCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,qC,aCAxD,SAAS3yB,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KACnB,CAAE,MAAOsd,GAEP,YADAuS,EAAOvS,EAET,CAEIuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEvC,CAEe,SAASC,EAAkBr9E,GACxC,OAAO,WACL,IAAImJ,EAAOhN,KACPsZ,EAAO5F,UACX,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GAEzB,SAAS0nE,EAAMj6E,GACb+5E,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EAClE,CAEA,SAASk6E,EAAOjgD,GACd8/C,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EACnE,CAEAggD,OAAMluE,EACR,GACF,CACF,C,sBClCA,MAAM,EAA+BykG,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAzC,SAAS35C,IAetB,OAdAA,EAAWr4C,OAAOs+B,QAAU,SAAUp/C,GACpC,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GAEvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CAEA,OAAOnM,CACT,EAEOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CChBe,SAASmkD,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,c,aCElD/yC,EAAQ,SAAC5zD,GAAG,OAAK,SAACsiC,GAAI,OAAKoqB,IAAAA,WAAekH,MAAM,uCAAuC5zD,EAAOsiC,EAAK,GAE5FyjH,EAAepxI,OAAOqxI,OAAO,CACxC,CACE/rJ,MAAO,WACP8L,KAAM6tD,EAAM,iBACZiU,YAAajU,EAAM,yBAErB,CACE35D,MAAO,SACP8L,KAAM6tD,EAAM,eACZiU,YAAajU,EAAM,uBAErB,CACE35D,MAAO,OACP8L,KAAM6tD,EAAM,aACZiU,YAAajU,EAAM,uBCXVqyF,EAAyB,SAAA98B,GAAA,SAAA88B,IAAA,QAAA9rD,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAiCuB,OAjCvB2rE,EAAAgvB,EAAAl2H,KAAA0T,MAAAwiH,EAAA,OAAA91H,OAAAmZ,KAAA,MACpC+e,MAAQ,CAMNy0B,KAAM,KAONkmG,QAAQ,EAQRC,iBAAangJ,GACdm0F,EAUDn7E,UAAY,iBAAM,yCAAyC,EAAAm7E,CAAA,CAjCvBptC,EAAAk5F,EAAA98B,GAiCuB,IAAA7J,EAAA2mC,EAAApzJ,UAgG1D,OAhG0DysH,EAR3D7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKq4B,MAAMy0B,KAAO9sD,KAAK0qB,MAAMoiC,KAE7B9sD,KAAKq4B,MAAM46H,YAAcjzJ,KAAKq4B,MAAMy0B,KAAKomG,YAAc,UACzD,EAAC9mC,EAIDjjH,MAAA,WAAQ,IAAAgqJ,EACN,OAAOnzJ,KAAK0gE,MAAM,QAAS,CAAEllB,SAAUxmC,EAAA,UAAoB,OAApBm+I,EAAKnzJ,KAAKq4B,MAAMy0B,OAAiB,MAA5BqmG,EAAiBx8F,iBAAF,EAAfw8F,EAAiBx8F,gBAC/D,EAACy1D,EAEDh2F,QAAA,WAAU,IAAAo2F,EAAA,KAER,KAAMxsH,KAAKq4B,MAAMy0B,gBAAgBm+C,KAE/B,OACEj2F,EAAA,OAAK69G,MAAM,cACT79G,EAAA,SAAIhV,KAAK0gE,MAAM,6BAA4BlH,IAAAA,MAAU4J,UAAU,SAAW,SAAW,OAK3F,IAAMtW,EAAO9sD,KAAKq4B,MAAMy0B,KAElBsmG,EAAwBP,EAAa/yJ,QAAO,SAACG,EAAKkpG,GAAI,IAAAkqD,EAAA,OAAAv5F,EAAA,GAAW75D,IAAGozJ,EAAA,IAAGlqD,EAAKpiG,OAAQoiG,EAAKt2F,OAAMwgJ,GAAA,GAAK,CAAC,GACrGC,EAAgBT,EAAahyJ,MAAK,SAACqG,GAAC,OAAKA,EAAEH,QAAUylH,EAAKn0F,MAAM46H,WAAW,IAEjF,OACEj+I,EAAA,OAAK69G,MAAM,cACT79G,EAAA,gBACEA,EAAA,cAAShV,KAAK0gE,MAAM,cAAe,CAAE5T,KAAAA,KAErC93C,EAAA,OAAK69G,MAAM,gCACT79G,EAAA,SAAO6iH,IAAI,iCAAiC73H,KAAK0gE,MAAM,wBAEvD1rD,EAAC6+F,IAAM,CACL7qF,SAAUhpB,KAAKq4B,MAAM26H,OACrBrpI,GAAG,gCACHovC,SAAU/4D,KAAKuzJ,oBAAoB7jH,KAAK1vC,MAExC+G,MAAOusJ,EAAcvsJ,MACrB,8CAA6CusJ,EAAcvsJ,MAAK,QAChEvG,QAAS4yJ,IAIXp+I,EAAA,KAAG2U,GAAE,0BAA4B2pI,EAAcvsJ,MAAK,SAAUusJ,EAAc3+E,YAAY,CAAE7nB,KAAAA,OAG9F93C,EAAA,YAAU69G,MAAM,kCACd79G,EAACyuD,IAAM,CAACz6C,SAAUhpB,KAAKq4B,MAAM26H,OAAQngC,MAAM,SAASvwE,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,OACzEA,KAAK0gE,MAAM,eAEd1rD,EAACyuD,IAAM,CAACz6C,SAAUhpB,KAAKq4B,MAAM26H,OAAQngC,MAAM,yBAAyBvwE,QAAStiD,KAAKwzJ,gBAAgB9jH,KAAK1vC,MAAO0+D,QAAS1+D,KAAKq4B,MAAM26H,QAC/HhzJ,KAAK0gE,MAAM,cAKtB,EAEA0rD,EAGAmnC,oBAAA,WAIE,IAAME,EAAgBzzJ,KAAKK,EAAE,iBAAiB,GAE9CL,KAAKq4B,MAAM46H,YAAcQ,EAAc1sJ,OAAS,UAClD,EAEAqlH,EAGA1rD,MAAA,SAAM5zD,GAAc,QAAA4mJ,EAAAC,EAAAjgJ,UAAAjP,OAAN2qC,EAAI,IAAA1vC,MAAAi0J,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJxkH,EAAIwkH,EAAA,GAAAlgJ,UAAAkgJ,GAChB,OAAOF,EAAAl6F,IAAAA,YAAekH,MAAKjtD,MAAAigJ,EAAA,uDAAuD5mJ,GAAG3M,OAAOivC,GAC9F,EAACg9E,EAEDlnD,SAAA,WACEllE,KAAKwzJ,iBACP,EAEApnC,EAGMonC,gBAAe,eAAAK,EAAA3yE,EAAA9tB,IAAAA,MAArB,SAAA0gG,IAAA,IAAAC,EAAA,OAAA3gG,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,OAKE,GAJM6qI,EAA4C,aAA3B/zJ,KAAKq4B,MAAM46H,YAA6B,KAAOjzJ,KAAKq4B,MAAM46H,YAEjFjzJ,KAAKq4B,MAAM26H,QAAS,EAGhBhzJ,KAAKq4B,MAAMy0B,KAAKsW,UAAU,eAAiB2wF,EAAc,CAAAhlI,EAAA7F,KAAA,QAC/C,OAAZlpB,KAAK2M,OAAOoiB,EAAA4mC,OAAA,wBAAA5mC,EAAA7F,KAAA,EAIElpB,KAAKq4B,MAAMy0B,KAAKob,KAAK,CAAE8rF,YAAaD,IAAiB,OAA9DhlI,EAAAymC,KAEPx1D,KAAK2M,OAAO,wBAAAoiB,EAAAmO,OAAA,GAAA42H,EAAA,UACb,yBAAAD,EAAApgJ,MAAA,KAAAC,UAAA,EAdoB,GAcpBq/I,CAAA,CAjImC,CAASlqF,KCP/C,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,6B,sBCoBjD,SAASwgD,EACd3zF,EACAj8D,EACA6vJ,GAIA,OAAOC,EAAe7zF,GAFC8zF,EAAAA,EAAAA,OAAQ/vJ,GAEa6vJ,EAC9C,CAEA,SAASC,EACP7zF,EACAvyC,EACAmmI,GAEA,IAAIzzH,EAKFA,EAHG/gC,MAAMU,QAAQkgE,GAGTA,EAFA,CAACA,GAKX,IAAIu0D,OAAgE/hH,EAqCpE,OAnCA2tB,EAAM6gB,MAAK,SAAC9+B,GACV,GAAoB,kBAATA,GAAsC,iBAATA,GAAqC,iBAATA,GAAhE,MAAqFA,EAAqC,OAAO,EAErI,GAAI9iB,MAAMU,QAAQoiB,GAAO,CACvB,IAAIiM,EAAS0lI,EAAe3xI,EAAMuL,EAAWmmI,GAE7C,QAAIzlI,IACFomG,EAAQpmG,GACD,EAIX,CAEA,GAwBJ,SAAiCi0B,EAA2C30B,GAC1E,OAAOA,EAAUuzB,MAAK,SAACj9C,GACrB,OAAOA,EAASqqD,OAAM,SAAC2lG,GAAuB,IAAAC,EAAAC,EAAAC,EAAAC,EAC5C,OAAQJ,EAAUrvJ,MAChB,IAAK,MACH,OAAO09C,EAAMt2B,MAAQioI,EAAUxhJ,KAEjC,IAAK,YACH,IAAK6vC,EAAMh4B,MAAO,OAAO,EAEF,UAAnB2pI,EAAUxhJ,OAAkBwhJ,EAAUxhJ,KAAO,aAEjD,IAAIvO,EAAOo+C,EAAMh4B,MAAM2pI,EAAUxhJ,MAWjC,OATuB,cAAnBwhJ,EAAUxhJ,MAAwC,iBAATvO,IAC3CA,EAAOA,EAAKw6C,QAGVu1G,EAAUpD,YAA8B,iBAAT3sJ,IACjCA,EAAOA,EAAKkC,cACZ6tJ,EAAUttJ,MAAQstJ,EAAUttJ,MAAMP,eAG5B6tJ,EAAUrD,QAChB,IAAK,SACH,OAAOtuG,EAAMh4B,MAAMje,eAAe4nJ,EAAUxhJ,MAC9C,IAAK,SACH,OAAOvO,IAAS+vJ,EAAUttJ,MAC5B,IAAK,QACH,OAAW,OAAJutJ,EAAAhwJ,IAAgB,MAAhBgwJ,EAAM9vD,gBAAF,EAAJ8vD,EAAM9vD,WAAa6vD,EAAUttJ,UAAU,EAChD,IAAK,MACH,OAAW,OAAJwtJ,EAAAjwJ,IAAc,MAAdiwJ,EAAMjwF,cAAF,EAAJiwF,EAAMjwF,SAAW+vF,EAAUttJ,UAAU,EAC9C,IAAK,UACH,OAAY,OAALytJ,EAAClwJ,IAAsB,MAAvBkwJ,EAAkBzoJ,OAAY,OAAP0oJ,EAAvBD,EAAkBzoJ,MAAQ,OAAc,MAAxC0oJ,EAAgCv6F,cAA3B,EAALu6F,EAAgCv6F,SAAWm6F,EAAUttJ,UAAU,GAI9E,OAAO,CACT,GACF,GACF,CAhEQ2tJ,CAAwBlyI,EAAMuL,GAEhC,OADA8mG,EAAQryG,GACD,EAGT,GAAI9iB,MAAMU,QAAQoiB,EAAK8S,UAAW,CAChC,IAAI7G,EAAS0lI,EAAe3xI,EAAK8S,SAAUvH,GAE3C,QAAIU,IACFomG,EAAQpmG,GACD,EAIX,CAEA,OAAO,CACT,IAEIylI,GAAoBr/B,GAAOq/B,EAAiBr/B,GAEzCA,CACT,CCnEA,SAAS8/B,EAAqB7nG,GACtBA,aAAgBm+C,KAEtBzxC,IAAAA,MAAU9sD,KAAKqmJ,EAA2B,CAAEjmG,KAAAA,GAC9C,CClBA,MAAM,EAA+ByqD,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCGnCyd,EAAyB,SAAA0jC,GAAA,SAAA1jC,IAAA,OAAA0jC,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAAq3D,EAAA0jC,GAAA,IAAAxoC,EAAA8E,EAAAvxH,UAqB3C,OArB2CysH,EAC5ClsD,KAAA,WACE,MAAO,qBACT,EAACksD,EAEDh8F,KAAA,WACE,IACM8tC,EADel+D,KAAK0qB,MAAM4zD,aACAC,UAEhC,OAAO/kB,IAAAA,MAAU0E,WAAWA,EAC9B,EAACkuD,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,4DAA6D,CACvF5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,WAC9B39E,MAAOnJ,KAAK0qB,MAAM4zD,aAAaC,UAAUp1E,SAE7C,EAACijH,EAEDz8C,QAAA,WACE,OAAO,IACT,EAACuhD,CAAA,CArB2C,CAASrqC,KCAlC8hC,EAAmB,SAAAisC,GAAA,SAAAjsC,IAAA,OAAAisC,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA8uD,EAAAisC,GAAA,IAAAxoC,EAAAzD,EAAAhpH,UAqBrC,OArBqCysH,EACtClsD,KAAA,WACE,MAAO,qBACT,EAACksD,EAEDh8F,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAC1BpgB,EAAaogB,EAAaC,UAC1BnoD,EAAUkoD,EAAaloD,WAAa,CAAC,EAE3C,OAAOojC,IAAAA,MAAU0E,WAAWA,EAAY9nC,EAAQ6wD,WAClD,EAACmlC,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,sDAAuD,CACjF5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YAElC,EAACslC,EAEDz8C,QAAA,WACE,OAAO,IACT,EAACg5C,CAAA,CArBqC,CAAS9hC,KCA5BguE,EAAuB,SAAAD,GAAA,SAAAC,IAAA,OAAAD,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAAg7F,EAAAD,GAAA,IAAAxoC,EAAAyoC,EAAAl1J,UAoBzC,OApByCysH,EAC1ClsD,KAAA,WACE,MAAO,kBACT,EAACksD,EAEDh8F,KAAA,WACE,IACM08B,EADe9sD,KAAK0qB,MAAM4zD,aACNC,UAE1B,OAAO/kB,IAAAA,MAAU1M,KAAKA,EACxB,EAACs/D,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,0DAA2D,CACrF5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YAElC,EAACslC,EAEDz8C,QAAA,WACE,OAAO,IACT,EAACklF,CAAA,CApByC,CAAShuE,KCAhCiuE,EAAyB,SAAAF,GAAA,SAAAE,IAAA,OAAAF,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAAi7F,EAAAF,GAAA,IAAAxoC,EAAA0oC,EAAAn1J,UAoB3C,OApB2CysH,EAC5ClsD,KAAA,WACE,MAAO,mBACT,EAACksD,EAEDh8F,KAAA,WACE,IACM08B,EADe9sD,KAAK0qB,MAAM4zD,aACNC,UAE1B,OAAO/kB,IAAAA,MAAU1M,KAAKA,EACxB,EAACs/D,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,4DAA6D,CACvF5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YAElC,EAACslC,EAEDz8C,QAAA,WACE,OAAO,IACT,EAACmlF,CAAA,CApB2C,CAASjuE,KCHvD,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,GAA+B8D,OAAOjK,WAAW,mBCAjD,GAA+BiK,OAAOjK,WAAW,sBCAjD,GAA+BiK,OAAOC,KAAK/D,OAAO,oC,eCUlDvrE,GAAW6sH,GAAAA,MAAkBhlC,qBAGnC,kBAAgBvkD,GAEd,IAAMhrE,EAAU0nC,GAASsjC,GAKzB,OAHAhrE,EAAQ8rG,MAAQ9yC,IAAAA,WAAekH,MAAM,wCAG9BlgE,CACR,ECrBK,GAA+B+2G,OAAOC,KAAK/D,OAAO,+B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,uB,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,oB,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,iC,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,oB,ICGnCuhD,GAAoB,SAAAvpC,GAAA,SAAAupC,IAAA,OAAAvpC,EAAAh4G,MAAA,KAAAC,YAAA,KAStC,OATsCmmD,EAAAm7F,EAAAvpC,GAAAupC,EAAAr1J,UACvCglC,KAAA,WACE,IAAQmoB,EAAS9sD,KAAK0qB,MAAdoiC,KAER,OACE93C,EAAA,OAAK8W,UAAU,QACb9W,EAACk0E,IAAQ,CAACp8B,KAAMA,EAAMhhC,UAAU,wBAAwBs9D,wBAAwB,qCAGtF,EAAC4rE,CAAA,CATsC,C,OAAS35F,ICHlD,MAAM,GAA+Bk8C,OAAOC,KAAK/D,OAAO,sC,eCOnCwhD,GAAW,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAzhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAAo7F,EAAAC,GAAA,IAAA9oC,EAAA6oC,EAAAt1J,UAwD7B,OAxD6BysH,EAC9B7pE,OAAA,SAAOH,GACL8yG,EAAAv1J,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK2uF,SACP,EAACy9B,EAEDz9B,QAAA,WACE3uF,KAAK0+D,SAAU,EACf1+D,KAAKqpF,SAAS7vB,IAAAA,QAAY1M,KAAKtR,YAC/Bx7C,KAAKm1J,cAAgB37F,IAAAA,QAAY1M,KAAKqoG,gBAEtCn1J,KAAK0+D,SAAU,EACf1pD,EAAEwqC,QACJ,EAAC4sE,EAEDgpC,wBAAA,SAAwBtoG,GACtB0M,IAAAA,MAAU9sD,KAAKqmJ,EAA2B,CAAEjmG,KAAAA,GAC9C,EAACs/D,EAEDh2F,QAAA,WACE,OAAIp2B,KAAK0+D,QAEL1pD,EAAA,OAAK8W,UAAU,kBACb9W,EAAC0tD,KAAgB,OAKW,IAA9B1iE,KAAKm1J,cAAc1wJ,OAEnBuQ,EAAA,OAAK8W,UAAU,kBACb9W,EAAC86D,KAAW,CAACv/D,KAAMipD,IAAAA,WAAekH,MAAM,wDAM5C1rD,EAAA,OAAK8W,UAAU,oBACb9W,EAAA,MAAI8W,UAAU,0BACX9rB,KAAKm1J,cAAcvtJ,KAAI,SAACklD,GACvB,OACE93C,EAAA,MAAIlI,IAAKggD,EAAKnjC,KAAM,UAASmjC,EAAKnjC,MAChC3U,EAACggJ,GAAoB,CAACloG,KAAMA,IAGlC,KAIR,EAACs/D,EAED1/G,KAAA,WACE1M,KAAK8sD,KAAO0M,IAAAA,QAAY1M,KAExB93C,EAAEwqC,QACJ,EAACy1G,CAAA,CAxD6B,CAAShsE,KCHzC,UACE,IAAIwvB,KAAAA,OAAaxN,KACd7nC,UAAmB,YACnBsZ,QAAc,iBACdA,QAAc,cACdtZ,UAAmB,gBACnBA,UAAmB,iBACnBA,UAAkB,kBAClBA,UAAkB,kBAErB,IAAIq1C,KAAAA,SAAgB3/F,IAAI,qBAAsB,6BAA8Bm8I,KCG9Ez7F,IAAAA,aAAiB1gD,IACf,qBACA,YzBEArY,EAAAA,EAAAA,QAAOoqF,IAAc,gBAAgB,SAAUltB,EAAO7Q,GACpD,IAAMuoG,GAAyBvoG,EAAKwoG,iBAAmBxoG,EAAKomG,WACtDhzF,EAAO,sBAETm1F,GACF13F,EAAM7kD,IACJ,WACA9D,EAACyuD,IAAM,CACLvD,KAAMA,EACN5d,QAAO4+B,EAAA9tB,IAAAA,MAAE,SAAA0gG,IAAA,OAAA1gG,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,cAAA6F,EAAA7F,KAAA,EACS4jC,EAAKob,KAAK,CAAE8rF,YAAa,OAAO,OAAzCjlI,EAAAymC,KACPxgD,EAAEwqC,SAAS,wBAAAzwB,EAAAmO,OAAA,GAAA42H,EAAA,MAGZt6F,IAAAA,WAAekH,MAAM,2DAMzBlH,IAAAA,QAAY1M,MACb0M,IAAAA,QAAY1M,OAASA,GACpBA,EAAKwoG,kBACND,KACC77F,IAAAA,MAAU4J,UAAU,wCACc,uBAA/B5J,IAAAA,QAAY73D,KAAKq6D,WAAsCxC,IAAAA,MAAU4J,UAAU,6BAKjFzF,EAAM7kD,IACJ,SACA9D,EAACyuD,IAAM,CAACvD,KAAMA,EAAM5d,QAASqyG,EAAqBjlH,KAAK1vC,KAAM8sD,IAC1D0M,IAAAA,WAAekH,MAAM,0CAAyC5T,EAAKomG,WAAa,gBAAkB,mBAGzG,KAEAzyJ,EAAAA,EAAAA,QAAOyoF,IAAAA,UAAoB,QAAQ,SAAUvkD,GAC3C,IAAMmoB,EAAO9sD,KAAK0qB,MAAMoiC,KACxB,GACG0M,IAAAA,MAAU4J,UAAU,wCACpB5J,IAAAA,QAAY1M,MACb0M,IAAAA,QAAY1M,OAASA,GACpBA,EAAKwoG,kBACN3wH,EAAKja,MAAMoB,UAAUouC,SAAS,mBALhC,CAUA,IAAMq7F,EACJvgJ,EAACyuD,IAAM,CAAC33C,UAAU,SAASo0C,KAAK,sBAAsB5d,QAASqyG,EAAqBjlH,KAAK1vC,KAAM8sD,IAC5FA,EAAKomG,WACF15F,IAAAA,WAAekH,MAAM,uCAAuC5T,EAAKomG,YACjE15F,IAAAA,WAAekH,MAAM,wDAI7BuzF,EAAmBtvH,EAAM,qBAAqB,SAAC27B,GAC7CA,EAAKhrC,SAASvR,OAAO,EAAG,EAAGwxI,EAC7B,GAZA,CAaF,K0B5EA90J,EAAAA,EAAAA,QAAOwoF,IAAAA,UAAoB,YAAY,SAAUtrB,GAC/C,GAAInE,IAAAA,QAAY1M,MAAQ0M,IAAAA,QAAY1M,OAAS9sD,KAAK8sD,KAAM,CACtD,IAAM0oG,EAAqBx1J,KAAK8sD,KAAK2oG,iBAErC93F,EAAM7kD,IACJ,iBACA9D,EAACqmE,IAAU,CAACjrD,KAAMopC,IAAAA,MAAU,qBAAsB,CAAEhe,SAAUx7C,KAAK8sD,KAAKgS,SAAWoB,KAAK,uBACrF1G,IAAAA,WAAekH,MAAM,wCACtB1rD,EAAA,QAAM8W,UAAU,gBAAgB0pI,IAGtC,CACF,KCXA/0J,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAUtf,GAAQ,IAAAu3F,EACxC,OAAfA,EAAI11J,KAAK8sD,SAAgB,MAArB4oG,EAAaxC,UAAbwC,EAAaxC,YACf/0F,EAAOrlD,IACL,iBACA9D,EAACqoE,IAAK,CACJvc,MAAOtH,IAAAA,WAAekH,MAAM,uCAAuC1gE,KAAK8sD,OAAOomG,YAC/EhzF,KAAK,sBACLl7D,KAAK,WAIb,KAEAvE,EAAAA,EAAAA,QAAOwqG,IAAAA,UAAgB,UAAU,SAAU9sC,GACrCn+D,KAAKkzJ,YACP/0F,EAAOrlD,IACL,iBACA9D,EAACqoE,IAAK,CAACvc,MAAOtH,IAAAA,WAAekH,MAAM,uCAAuC1gE,KAAKkzJ,YAAehzF,KAAK,sBAAsBl7D,KAAK,WAGpI,KCrBAvE,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,gBAAgB,SAAUt0B,GAAO,IAAAspC,EAAA,KAC9DtpC,EAAM7kD,IACJ,qBACA9D,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAK8sD,KAAK2kC,cAAckkE,aAC/B58F,SAAU,SAAChyD,GACTkgG,EAAK2uD,qBAAsB,EAE3B3uD,EAAKn6C,KAAK2lC,gBAAgB,CAAEkjE,aAAc5uJ,IAASkwB,MAAK,WACtDgwE,EAAK2uD,qBAAsB,EAC3B5gJ,EAAEwqC,QACJ,GACF,EACAkf,QAAS1+D,KAAK41J,qBAEbp8F,IAAAA,WAAekH,MAAM,kDAG5B,ICfIlH,IAAAA,aAAiB9jC,IAAI,qBAEvBq/H,GAAAA,MAAkBhlC,qBAAuBA,GAEzCglC,GAAAA,MAAkBhlC,qBAAqB,0BAEvCtvH,EAAAA,EAAAA,QAAO0vF,KAAAA,UAA+B,iBAAiB,SAAUlzC,GAC/D,GAAK83G,GAAAA,MAAkB3kC,mBAAsB52D,IAAAA,QAAY1M,KAAzD,CAEK9sD,KAAKixH,aACRjxH,KAAKixH,WAAa8jC,GAAAA,MAAkB/kC,gCAGtC,IAAMiB,EAAajxH,KAAKixH,WAEa,cAAjCz3D,IAAAA,QAAYj9C,IAAI,cAA+C,UAAf00G,IAClDh0E,EAAOn2C,OAAO,oBAAqB,SAE5Bm2C,EAAOn2C,OAAOqhH,aAX8C,CAavE,KAGE3uD,IAAAA,aAAiB9jC,IAAI,wBACvBj1B,EAAAA,EAAAA,QAAOo1J,GAAAA,kBAAiCl2J,UAAW,cAAc,SAAUg+D,GAAO,IAAAspC,EAAA,KAChFtpC,EAAM7kD,IACJ,eACA+8I,GAAAA,gBAA+Bn2G,UAC7B,CACE5zB,UAAW,oBACXo0C,KAAM,sBACN5vC,QAAkE,oBAAzDtwB,KAAKkvH,2BAA2B,qBACzC5sE,QAAS,WACP,IAAM34B,EAAK,oBACiC,oBAAxCs9E,EAAKioB,2BAA2BvlG,GAClCs9E,EAAKioB,2BAA2BvlG,GAAM,GAEtCs9E,EAAKioB,2BAA2BvlG,GAAM,kBAGxCs9E,EAAKkoB,aAAaloB,EAAKhqD,SAASvnC,KAClC,GAEF8jD,IAAAA,WAAekH,MAAM,6CAEvB,IAGF/C,EAAM7kD,IAAI,YAAa9D,EAACooD,KAAS,MAAK,GACxC,KClDF38D,EAAAA,EAAAA,QAAOyoF,IAAAA,UAAoB,aAAa,SAAUvrB,GAChD,GAAK39D,KAAK0qB,MAAMoiC,MAAS0M,IAAAA,MAAU4J,UAAU,sCAA7C,CAEA,IAAMtW,EAAO9sD,KAAK0qB,MAAMoiC,KAClB0oG,EAAqB1oG,EAAK2oG,iBAC1BK,EAAsBhpG,EAAKipG,gBAEjCp4F,EAAM7kD,IACJ,YACA9D,EAAA,OAAK8W,UAAU,sBACb9W,EAAA,YACGkrD,KAAK,uBACNlrD,EAAA,QAAM8W,UAAU,gBAAgB0pI,EAAmB,KAAS,IAC3Dh8F,IAAAA,WAAekH,MAAM,mCAAoC,CAAEjqD,MAAO++I,IACnExgJ,EAAA,QAAM8W,UAAU,gBAAgBgqI,GAA4B,IAC3Dt8F,IAAAA,WAAekH,MAAM,oCAAqC,CAAEjqD,MAAOq/I,MAGxE,GAjBwF,CAmB5F,ILDEt8F,IAAAA,uBAA2Bw8F,YAAcnB,EACzCr7F,IAAAA,uBAA2By8F,cAAgBnB,EAC3Ct7F,IAAAA,uBAA2B08F,oBAAsBhlC,EACjD13D,IAAAA,uBAA2B28F,cAAgBxtC,GAE3CloH,EAAAA,EAAAA,QAAO4wF,IAAAA,UAA4B,qBAAqB,SAAU1zB,GAChEA,EAAM7kD,IAAI,cAAe,CACvBjG,KAAM,cACNqtD,KAAM,mBACNY,MAAOtH,IAAAA,WAAekH,MAAM,gEAE9B/C,EAAM7kD,IAAI,gBAAiB,CACzBjG,KAAM,gBACNqtD,KAAM,oBACNY,MAAOtH,IAAAA,WAAekH,MAAM,kEAE9B/C,EAAM7kD,IAAI,sBAAuB,CAC/BjG,KAAM,sBACNqtD,KAAM,sBACNY,MAAOtH,IAAAA,WAAekH,MAAM,kEAE9B/C,EAAM7kD,IAAI,gBAAiB,CACzBjG,KAAM,gBACNqtD,KAAM,sBACNY,MAAOtH,IAAAA,WAAekH,MAAM,2DAEhC,GACF,IACC,E;;;;;;;MMtDH,IAAIlI,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,ICInC2iD,EAAe,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAA5iJ,MAAA,KAAAC,YAAA,YAAAmmD,EAAAu8F,EAAAC,GAAAD,CAAA,E,MAAS9iC,GAAM53C,IAAO,CACxD5uB,KAAM4uB,IAAAA,OAAa,QACnB1iC,OAAQ0iC,IAAAA,UAAgB,UACxB12B,OAAQ02B,IAAAA,UAAgB,UACxB1M,UAAW0M,IAAAA,UAAgB,YAAaA,IAAAA,eACxC46E,YAAa56E,IAAAA,UAAgB,eAE7B66E,mBAAoB76E,IAAAA,UAAgB,qBACpC86E,kBAAmB3tH,IAAS,qBAAsB,cAAe,QAAQ,SAAC4tH,EAASH,EAAaxpG,GAC9F,OAAmB,OAAZ2pG,GAAoBH,EAAcxpG,EAAKtR,WAAai7G,CAC7D,OCdF,MAAM,EAA+Bl/C,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCKnCijD,EAAY,SAAAzgC,GAAA,SAAAygC,IAAA,OAAAzgC,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAA68F,EAAAzgC,GAAA,IAAA7J,EAAAsqC,EAAA/2J,UAiK9B,OAjK8BysH,EAC/B7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKw7C,SAAW4R,IAAOptD,KAAK0qB,MAAMgnG,SAAWl4D,IAAAA,QAAAA,KAAAA,cAAiCA,IAAAA,QAAAA,KAAAA,YAE9Ex5D,KAAK22J,gBAAkB,QAAO32J,KAAK0qB,MAAMgnG,SAAW,WAAa,YAAU,UAE3E1xH,KAAK42J,YAAcp9F,IAAAA,QAAAA,KAAiBx5D,KAAK22J,mBAErC32J,KAAK42J,aAAa52J,KAAKw7C,SAASx7C,KAAK42J,YAAYJ,qBAErDx2J,KAAKy5C,SAAU,EAEfz5C,KAAK6wB,SAAWu8B,IAAO,IAEvBptD,KAAK62J,kBAAoB,+BAA8B72J,KAAK0qB,MAAMgnG,SAAW,WAAa,YAAU,iBACtG,EAACtF,EAEDtgG,UAAA,WACE,MAAO,mCACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,SACvD,EAACzqC,EAEDh2F,QAAA,WACE,OAAIp2B,KAAKy5C,QAELzkC,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,uBACb9W,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,0BACvE7hJ,EAAA,OAAK8W,UAAU,cACb9W,EAACyuD,IAAM,CAAC33C,UAAU,uCAAuCw2B,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,OAC9Ew5D,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,uBASzD7hJ,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,uBACZ9rB,KAAK42J,YACJ5hJ,EAAA,KAAG8W,UAAU,YACV0tC,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,mBAAoB,CACjEhkJ,KAAM7S,KAAK42J,YAAYJ,uBAI3B,GAEFxhJ,EAAA,OAAK8W,UAAU,cACb9W,EAAA,SACEhQ,KAAK,OACL6N,KAAK,OACLiZ,UAAU,cACV84C,YAAapL,IAAAA,QAAAA,KAAAA,WACbX,KAAM74D,KAAKw7C,SACXxyB,SAAUhpB,KAAK82J,eAAiB92J,KAAK+2J,iBAGxCv9F,IAAAA,MAAAA,UAAoB,sBAAwB,KAC3CxkD,EAAA,OAAK8W,UAAU,cACb9W,EAAA,SACEhQ,KAAK,WACL6N,KAAK,WACLiZ,UAAU,cACV84C,YAAapL,IAAAA,WAAAA,MAAqB,wDAClCX,KAAM74D,KAAK6wB,SACX7H,SAAUhpB,KAAK82J,eAAiB92J,KAAK+2J,iBAI3C/hJ,EAAA,OAAK8W,UAAU,cACZ23C,IAAAA,UACC,CACE33C,UAAW,uCACX9mB,KAAM,SACN05D,QAAS1+D,KAAK+2J,eAEhBv9F,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,oBAGjD72J,KAAK42J,YACJ5hJ,EAAA,OAAK8W,UAAU,cACZ23C,IAAAA,UACC,CACE33C,UAAW,uCACXw2B,QAAStiD,KAAKg3J,cAActnH,KAAK1vC,MACjC0+D,QAAS1+D,KAAK82J,eAEhBt9F,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,oBAIlD,IAKV,EAACzqC,EAED4qC,cAAA,SAAczzJ,GACZA,EAAEmC,iBAEF1F,KAAK82J,eAAgB,EAErB92J,KAAK42J,YAAW,SAEhB52J,KAAKi3J,aAAez9F,IAAAA,OAAAA,KAAgB,CAAEx0D,KAAM,WAAaw0D,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,aAEvGr9F,IAAAA,QAAAA,KAAiBx5D,KAAK22J,iBAAmBvpG,MAEzCptD,KAAK2M,MACP,EAACy/G,EAEDlnD,SAAA,SAAS3hE,GAAG,IAAA0jG,EAAA,KACV1jG,EAAEmC,iBAEF1F,KAAKqoE,MAAQ,KAEb,IAAM6uF,EAAcl3J,KAAK0qB,MAAMgnG,SAAWl4D,IAAAA,QAAAA,KAAAA,cAAiCA,IAAAA,QAAAA,KAAAA,WACvEx5D,KAAKw7C,aAAe07G,GAKxBl3J,KAAK+2J,eAAgB,EAErBv9F,IAAAA,MAAAA,aACgB,qBACb0O,KACC,CACE1sB,SAAUx7C,KAAKw7C,WACf86G,YAAat2J,KAAK0qB,MAAMgnG,UAE1B,CACEv1C,KAAM,CAAEtrD,SAAU7wB,KAAK6wB,YACvBm5C,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAGnCi3B,MAAK,SAAC6rB,GACL0W,IAAAA,QAAAA,KAAiBytC,EAAK0vD,iBAAmBvpG,IAAOtK,GAChDmkD,EAAKxtD,SAAU,EACfwtD,EAAKn+B,WAAa,IACpB,IAAE,OACK,WAAO,IACb7xC,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,QAxBvBA,KAAK2M,MAyBT,EAACy/G,EAEDzwE,QAAA,SAAQt3B,GACe,MAAjBA,EAAM20B,SACR30B,EAAMgkD,MAAMjyC,QAAUojC,IAAAA,WAAAA,MAAqB,sDAC3Cx5D,KAAK+2J,eAAgB,GAGvB9gC,EAAAt2H,UAAMg8C,QAAO57C,KAAC,KAAAskB,EAChB,EAACqyI,CAAA,CAjK8B,CAAS7tF,KCL1C,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCOnC0jD,EAAW,SAAAlhC,GAAA,SAAAkhC,IAAA,OAAAlhC,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAAs9F,EAAAlhC,GAAA,IAAA7J,EAAA+qC,EAAAx3J,UAwG7B,OAxG6BysH,EAC9B7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK8iD,QAAU9iD,KAAK0qB,MAAMo4B,QAE1B9iD,KAAKo3J,SAAWhqG,IAAO,YAEvBptD,KAAKglD,OAASoI,IAAO,IAErBptD,KAAK62J,kBAAoB,+BAA8B72J,KAAK8iD,QAAQwzG,cAAgB,WAAa,YAAU,gBAC7G,EAAClqC,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,SACvD,EAACzqC,EAEDtgG,UAAA,WACE,MAAO,kCACT,EAACsgG,EAEDh2F,QAAA,WACE,OACEphB,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,QACb9W,EAAA,MAAI8W,UAAU,wBACX0tC,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,QAAS,CACtDhkJ,KAAM2oC,IAASx7C,KAAK8iD,QAAQgK,QAC5BuqG,cAAer3J,KAAK8iD,QAAQ0zG,uBAGhCxhJ,EAAA,KAAG8W,UAAU,QAAQ0tC,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,eACnE7hJ,EAAA,cAASwkD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,oBACvD7hJ,EAAA,OAAK8W,UAAU,cACb9W,EAAA,SAAO8W,UAAU,YACf9W,EAAA,SACEhQ,KAAK,QACL6N,KAAK,WACL9L,MAAM,WACNupB,QAA6B,aAApBtwB,KAAKo3J,WACd90G,QAAS2uC,IAAS,QAASjxF,KAAKo3J,YAEjC59F,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,oBAEjD7hJ,EAAA,SAAO8W,UAAU,YACf9W,EAAA,SACEhQ,KAAK,QACL6N,KAAK,WACL9L,MAAM,WACNupB,QAA6B,aAApBtwB,KAAKo3J,WACd90G,QAAS2uC,IAAS,QAASjxF,KAAKo3J,YAEjC59F,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,qBAG9B,aAApB72J,KAAKo3J,WACJpiJ,EAAA,OAAK8W,UAAU,cACb9W,EAAA,cAASwkD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,kBACvD7hJ,EAAA,OAAK8W,UAAU,2BACb9W,EAAA,YAAU8W,UAAU,cAAc/kB,MAAO/G,KAAKglD,SAAUh8B,SAAUhpB,KAAK0+D,QAASzF,QAASg4B,IAAS,QAASjxF,KAAKglD,YAIpH,GAEFhwC,EAAA,OAAK8W,UAAU,cACZ23C,IAAAA,UACC,CACE33C,UAAW,uCACX9mB,KAAM,SACN05D,QAAS1+D,KAAK0+D,QACd11C,SAA8B,aAApBhpB,KAAKo3J,aAA8Bp3J,KAAKglD,UAEpDwU,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,qBAM1D,EAACzqC,EAEDlnD,SAAA,SAAS3hE,GAAG,IAAA0jG,EAAA,KACV1jG,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf1+D,KAAK8iD,QACFolB,KAAK,CACJljB,OAAQhlD,KAAKglD,SACbgsG,OAAQhxJ,KAAKo3J,aAEdngI,MAAK,WACJgwE,EAAKgwD,aAAez9F,IAAAA,OAAAA,KAAgB,CAAEx0D,KAAM,WAAaw0D,IAAAA,WAAAA,MAAwBytC,EAAK4vD,kBAAiB,YACzG,IAEFr9F,IAAAA,MAAAA,kBAAAA,MAAiC,SAAC1W,EAAS77C,GACrC67C,EAAQn5B,MAAQs9E,EAAKnkD,QAAQn5B,MAC/B6vC,IAAAA,MAAAA,kBAAAA,OAAmCvyD,EAAG,EAE1C,IAEA+N,EAAEwqC,SAEFx/C,KAAK2M,MACP,EAACwqJ,CAAA,CAxG6B,CAAStuF,KCEpBovC,EAAQ,SAAAwT,GAAA,SAAAxT,IAAA,OAAAwT,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAo+C,EAAAwT,GAAA,IAAAW,EAAAnU,EAAAt4G,UAqD1B,OArD0BysH,EAC3B7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK0+D,SAAU,CACjB,EAAC0tD,EAEDznF,KAAA,WAAO,IAAAsiE,EAAA,KACCqwD,EAAW99F,IAAAA,MAAAA,mBAA+B,GAEhD,OACExkD,EAAA,OAAK8W,UAAU,iCACb9W,EAAA,OAAK8W,UAAU,2BACb9W,EAAA,MAAI8W,UAAU,2CAA2C0tC,IAAAA,WAAAA,MAAqB,uDAEhFxkD,EAAA,OAAK8W,UAAU,4BACb9W,EAAA,MAAI8W,UAAU,6BACXwrI,EAAS7yJ,OACR6yJ,EAAS1vJ,KAAI,SAACk7C,GACZ,IAAMpxC,EAASoxC,EAAQwzG,cAAgB,WAAa,WACpD,OACEthJ,EAAA,UACEA,EAAA,KAAGstC,QAAS2kD,EAAKswD,UAAU7nH,KAAKu3D,EAAMnkD,GAAUh3B,UAAU,wBACvD2yC,IAAO3b,EAAQgK,QACfoT,IAAK,mBAAoB,CAAEp0C,UAAW,sBACvC9W,EAAA,QAAM8W,UAAU,wBACb0tC,IAAAA,WAAAA,MAAqB,+CAA+C9nD,EAAM,aAAc,CACvFmB,KAAM2oC,IAASsH,EAAQgK,WAG1BsT,IAAUtd,EAAQksB,aACnBh6D,EAAA,OAAK8W,UAAU,wBACZ0tC,IAAAA,WAAAA,MAAqB,+CAA+C9nD,EAAM,UAAW,CACpF2lJ,cAAev0G,EAAQ0zG,wBAMnC,IACGx2J,KAAK0+D,QAGRgE,IAAAA,UAA2B,CAAE52C,UAAW,4BAFxC9W,EAAA,OAAK8W,UAAU,0BAA0B0tC,IAAAA,WAAAA,MAAqB,6DAQ1E,EAAC4yD,EAEDmrC,UAAA,SAAUz0G,GACR0W,IAAAA,MAAAA,KAAe29F,EAAa,CAAEr0G,QAAAA,GAChC,EAACm1D,CAAA,CArD0B,CAAS58C,KCJjBm8F,EAAY,SAAA5oC,GAAA,SAAA4oC,IAAA,OAAA5oC,EAAAn7G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA29F,EAAA5oC,GAAA,IAAAxC,EAAAorC,EAAA73J,UAiB9B,OAjB8BysH,EAC/B7pE,OAAA,SAAOH,GACLwsE,EAAAjvH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEboX,IAAAA,QAAAA,KAAiB,YAEjBA,IAAAA,iBAAAA,OAEAx5D,KAAK47D,UAAY,eACnB,EAACwwD,EAEDznF,KAAA,WACE,OACE3vB,EAAA,OAAK8W,UAAU,gBACb9W,EAACyiJ,EAAY,CAACp/H,MAAOmhC,IAAAA,mBAG3B,EAACg+F,CAAA,CAjB8B,CAAS77F,KCL1C,MAAM,EAA+B47C,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0C,ICKnCikD,EAAgB,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAlkJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA69F,EAAAC,GAAAD,EAC5Bn8F,UAAP,SAAiB7wC,GACfA,EAAMo2C,MAAQp2C,EAAMo2C,OAAStH,IAAAA,WAAAA,MAAqB,uDAClD9uC,EAAMw1C,KAAOx1C,EAAMw1C,MAAQ,mBAE3By3F,EAAMp8F,UAASx7D,KAAC,KAAA2qB,EAClB,EAAC,IAAA0hG,EAAAsrC,EAAA/3J,UA0BA,OA1BAysH,EAEDhrD,QAAA,WACE,OACEpsD,EAAA,OAAK8W,UAAW,iBAAmB9rB,KAAK0qB,MAAMm2C,cAAeve,QAAStiD,KAAKu/E,UAAU7vC,KAAK1vC,OACvFA,KAAKg7D,QAAUy8F,EAAAA,UAAuB,CAAEp/H,MAAOmhC,IAAAA,mBAA0B,GAGhF,EAAC4yD,EAED5sC,UAAA,WACExqE,EAAEwrC,MAAM1kC,IAAI09C,IAAAA,MAAU,qBACxB,EAAC4yD,EAED9sC,eAAA,WACE,OAAI9lB,IAAAA,MAAAA,kBACKA,IAAAA,MAAAA,kBAAAA,OAEFA,IAAAA,MAAAA,KAAAA,cAAAA,kBAAAA,KAAAA,MACT,EAAC4yD,EAED/sC,YAAA,WACE,OAAI7lB,IAAAA,MAAAA,kBACKA,IAAAA,MAAAA,kBAAAA,OAEFA,IAAAA,MAAAA,KAAAA,cAAAA,kBAAAA,KAAAA,MACT,EAACk+F,CAAA,CAhCkC,C,MAASv4E,ICAzBy4E,EAAY,SAAA3hC,GAAA,SAAA2hC,IAAA,OAAA3hC,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAA+9F,EAAA3hC,GAAA,IAAA7J,EAAAwrC,EAAAj4J,UA8C9B,OA9C8BysH,EAC/B7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK22J,gBAAkB,QAAO32J,KAAK0qB,MAAMgnG,SAAW,WAAa,YAAU,UAE3E1xH,KAAK8iD,QAAU0W,IAAAA,QAAAA,KAAiBx5D,KAAK22J,mBAErC32J,KAAK62J,kBAAoB,+BAA8B72J,KAAK8iD,QAAQwzG,cAAgB,WAAa,YAAU,iBAC7G,EAAClqC,EAEDtgG,UAAA,WACE,MAAO,oBACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,SACvD,EAACzqC,EAEDh2F,QAAA,WACE,OACEphB,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,uBACc,aAA1B9rB,KAAK8iD,QAAQ9J,SACV,CACEhkC,EAAA,UAAKwkD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,cACnD7hJ,EAAA,UAAKwkD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,YAAa,CAAEhkJ,KAAM2mD,IAAAA,QAAAA,KAAAA,kBAE1E,CACExkD,EAAA,UAAKwkD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,cACnD7hJ,EAAA,UAAKwkD,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,UAAW,CAAE7xG,OAAQhlD,KAAK8iD,QAAQkC,SAAU/9C,EAAG+N,EAAA,aAClGA,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,eAE7E7hJ,EAAA,OAAK8W,UAAU,cACb9W,EAACyuD,IAAM,CAAC33C,UAAU,uCAAuCw2B,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,OAC9Ew5D,IAAAA,WAAAA,MAAwBx5D,KAAK62J,kBAAiB,sBAM3D,EAACzqC,EAEDprE,SAAA,WACEwY,IAAAA,QAAAA,KAAiBx5D,KAAK22J,iBAAmBvpG,MACzCptD,KAAK8iD,QAAQolB,KAAK,CAAE2vF,QAAQ,GAC9B,EAACD,CAAA,CA9C8B,CAAS/uF,KCL1C,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,6B,aCGnCqkD,EAAoB,SAAA5C,GAAA,SAAA4C,IAAA,OAAA5C,EAAAzhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAAi+F,EAAA5C,GAAA,IAAA9oC,EAAA0rC,EAAAn4J,UAqCtC,OArCsCysH,EACvC7pE,OAAA,SAAOH,GACL8yG,EAAAv1J,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GACbpiD,KAAK0+D,SAAU,EAEf1+D,KAAKqpF,SAASr0E,EAAEwrC,MAAM3L,MAAM,YAC9B,EAACu3E,EAEDh2F,QAAA,WAAU,IAAA6wE,EAAA,KACR,OACEjyF,EAAA,SAAO8W,UAAU,oBACd9rB,KAAK8sD,KACHirG,kBACAxiJ,MAAM,GACN8gB,UACAzuB,KAAI,SAAC4zC,GACJ,IAAIw8G,EAAcv2I,OAAOvB,KAAKs7B,GAAU,GACxC,OACExmC,EAAA,UACEA,EAAA,UAAKgjJ,GACLhjJ,EAAA,UAAKorD,IAAU6mC,EAAKgxD,cAAcz8G,EAASw8G,MAGjD,IAGR,EAAC5rC,EAED1/G,KAAA,SAAKogD,GACH9sD,KAAK8sD,KAAOA,EAEZ93C,EAAEwqC,QACJ,EAAC4sE,EAED6rC,cAAA,SAActmH,GAEZ,OADQ,IAAI13B,KAAK,GACRi+I,cAAcvmH,EACzB,EAACmmH,CAAA,CArCsC,CAAS7uE,KCHlD,MAAM,EAA+BsuB,OAAOC,KAAK/D,OAAO,gC,aCEnC0kD,GAAiB,WACpC,SAAAA,EAAY3+F,GACVx5D,KAAKw5D,IAAMA,EAOXx5D,KAAK0+D,SAAU,EAEf1+D,KAAKoqB,MAAQ,EACf,CAqBC,OArBA+tI,EAAAx4J,UAED+jC,KAAA,WAAO,IAAAujE,EAAA,KACDztC,IAAAA,MAAAA,oBAIJx5D,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEFga,IAAAA,MAAAA,KACQ,qBACLviC,MAAK,SAACqgI,UACEA,EAASz1G,QAChB2X,IAAAA,MAAAA,kBAA8B89F,EAAS5hJ,MAAK,SAAChM,EAAGE,GAAC,OAAKF,EAAEslE,YAAcplE,EAAEolE,WAAW,GACrF,IAAE,OACK,WAAO,IACb/3C,MAAK,WACJgwE,EAAKvoC,SAAU,EACf1pD,EAAEwqC,QACJ,IACJ,EAAC24G,CAAA,CAjCmC,GCUtC3+F,IAAAA,aAAAA,IAAqB,wBAAwB,WAC3CA,IAAAA,MAAAA,OAAAA,qBAAwC48F,EACxCnrD,IAAAA,UAAAA,oBAAqCvvB,IAAAA,OAAa,uBAClDuvB,IAAAA,UAAAA,oBAAqCvvB,IAAAA,OAAa,uBAClDuvB,IAAAA,UAAAA,gBAAiCvvB,IAAAA,UAAgB,mBAEjDliB,IAAAA,OAAAA,kBAA+B,CAAEnZ,KAAM,qBAAsBX,UAAW83G,GACxEh+F,IAAAA,OAAAA,iBAA8B,CAAEnZ,KAAM,uBAAwBX,UAAWu1G,GAEzEz7F,IAAAA,iBAAuB,IAAI2+F,GAAkB3+F,MCd7C/4D,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,gBAAgB,SAAUt0B,GACnDnE,IAAAA,MAAAA,UAAoB,uBACtBmE,EAAM7kD,IACJ,mBACA2qD,IAAAA,UACE,CACE33C,UAAW,SACXw2B,QAAS,WACPkX,IAAAA,MAAAA,KAAek9F,EACjB,GAEFl9F,IAAAA,WAAAA,MAAqB,gEAEvB,GAI2C,aAA7CA,IAAAA,MAAAA,UAAoB,sBACpBA,IAAAA,MAAAA,UAAoB,wBACnBx5D,KAAK8sD,KAAKsW,UAAU,uBACrB,qBAAsBm0C,OAAOjK,YAE7B3vC,EAAM7kD,IACJ,mBACA2qD,IAAAA,UACE,CACE33C,UAAW,SACXw2B,QAAS,WACPkX,IAAAA,MAAAA,KAAek9F,EAAc,CAAEhlC,UAAU,GAC3C,GAEFl4D,IAAAA,WAAAA,MAAqB,gEAEvB,EAGN,KCrCA/4D,EAAAA,EAAAA,QAAOkjF,IAAAA,UAA2B,SAAS,SAAUhmB,IAEhDnE,IAAAA,MAAAA,KAAAA,cAAAA,mBACCA,IAAAA,MAAAA,KAAAA,cAAAA,kBAAAA,KAAAA,SACCA,IAAAA,MAAAA,mBACFA,IAAAA,MAAAA,mBAAsE,IAAvCA,IAAAA,MAAAA,kBAAAA,SAEhCmE,EAAM7kD,IAAI,mBAAoB9D,EAAC0iJ,EAAgB,CAACr/H,MAAOmhC,IAAAA,mBAA0B,GAErF,ICXO,IAAI7Z,SAAQ,WACjB78C,YAAW,WACT,GAAI02D,IAAAA,QAAAA,KAAkB,CACpB,IAAM4+F,EAAmB5+F,IAAAA,QAAAA,KAAAA,uBAA8F,SAApDA,IAAAA,QAAAA,KAAAA,sBAAuCxgB,SACpGq/G,EAAmB7+F,IAAAA,QAAAA,KAAAA,uBAA8F,SAApDA,IAAAA,QAAAA,KAAAA,sBAAuCxgB,UACtGo/G,GAAoBC,IACtB7+F,IAAAA,MAAAA,KAAeo+F,EAAc,CAAElmC,SAAU0mC,GAE7C,CACF,GAAG,IACL,KCRA33J,EAAAA,EAAAA,QAAOwoF,IAAAA,UAAoB,YAAY,SAAUtrB,GAC3C39D,KAAK8sD,KAAKirG,mBACZp6F,EAAM7kD,IACJ,oBACAuiE,IAAAA,UACE,CACEjrD,KAAMopC,IAAAA,MAAU,mBAAoB,CAAEhe,SAAUx7C,KAAK8sD,KAAKgS,SAC1DoB,KAAM,oBAER1G,IAAAA,WAAAA,MAAqB,sDAI7B,GJQF,G;;;;;;;6BK3BA,WAAY,IAAIzjD,EAAE,GAAGR,MAAM4C,OAAOxY,UAAU24J,SAAS,WAAW,IAAI1uJ,EAAEiL,EAAED,EAAElL,EAAEnG,EAAEuR,EAAyK,OAA1HvR,EAAE,wHAA6H,GAA5KmG,EAAE,GAAGgK,UAAUjP,OAAOsR,EAAEhW,KAAK2T,UAAU,GAAG,IAAsIjP,QAAuDmQ,EAAElL,EAAE,GAAGmL,EAAE,WAAW,IAAIF,EAAO,IAAI/K,KAAT+K,EAAE,GAAYC,EAAEE,EAAEF,EAAEhL,GAAG,aAAaA,GAAG+K,EAAEO,KAAK,IAAItL,EAAE,KAAKkL,EAAE,KAAK,OAAOH,CAAC,CAAzF,GAA6FyD,KAAK,IAAWpY,KAAK2D,QAAQJ,GAAE,SAASoR,EAAE/K,EAAEF,GAC/Z,MAAM,GAAGE,IAD4Z,mBAAoBgL,EAAEpE,SAASoE,EAAEpE,SAAS9G,QACzf,IAAS,YAAYA,EAAE,IAAImL,EAAE,IAAInL,EAAE,OAAmB,KADyN1J,KAAK2D,QAAQJ,EAAE,wBACtO,CAAE,GAAExD,KAAKC,K,GCA7Du4D,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAGpE9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,6DCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iB,OCAnB8D,OAAOC,KAAK/D,OAAO,yBAAxD,MCAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCPA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCUnC8kD,EAAO,SAAA9sC,GCTb,IAAwB94D,EAAUC,EDSrB,SAAA2lG,IAAA,OAAA9sC,EAAAh4G,MAAA,KAAAC,YAAA,KCTqBk/C,EDSrB64D,GCTW94D,EDSX4lG,GCRjB54J,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDMC,IAAAw5D,EAAAmsC,EAAA54J,UA0KzB,OA1KyBysH,EAC1B7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAMbpiD,KAAKysF,SAAU,EAOfzsF,KAAK0+D,SAAU,EAKf1+D,KAAKw4J,aAAeh/F,IAAAA,MAAU4J,UAAU,0BAKxCpjE,KAAKy4J,eACHj/F,IAAAA,SAAeA,IAAAA,QAAY1M,MAAQ0M,IAAAA,QAAY1M,KAAKnjC,OAAS3pB,KAAK0qB,MAAMoiC,KAAKnjC,KAEzE6vC,IAAAA,WAAekH,MAAM,yCAErBlH,IAAAA,WAAekH,MAAM,iDAAkD,CACrEllB,SAAUx7C,KAAK0qB,MAAMoiC,KAAK6J,eAEpC,EAACy1D,EAEDznF,KAAA,WAAO,IAGDvO,EAHC6wE,EAAA,KACCn6C,EAAO9sD,KAAK0qB,MAAMoiC,KAClBq8B,EAAWnpF,KAAK0qB,MAAMoiC,KAAKsW,UAAU,cAG3C,GAAIpjE,KAAKysF,QAAS,CAChB,IAAMisE,EAAU14J,KAAK04J,QACf3xJ,EAAe,MAAP2xJ,EAAAA,EAAW5rG,EAAK6rG,MAoB9BviI,EACEphB,EAAA,YACE8W,UAAU,cACV84C,YAAavE,IAAYrgE,KAAKy4J,gBAC9Bx4C,KAAK,IACL24C,UAAW54J,KAAKw4J,aAChBr2G,SAxBmB,SAACC,GACtB,IAAM6hB,EAAW7hB,EAAMqF,IAEvBwc,EAASl9D,MAAQA,OAED+L,IAAZ4lJ,IACFz0F,EAASl9D,MAAQ2xJ,EACjBz0F,EAASt4D,aAEiBmH,IAAtBm0F,EAAK4xD,eACP50F,EAASC,eAAiB+iC,EAAK4xD,aAC/B50F,EAASE,aAAe8iC,EAAK4xD,oBAEtB5xD,EAAK4xD,cAGlB,GAWF,KAAO,CACL,IAAIC,EAEJ,GAAI94J,KAAK0+D,QACPo6F,EACE9jJ,EAAA,KAAG8W,UAAU,uBACX9W,EAAC0tD,IAAgB,WAGhB,CACL,IAAMq2F,EAAUjsG,EAAKisG,UAEjBA,EACFD,EAAa9jJ,EAAE6tC,MAAMk2G,GACZjsG,EAAK6rG,MACdG,EAAa9jJ,EAAE6tC,MAAM,MAAQxiD,EAAE,UAAUkQ,KAAKu8C,EAAK6rG,OAAOtvJ,OAAO1F,QAAQ,MAAO,QAAQ20J,SAAS,CAAEU,IAAK,iBAAoB,QACnH7vE,IACT2vE,EAAa9jJ,EAAA,KAAG8W,UAAU,uBAAuB9rB,KAAKy4J,gBAE1D,CAEA,IAAMQ,EAAWz/F,IAAAA,MAAU4J,UAAU,yBAErChtC,EACEphB,EAAA,OAAK8W,UAAU,kBAAkBw2B,QAAS6mC,EAAWnpF,KAAKk5J,KAAKxpH,KAAK1vC,MAAQ,WAAe,EAAE+S,MAAO,CAAE,kBAAmBkmJ,IACtHH,EAGP,CAEA,OACE9jJ,EAAA,OACE8W,UACE,WACAkyC,IAAU,CACRmrB,SAAAA,EACAsD,QAASzsF,KAAKysF,WAIjBr2D,EAGP,EAEAg2F,EAGA8sC,KAAA,WACEl5J,KAAKysF,SAAU,EACfz3E,EAAEwqC,OAAOD,OAET,IAAMo5G,EAAM34J,KACNkoE,EAAO,SAAU3kE,GACjBA,EAAEmhC,WACNnhC,EAAEmC,iBAEFizJ,EAAIzwF,KAAK3kE,EAAE5C,OAAOoG,MAAkB,SAAXxD,EAAEyB,MAC7B,EAEAhF,KAAKK,EAAE,YAAYoD,QAAQ,SAAS1C,GAAG,OAAQmnE,GAAMx4B,KAAK,UAAW,SAAUw4B,GAC/ElzD,EAAEwqC,QACJ,EAEA4sE,EAKAlkD,KAAA,SAAKnhE,EAAOoyJ,GAAY,IAAA3sC,EAAA,KAChB1/D,EAAO9sD,KAAK0qB,MAAMoiC,KAClB+rG,EAAe74J,KAAKK,EAAE,YAAY+7B,KAAK,kBAEvCg9H,EAAeD,GAAcpyJ,IAAU/G,KAAK04J,QAG7CU,GAAgBtsG,EAAK6rG,QAAU5xJ,IAClC/G,KAAK0+D,SAAU,EAEf5R,EACGob,KAAK,CAAEywF,IAAK5xJ,IAAQ,OACd,WACLylH,EAAKksC,QAAU3xJ,EACfylH,EAAKqsC,aAAeA,EACpBrsC,EAAK0sC,MACP,IACCjiI,MAAK,WACJu1F,EAAK9tD,SAAU,SACR8tD,EAAKksC,QACZ1jJ,EAAEwqC,QACJ,KAGA45G,UACKp5J,KAAK04J,QAGd14J,KAAKysF,SAAU,EACfz3E,EAAEwqC,QACJ,EAAC+4G,CAAA,CA1KyB,CAASl9F,KERxBs0D,EAAa,CACxB4oC,QAAAA,GCQF/+F,IAAAA,aAAiB1gD,IAAI,gBAAgB,WACnCmyF,IAAAA,UAAe0tD,IAAMj9E,IAAAA,UAAgB,OACrCuvB,IAAAA,UAAe8tD,QAAUr9E,IAAAA,UAAgB,YAEzCj7E,EAAAA,EAAAA,QAAOyoF,IAAAA,UAAoB,aAAa,SAAUvrB,GAChD,IAAI7Q,EAAO9sD,KAAK0qB,MAAMoiC,KAEjBA,EAAKsW,UAAU,eAIpBzF,EAAM7kD,IAAI,MAAO9D,EAACujJ,EAAO,CAACzrG,KAAMA,KAAW,IAC7C,GACF,G;;;;;;;2BCxBAp1C,EAAOC,QAAU,EAAjBD,I,UCOA,IAAI0gD,EAAW,SAAUzgD,GACvB,aAEA,IAEI7E,EAFAugD,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eAEZ6mD,EAA4B,mBAAXluC,OAAwBA,OAAS,CAAC,EACnDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAO7mD,EAAKD,EAAK/F,GAOxB,OANA0a,OAAOya,eAAenvB,EAAKD,EAAK,CAC9B/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IAEL12B,EAAID,EACb,CACA,IAEE8mD,EAAO,CAAC,EAAG,GACb,CAAE,MAAO5yB,GACP4yB,EAAS,SAAS7mD,EAAKD,EAAK/F,GAC1B,OAAOgG,EAAID,GAAO/F,CACpB,CACF,CAEA,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EAC/EC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IAMzC,OAFAG,EAAUW,QAuMZ,SAA0BhB,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQo6H,EAEZ,OAAO,SAAgB37H,EAAQ5R,GAC7B,GAAImT,IAAUq6H,EACZ,MAAM,IAAI7mJ,MAAM,gCAGlB,GAAIwsB,IAAUs6H,EAAmB,CAC/B,GAAe,UAAX77H,EACF,MAAM5R,EAKR,OAAOwxC,GACT,CAKA,IAHA7iD,EAAQijB,OAASA,EACjBjjB,EAAQqR,IAAMA,IAED,CACX,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CAEA,GAAuB,SAAnBzhD,EAAQijB,OAGVjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAElC,GAAuB,UAAnBrR,EAAQijB,OAAoB,CACrC,GAAIuB,IAAUo6H,EAEZ,MADAp6H,EAAQs6H,EACF9+I,EAAQqR,IAGhBrR,EAAQ6hD,kBAAkB7hD,EAAQqR,IAEpC,KAA8B,WAAnBrR,EAAQijB,QACjBjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KAGnCmT,EAAQq6H,EAER,IAAIz9F,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAoB,WAAhBohD,EAAOjwD,KAAmB,CAO5B,GAJAqzB,EAAQxkB,EAAQ2S,KACZmsI,EACAC,EAEA39F,EAAO/vC,MAAQovC,EACjB,SAGF,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAGlB,CAA2B,UAAhByuC,EAAOjwD,OAChBqzB,EAAQs6H,EAGR9+I,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM+vC,EAAO/vC,IAEzB,CACF,CACF,CAnRsBkvC,CAAiBP,EAAS7mD,EAAM6G,GAE7CqgD,CACT,CAaA,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CAAElgB,KAAM,SAAUkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAC7C,CAAE,MAAO8b,GACP,MAAO,CAAEh8B,KAAM,QAASkgB,IAAK8b,EAC/B,CACF,CAlBArpB,EAAQ2oB,KAAOA,EAoBf,IAAImyH,EAAyB,iBACzBG,EAAyB,iBACzBF,EAAoB,YACpBC,EAAoB,YAIpBr+F,EAAmB,CAAC,EAMxB,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CAIvC,IAAIC,EAAoB,CAAC,EACzBb,EAAOa,EAAmBlB,GAAgB,WACxC,OAAOvzD,IACT,IAEA,IAAIwhB,EAAWC,OAAOC,eAClBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MAC/D81B,GACAA,IAA4BrB,GAC5BxxC,EAAO9hB,KAAK20D,EAAyBnB,KAGvCkB,EAAoBC,GAGtB,IAAIC,EAAKH,EAA2B70D,UAClCs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GAYtC,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAASmgB,GAC3C88B,EAAOj0D,EAAWm3B,GAAQ,SAAS5R,GACjC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC9B,GACF,GACF,CA+BA,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAoB,UAAhB+vC,EAAOjwD,KAEJ,CACL,IAAIypB,EAASwmC,EAAO/vC,IAChBne,EAAQ0nB,EAAO1nB,MACnB,OAAIA,GACiB,iBAAVA,GACP8a,EAAO9hB,KAAKgH,EAAO,WACdguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAASlwB,GACtDiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EACjC,IAAG,SAASoK,GACVg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAChC,IAGKm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAASk+B,GAI9C1mC,EAAO1nB,MAAQouD,EACfx+B,EAAQlI,EACV,IAAG,SAASpK,GAGV,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACzC,GACF,CAzBEA,EAAOq+B,EAAO/vC,IA0BlB,CAEA,IAAIkwC,EAgCJp1D,KAAK60D,QA9BL,SAAiB/9B,EAAQ5R,GACvB,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAASp+B,EAASC,GACvCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC/B,GACF,CAEA,OAAOw+B,EAaLA,EAAkBA,EAAgBn+B,KAChCo+B,EAGAA,GACEA,GACR,CAKF,CA4GA,SAASE,EAAoBjX,EAAUzqC,GACrC,IAAIijB,EAASwnB,EAASj5B,SAASxR,EAAQijB,QACvC,GAAIA,IAAWhkB,EAAW,CAKxB,GAFAe,EAAQyqC,SAAW,KAEI,UAAnBzqC,EAAQijB,OAAoB,CAE9B,GAAIwnB,EAASj5B,SAAiB,SAG5BxR,EAAQijB,OAAS,SACjBjjB,EAAQqR,IAAMpS,EACdyiD,EAAoBjX,EAAUzqC,GAEP,UAAnBA,EAAQijB,QAGV,OAAOw9B,EAIXzgD,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM,IAAIkU,UAChB,iDACJ,CAEA,OAAOk7B,CACT,CAEA,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KAEzD,GAAoB,UAAhB+vC,EAAOjwD,KAIT,OAHA6O,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM+vC,EAAO/vC,IACrBrR,EAAQyqC,SAAW,KACZgW,EAGT,IAAIsB,EAAOX,EAAO/vC,IAElB,OAAM0wC,EAOFA,EAAKpvC,MAGP3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAGpC8M,EAAQqV,KAAOo1B,EAASwX,QAQD,WAAnBjiD,EAAQijB,SACVjjB,EAAQijB,OAAS,OACjBjjB,EAAQqR,IAAMpS,GAUlBe,EAAQyqC,SAAW,KACZgW,GANEsB,GA3BP/hD,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAC5BvlB,EAAQyqC,SAAW,KACZgW,EA+BX,CAqBA,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CAAEwQ,OAAQD,EAAK,IAEvB,KAAKA,IACPvQ,EAAMyQ,SAAWF,EAAK,IAGpB,KAAKA,IACPvQ,EAAM0Q,WAAaH,EAAK,GACxBvQ,EAAM2Q,SAAWJ,EAAK,IAGxBh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACvB,CAEA,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBACPiwD,EAAO/vC,IACdugC,EAAM8Q,WAAatB,CACrB,CAEA,SAASd,EAAQJ,GAIf/zD,KAAKq2D,WAAa,CAAC,CAAEJ,OAAQ,SAC7BlC,EAAYp9C,QAAQo/C,EAAc/1D,MAClCA,KAAKgxB,OAAM,EACb,CA6BA,SAAS4N,EAAO43B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EACF,OAAOA,EAAe12D,KAAKy2D,GAG7B,GAA6B,mBAAlBA,EAASttC,KAClB,OAAOstC,EAGT,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EAAGiiB,EAAO,SAASA,IAC1B,OAASjiB,EAAIuvD,EAAS/xD,QACpB,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAGxB,OAFAiiB,EAAKniB,MAAQyvD,EAASvvD,GACtBiiB,EAAK1C,MAAO,EACL0C,EAOX,OAHAA,EAAKniB,MAAQ+L,EACboW,EAAK1C,MAAO,EAEL0C,CACT,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAGA,MAAO,CAAEA,KAAMwtC,EACjB,CAGA,SAASA,IACP,MAAO,CAAE3vD,MAAO+L,EAAW0T,MAAM,EACnC,CA8MA,OA7mBA+tC,EAAkB50D,UAAY60D,EAC9BZ,EAAOe,EAAI,cAAeH,GAC1BZ,EAAOY,EAA4B,cAAeD,GAClDA,EAAkBoC,YAAc/C,EAC9BY,EACAd,EACA,qBAaF/7C,EAAQi/C,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAOjrD,YAClD,QAAOkrD,IACHA,IAASvC,GAG2B,uBAAnCuC,EAAKH,aAAeG,EAAKjkD,MAEhC,EAEA8E,EAAQo/C,KAAO,SAASF,GAQtB,OAPIp1C,OAAOixC,eACTjxC,OAAOixC,eAAemE,EAAQrC,IAE9BqC,EAAOrK,UAAYgI,EACnBZ,EAAOiD,EAAQnD,EAAmB,sBAEpCmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAC1BkC,CACT,EAMAl/C,EAAQq/C,MAAQ,SAAS9xC,GACvB,MAAO,CAAEgwC,QAAShwC,EACpB,EAqEA0vC,EAAsBE,EAAcn1D,WACpCi0D,EAAOkB,EAAcn1D,UAAW6zD,GAAqB,WACnD,OAAOxzD,IACT,IACA2X,EAAQm9C,cAAgBA,EAKxBn9C,EAAQs/B,MAAQ,SAAS4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxC,IAAhBA,IAAwBA,EAAcpV,SAE1C,IAAIsX,EAAO,IAAInC,EACbx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAC7BgB,GAGF,OAAOp9C,EAAQi/C,oBAAoB9C,GAC/BmD,EACAA,EAAK/tC,OAAO+N,MAAK,SAASxI,GACxB,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC3C,GACN,EAqKA0rC,EAAsBD,GAEtBf,EAAOe,EAAIjB,EAAmB,aAO9BE,EAAOe,EAAIpB,GAAgB,WACzB,OAAOvzD,IACT,IAEA4zD,EAAOe,EAAI,YAAY,WACrB,MAAO,oBACT,IAiCAh9C,EAAQuI,KAAO,SAASiX,GACtB,IAAIjX,EAAO,GACX,IAAK,IAAIpT,KAAOqqB,EACdjX,EAAKhL,KAAKpI,GAMZ,OAJAoT,EAAKmW,UAIE,SAASnN,IACd,KAAOhJ,EAAKzb,QAAQ,CAClB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAGT,OAFAjO,EAAKniB,MAAQ+F,EACboc,EAAK1C,MAAO,EACL0C,CAEX,CAMA,OADAA,EAAK1C,MAAO,EACL0C,CACT,CACF,EAoCAvR,EAAQinB,OAASA,EAMjBu1B,EAAQx0D,UAAY,CAClBiM,YAAauoD,EAEbnjC,MAAO,SAASkmC,GAcd,GAbAl3D,KAAKw1B,KAAO,EACZx1B,KAAKkpB,KAAO,EAGZlpB,KAAKw1D,KAAOx1D,KAAKy1D,MAAQ3iD,EACzB9S,KAAKwmB,MAAO,EACZxmB,KAAKs+C,SAAW,KAEhBt+C,KAAK82B,OAAS,OACd92B,KAAKklB,IAAMpS,EAEX9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAEnBY,EACH,IAAK,IAAIrkD,KAAQ7S,KAEQ,MAAnB6S,EAAKyyC,OAAO,IACZzjC,EAAO9hB,KAAKC,KAAM6S,KACjBpD,OAAOoD,EAAK0C,MAAM,MACrBvV,KAAK6S,GAAQC,EAIrB,EAEAoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EAEZ,IACI2wC,EADYn3D,KAAKq2D,WAAW,GACLE,WAC3B,GAAwB,UAApBY,EAAWnyD,KACb,MAAMmyD,EAAWjyC,IAGnB,OAAOllB,KAAKo3D,IACd,EAEA1B,kBAAmB,SAAS2B,GAC1B,GAAIr3D,KAAKwmB,KACP,MAAM6wC,EAGR,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GAYnB,OAXAtC,EAAOjwD,KAAO,QACdiwD,EAAO/vC,IAAMmyC,EACbxjD,EAAQqV,KAAOouC,EAEXC,IAGF1jD,EAAQijB,OAAS,OACjBjjB,EAAQqR,IAAMpS,KAGNykD,CACZ,CAEA,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GACxBguD,EAASxP,EAAM8Q,WAEnB,GAAqB,SAAjB9Q,EAAMwQ,OAIR,OAAO3iD,EAAO,OAGhB,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAC9BgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAEpC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SACpB,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GACzB,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAC3B,OAAO7iD,EAAOmyC,EAAM0Q,WAGxB,MAAO,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SACpB,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OAG3B,KAAIuB,EAMT,MAAM,IAAI5rD,MAAM,0CALhB,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WACpB,OAAO7iD,EAAOmyC,EAAM0Q,WAKxB,CACF,CACF,CACF,EAEAR,OAAQ,SAAS3wD,EAAMkgB,GACrB,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MACrB3T,EAAO9hB,KAAK0lD,EAAO,eACnBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CAChC,IAAIuB,EAAejS,EACnB,KACF,CACF,CAEIiS,IACU,UAAT1yD,GACS,aAATA,IACD0yD,EAAazB,QAAU/wC,GACvBA,GAAOwyC,EAAavB,aAGtBuB,EAAe,MAGjB,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EAIvD,OAHAtB,EAAOjwD,KAAOA,EACdiwD,EAAO/vC,IAAMA,EAETwyC,GACF13D,KAAK82B,OAAS,OACd92B,KAAKkpB,KAAOwuC,EAAavB,WAClB7B,GAGFt0D,KAAKgP,SAASimD,EACvB,EAEAjmD,SAAU,SAASimD,EAAQmB,GACzB,GAAoB,UAAhBnB,EAAOjwD,KACT,MAAMiwD,EAAO/vC,IAcf,MAXoB,UAAhB+vC,EAAOjwD,MACS,aAAhBiwD,EAAOjwD,KACThF,KAAKkpB,KAAO+rC,EAAO/vC,IACM,WAAhB+vC,EAAOjwD,MAChBhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAC9BllB,KAAK82B,OAAS,SACd92B,KAAKkpB,KAAO,OACa,WAAhB+rC,EAAOjwD,MAAqBoxD,IACrCp2D,KAAKkpB,KAAOktC,GAGP9B,CACT,EAEAvjB,OAAQ,SAASolB,GACf,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAGvB,OAFAn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UACtCE,EAAc7Q,GACP6O,CAEX,CACF,EAEA,MAAS,SAAS2B,GAChB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAoB,UAAhBtB,EAAOjwD,KAAkB,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EAChB,CACA,OAAOkS,CACT,CACF,CAIA,MAAM,IAAI9rD,MAAM,wBAClB,EAEA+rD,cAAe,SAASpB,EAAUX,EAAYC,GAa5C,OAZA91D,KAAKs+C,SAAW,CACdj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhB91D,KAAK82B,SAGP92B,KAAKklB,IAAMpS,GAGNwhD,CACT,GAOK38C,CAET,CAhtBe,CAqtBgBD,EAAOC,SAGtC,IACE0gD,mBAAqBD,CACvB,CAAE,MAAOE,GAWmB,iBAAfx4C,WACTA,WAAWu4C,mBAAqBD,EAEhCr4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAE5C,C,GChvBIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU/gD,EAAQA,EAAOC,QAAS6gD,GAG/C9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,4ECL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCMnC4lD,EAAY,SAAA5tC,GAAA,SAAA4tC,IAAA,OAAA5tC,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAw/F,EAAA5tC,GAAA,IAAAW,EAAAitC,EAAA15J,UAuE9B,OAvE8BysH,EAC/B7pE,OAAA,SAAOH,GAAO,IAAA6kD,EAAA,KACZwkB,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK0qB,MAAM4uI,SAASv4J,GAAG,YAAY,WAEjCkmG,EAAK5mG,EAAE,QAAQ,GAAG2wB,QAGlBhc,EAAEwqC,QACJ,IAEAx/C,KAAKu5J,oBAAsBn3G,EAAM13B,MAAM6uI,sBAAuB,CAChE,EAACntC,EAEDznF,KAAA,WACE,IAAM60H,EAAax5J,KAAK0qB,MAAM4uI,SAASG,UACnCjgG,IAAAA,WAAekH,MAAM,mCACrBlH,IAAAA,WAAekH,MAAM,mCAEzB,OACE1rD,EAACyuD,IAAM,CACL33C,UAAWkyC,IAAU,CACnB,SACA,UACA,qBACCh+D,KAAKu5J,sBAAwBv5J,KAAK0qB,MAAM4uI,SAASG,WAAa,gBAC9Dz5J,KAAKu5J,sBAAwBv5J,KAAK0qB,MAAM4uI,SAASG,WAAa,eAC/Dz5J,KAAK0qB,MAAM4uI,SAASG,WAAa,cAEnCv5F,MAAOlgE,KAAK0qB,MAAM4uI,SAASG,WAAa,qBACxCn3G,QAAStiD,KAAK05J,oBAAoBhqH,KAAK1vC,MACvCgpB,SAAUhpB,KAAK0qB,MAAM1B,UAEpBhpB,KAAK0qB,MAAM4uI,SAASG,WAAazkJ,EAAC0tD,IAAgB,CAAC7sD,KAAK,QAAQ5H,QAAQ,SAAS6d,UAAU,iBAC1F9rB,KAAKu5J,qBAAuBv5J,KAAK0qB,MAAM4uI,SAASG,YAAczkJ,EAAA,QAAM8W,UAAU,gBAAgB0tI,GAChGxkJ,EAAA,YACEA,EAAA,SAAOhQ,KAAK,OAAO20J,UAAU,EAAM5gG,SAAU/4D,KAAKu5B,QAAQmW,KAAK1vC,SAIvE,EAEAosH,EAKA7yF,QAAA,SAAQh2B,GAEN,IAAMmnF,EAAQ1qF,KAAKK,EAAE,SAAS+7B,KAAK,SAEd,IAAjBsuD,EAAMjmF,QAOVzE,KAAK0qB,MAAM4uI,SAAS9uE,OAAOE,GAAQ1qF,KAAKu5J,oBAC1C,EAEAntC,EAKAstC,oBAAA,SAAoBn2J,GAGlBvD,KAAKK,EAAE,SAASoL,OAClB,EAAC4tJ,CAAA,CAvE8B,CAASh+F,KCNrBu+F,EAAW,WAC9B,SAAAA,EAAYpvE,EAAQqvE,GAClB75J,KAAKwqF,OAASA,EACdxqF,KAAK65J,gBAAkBA,EAGvB75J,KAAK4hC,SAAW,CAAC,EAEZ5hC,KAAK85J,yBAIV95J,KAAK65J,gBAAgBjuI,iBAAiB,WAAa5rB,KAAK4hC,SAAQ,GAAM5hC,KAAI,GAAI0vC,KAAK1vC,OAEnFA,KAAK65J,gBAAgBjuI,iBAAiB,YAAc5rB,KAAK4hC,SAAS+uB,IAAM3wD,KAAK2wD,IAAIjhB,KAAK1vC,OACtFA,KAAK65J,gBAAgBjuI,iBAAiB,UAAW5rB,KAAK4hC,SAAS+uB,KAE/D3wD,KAAK65J,gBAAgBjuI,iBAAiB,OAAS5rB,KAAK4hC,SAASm4H,SAAW/5J,KAAK+5J,SAASrqH,KAAK1vC,OAC7F,CAAC,IAAAosH,EAAAwtC,EAAAj6J,UAyEA,OAzEAysH,EAED0tC,qBAAA,WAEE,IAAM9vJ,EAAMpJ,SAAS0E,cAAc,OAEnC,OAAQ,cAAe0E,GAAQ,gBAAiBA,GAAO,WAAYA,IAAS,aAAcjI,QAAU,eAAgBA,MACtH,EAACqqH,EAED4tC,OAAA,WAEOh6J,KAAK4hC,SAAQ,KAIlB5hC,KAAK65J,gBAAgBj/H,oBAAoB,WAAY56B,KAAK4hC,SAAQ,IAElE5hC,KAAK65J,gBAAgBj/H,oBAAoB,YAAa56B,KAAK4hC,SAAS+uB,KACpE3wD,KAAK65J,gBAAgBj/H,oBAAoB,UAAW56B,KAAK4hC,SAAS+uB,KAElE3wD,KAAK65J,gBAAgBj/H,oBAAoB,OAAQ56B,KAAK4hC,SAASm4H,UACjE,EAAC3tC,EAED6tC,UAAA,SAAUhnJ,GAGR,GAAIA,EAAMw3E,aAAa9sB,MACrB,IAAK,IAAI12D,EAAI,EAAGA,EAAIgM,EAAMw3E,aAAa9sB,MAAMl5D,OAAQwC,IACnD,GAAyC,SAArCgM,EAAMw3E,aAAa9sB,MAAM12D,GAAGizJ,KAC9B,OAAO,EAKb,OAAO,CACT,EAAC9tC,EAAA,GAED,SAAGn5G,GACGjT,KAAKi6J,UAAUhnJ,KAInBA,EAAMvN,iBAED1F,KAAKm6J,OACRn6J,KAAK65J,gBAAgB77F,UAAUllD,IAAI,uBACnC9Y,KAAKm6J,MAAO,GAEhB,EAAC/tC,EAEDz7D,IAAA,SAAI19C,GACEjT,KAAKi6J,UAAUhnJ,KAInBA,EAAMvN,iBAEF1F,KAAKm6J,OACPn6J,KAAK65J,gBAAgB77F,UAAUn5D,OAAO,uBACtC7E,KAAKm6J,MAAO,GAEhB,EAAC/tC,EAED2tC,SAAA,SAAS9mJ,GACHjT,KAAKi6J,UAAUhnJ,KAInBA,EAAMvN,iBAEN1F,KAAKwqF,OAAOv3E,EAAMw3E,aAAaC,OAE/B1qF,KAAK65J,gBAAgB77F,UAAUn5D,OAAO,uBACxC,EAAC+0J,CAAA,CA3F6B,GCAXQ,EAAc,WACjC,SAAAA,EAAY5vE,EAAQjqF,GAClBP,KAAKwqF,OAASA,EAGdjqF,EAAQqrB,iBAAiB,QAAS5rB,KAAKq6J,MAAM3qH,KAAK1vC,MACpD,CAoBC,OApBAo6J,EAAAz6J,UAED06J,MAAA,SAAM92J,GACJ,GAAIA,EAAE+2J,eAAiB/2J,EAAE+2J,cAAc38F,MAAO,CAK5C,IAJA,IAAMA,EAAQp6D,EAAE+2J,cAAc38F,MAExB+sB,EAAQ,GAELzjF,EAAI,EAAGA,EAAI02D,EAAMl5D,OAAQwC,KACQ,IAApC02D,EAAM12D,GAAGjC,KAAKkc,QAAQ,UACxBwpE,EAAMx1E,KAAKyoD,EAAM12D,GAAGszJ,aAIpB7vE,EAAMjmF,OAAS,IACjBlB,EAAEmC,iBAEF1F,KAAKwqF,OAAOE,GAEhB,CACF,EAAC0vE,CAAA,CA1BgC,GCEdI,EAAQ,WAC3B,SAAAA,IACEx6J,KAAKuiE,UAAY,CACf9oB,QAAS,GACTkxC,QAAS,GACT8uE,UAAW,GACXgB,SAAU,IAEZz6J,KAAKy5J,WAAY,CACnB,CAAC,IAAArtC,EAAAouC,EAAA76J,UAyEA,OAzEAysH,EAEDsuC,SAAA,SAASC,GACP36J,KAAK26J,UAAYA,CACnB,EAACvuC,EAEDrrH,GAAA,SAAGiE,EAAMwL,GACPxQ,KAAKuiE,UAAUv9D,GAAMkQ,KAAK1E,EAC5B,EAAC47G,EAEDlqF,SAAA,SAASl9B,EAAM80C,GACb95C,KAAKuiE,UAAUv9D,GAAM2R,SAAQ,SAACnG,GAAQ,OAAKA,EAASspC,EAAS,GAC/D,EAACsyE,EAED5hC,OAAA,SAAOE,EAAOkwE,GAAkB,IAAA3zD,EAAA,UAAT,IAAT2zD,IAAAA,GAAY,GACxB56J,KAAKy5J,WAAY,EACjBz5J,KAAKkiC,SAAS,YAAawoD,GAE3B11E,EAAEwqC,SAIF,IAFA,IAAMr8C,EAAO,IAAIwpD,SAER1lD,EAAI,EAAGA,EAAIyjF,EAAMjmF,OAAQwC,IAChC9D,EAAKskC,OAAO,UAAWijD,EAAMzjF,IAI/B,OAAOuyD,IAAAA,QACI,CACP1iC,OAAQ,OACR+f,IAAK2iB,IAAAA,MAAU4J,UAAU,UAAY,cAErCpuB,UAAW,SAAC5Z,GAAG,OAAKA,CAAG,EACvBj4B,KAAAA,IAED8zB,MAAK,SAACxI,GAAM,OAAKw4E,EAAKwzD,SAAShsI,EAAQmsI,EAAU,IAAC,OAC5C,SAACv2I,GACN4iF,EAAKwyD,WAAY,EACjBzkJ,EAAEwqC,SAEF,IAAMj8C,EAAI8gB,EAAMy1B,SAASqV,OAAO,GAEhC,IAAK5rD,EAAEwG,KAAKmwD,SAAS,cACnB,MAAM71C,EAGRm1C,IAAAA,OAAWvlD,QACXulD,IAAAA,OAAW9sD,KACT,CACE1H,KAAM,SAERzB,EAAE+gC,OAEN,GACJ,EAAC8nF,EAEDquC,SAAA,SAAShsI,EAAQmsI,GAAmB,IAAApuC,EAAA,UAAV,IAATouC,IAAAA,GAAY,GAC3B56J,KAAKy5J,WAAY,EAEjBhrI,EAAO9sB,KAAKgV,SAAQ,SAACia,GAAS,IAAAiqI,EACtBC,EAAUthG,IAAAA,MAAUyvC,WAAWr4E,GAGvB,OAAdiqI,EAAAruC,EAAKmuC,YAALE,EAAgBE,UAAUD,GAG1BtuC,EAAKtqF,SAAS,UAAW,CACvBtR,KAAMkqI,EACNF,UAAAA,GAEJ,IAEA56J,KAAKkiC,SAAS,WAChB,EAACs4H,CAAA,CAlF0B,GCF7B,MAAM,EAA+BjjD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,c,aCAxD,SAAS3yB,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KACnB,CAAE,MAAOsd,GAEP,YADAuS,EAAOvS,EAET,CAEIuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEvC,CAEe,SAASC,EAAkBr9E,GACxC,OAAO,WACL,IAAImJ,EAAOhN,KACPsZ,EAAO5F,UACX,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GAEzB,SAAS0nE,EAAMj6E,GACb+5E,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EAClE,CAEA,SAASk6E,EAAOjgD,GACd8/C,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EACnE,CAEAggD,OAAMluE,EACR,GACF,CACF,C,sBClCMkoJ,EAAgB,IAAIt7E,IAAoB,CAE5C,CAAC,YAAa,qBACd,CAAC,YAAa,qBACd,CAAC,aAAc,qBACf,CAAC,gBAAiB,qBAClB,CAAC,YAAa,qBACd,CAAC,YAAa,qBACd,CAAC,aAAc,qBAGf,CAAC,kBAAmB,uBACpB,CAAC,8BAA+B,uBAChC,CAAC,mBAAoB,uBACrB,CAAC,sBAAuB,uBACxB,CAAC,+BAAgC,uBACjC,CAAC,oBAAqB,uBACtB,CAAC,8BAA+B,uBAGhC,CAAC,aAAc,mBACf,CAAC,WAAY,mBACb,CAAC,WAAY,oBACb,CAAC,YAAa,oBACd,CAAC,WAAY,oBACb,CAAC,kBAAmB,oBACpB,CAAC,mBAAoB,oBACrB,CAAC,sBAAuB,oBACxB,CAAC,0BAA2B,oBAC5B,CAAC,kBAAmB,oBACpB,CAAC,WAAY,oBAGb,CAAC,wBAAyB,oBAC1B,CAAC,qBAAsB,oBACvB,CAAC,0EAA2E,oBAC5E,CAAC,0CAA2C,oBAC5C,CAAC,2BAA4B,qBAC7B,CAAC,oEAAqE,qBACtE,CAAC,iDAAkD,qBACnD,CAAC,gCAAiC,0BAClC,CAAC,4EAA6E,0BAC9E,CAAC,kDAAmD,0BACpD,CAAC,kBAAmB,mBACpB,CAAC,kBAAmB,mBAGpB,CAAC,uBAAwB,eACzB,CAAC,iCAAkC,eACnC,CAAC,+BAAgC,eAGjC,CAAC,aAAc,qBACf,CAAC,YAAa,qBACd,CAAC,cAAe,qBAChB,CAAC,YAAa,qBACd,CAAC,YAAa,qBACd,CAAC,aAAc,qBACf,CAAC,aAAc,qBACf,CAAC,eAAgB,qBAGjB,CAAC,kBAAmB,qBACpB,CAAC,YAAa,qBACd,CAAC,kBAAmB,uBAGP,SAASu7E,EAAWC,GAEjC,OACEF,EAAcz+I,IAAI2+I,KAGZA,EAAS12D,WAAW,UACf,oBACE02D,EAAS12D,WAAW,UACtB,oBACE02D,EAAS12D,WAAW,UACtB,oBAIF,cAGb,CCrFA,MAAM,EAA+B+S,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCyBnC0nD,EAAW,SAAA1vC,GAAA,SAAA0vC,IAAA,QAAAl0D,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAuJ7B,OAvJ6B2rE,EAAAwkB,EAAA1rH,KAAA0T,MAAAg4G,EAAA,OAAAtrH,OAAAmZ,KAAA,MAC9B8hJ,kBAAY,EAAAn0D,EACZo0D,aAAuB,EAAIp0D,EAC3Br2E,UAAI,EAAAq2E,EACJq0D,cAAQ,EAAAr0D,EACRupB,gBAAU,EAAAvpB,EACVs0D,kBAAY,EAAAt0D,EAsIZu0D,iBAAmB,WACjBv0D,EAAKo0D,aAAc,EACnBp0D,EAAKq0D,SAAW,8BAChBr0D,EAAKs0D,cAAe,EACpBvmJ,EAAEwqC,QACJ,EAACynD,EAGDw0D,gBAAkB,WAChBx0D,EAAKo0D,aAAc,EACnBrmJ,EAAEwqC,QACJ,EAACynD,CAAA,CAvJ6BptC,EAAAshG,EAAA1vC,GAuJ7B,IAAAW,EAAA+uC,EAAAx7J,UA8BA,OA9BAysH,EA/ID7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK4wB,KAAO5wB,KAAK0qB,MAAMkG,KACvB5wB,KAAKo7J,kBAA2CtoJ,IAA5B9S,KAAK0qB,MAAM0wI,cAAqCp7J,KAAK0qB,MAAM0wI,aAC/Ep7J,KAAKs7J,SAAWL,EAAWj7J,KAAK4wB,KAAK5rB,QACrChF,KAAKwwH,gBAAuC19G,IAA1B9S,KAAK0qB,MAAM8lG,YAAmCxwH,KAAK0qB,MAAM8lG,WAC3ExwH,KAAKu7J,kBAA6CzoJ,IAA9B9S,KAAK0qB,MAAMgxI,gBAAsC17J,KAAK0qB,MAAMgxI,cAClF,EAACtvC,EAEDlqE,eAAA,SAAeE,GACbqpE,EAAA9rH,UAAMuiD,eAAcniD,KAAC,KAAAqiD,GAGrBpiD,KAAKwwH,gBAAuC19G,IAA1B9S,KAAK0qB,MAAM8lG,YAAmCxwH,KAAK0qB,MAAM8lG,UAC7E,EAACpE,EAEDznF,KAAA,WAAO,IAAA6nF,EAAA,KACCmvC,EAAU37J,KAAK4wB,KAAK5rB,OAAOw/F,WAAW,UAEtCo3D,EAAoB57J,KAAKwwH,WAAa,WAAa,GAEzD,OACEx7G,EAAA,OACE8W,UAAS,gBAAkB8vI,EAC3B9uJ,IAAK9M,KAAK4wB,KAAKirI,OACfv5G,QAAS,WACHkqE,EAAK+uC,eAAiB/uC,EAAK4uC,eAC7B5uC,EAAKgE,YAAchE,EAAKgE,WACxBhE,EAAK9hG,MAAMoxI,YAAYtvC,EAAK57F,MAEhC,EACA5H,UAAWhpB,KAAKu7J,cAAgBv7J,KAAKo7J,cAEpCp7J,KAAKq7J,aAAeM,EACnB3mJ,EAAA,OACEoN,IAAKpiB,KAAK4wB,KAAKimB,MACf/qB,UAAU,yBACViwI,WAAW,EACXpgH,QAAS37C,KAAKw7J,iBACd9/G,OAAQ17C,KAAKy7J,gBACb58F,IAAK7+D,KAAK4wB,KAAKorI,aAGjBh8J,KAAKi8J,YAAYj8J,KAAKs7J,UAGxBtmJ,EAAA,OAAK8W,UAAU,oBAAoB9rB,KAAKwnF,YAAYxnF,KAAK4wB,MAAM3N,WAE/DjO,EAAA,OAAK8W,UAAU,iBACb9W,EAACvM,IAAO,CAAC8H,KAAMvQ,KAAK4wB,KAAKorI,YACvBhnJ,EAAA,YAAOhV,KAAK4wB,KAAKorI,cAIpBh8J,KAAKo7J,cACJpmJ,EAAA,OAAK69G,MAAM,mBAAmB/vD,KAAK,SAAS,aAAYtJ,IAAAA,WAAekH,MAAM,+CAC3E1rD,EAAC0tD,IAAgB,OAK3B,EAAC0pD,EAED6vC,YAAA,SAAYX,GACV,OACEtmJ,EAAA,QACE8W,UAAU,gBACVg3C,KAAK,eACL/vD,MAAO,CACL9E,QAAS,OACTiuJ,WAAY,SACZC,eAAgB,SAChBj6J,OAAQ,SAGTg+D,IAAK,SAASo7F,GAGrB,EAAClvC,EAED5kC,YAAA,SAAY52D,GAAwC,IAAA69F,EAAA,KAC5C9wD,EAAQ,IAAIlB,KAElB7rC,EAAKwrI,eACHz+F,EAAM7kD,IACJ,YACA9D,EAACyuD,IAAM,CAAC33C,UAAU,sCAAsCo0C,KAAK,qBAAqB,aAAW,OAAO5d,QAAS,kBAAMmsE,EAAK4tC,cAAc,IACtI,KAGJ,IAAMC,EAAc1rI,EAAK2rI,WAAa,4CAA8C,qCAC9EC,EAAkBhjG,IAAAA,WAAekH,MAAM1gE,KAAK4wB,KAAKwd,SAAckuH,EAAW,uBAA4BA,EAAW,uBAAwB,CAC7IG,SAAU7rI,EAAKorI,aAGjBprI,EAAKs7C,WACHvO,EAAM7kD,IACJ,YACA9D,EAACvM,IAAO,CAAC8H,KAAMisJ,EAAiBl6J,SAAS,UACvC0S,EAACyuD,IAAM,CACL33C,UAAU,sCACVo0C,KAAMlgE,KAAK4wB,KAAKwd,SAAW,aAAe,mBAC1C,aAAYouH,EACZxzI,SAAUhpB,KAAKo7J,aACf94G,QAAS,SAAC/+C,GAAQ,OAAKkrH,EAAK9hH,KAAKpJ,EAAE,KAGvC,IAGJ,IAAMm5J,EAAoBljG,IAAAA,WAAekH,MAAM,kDAAmD,CAAE+7F,SAAU7rI,EAAKorI,aAiBnH,OAfAprI,EAAKw7C,aACHzO,EAAM7kD,IACJ,cACA9D,EAACvM,IAAO,CAAC8H,KAAMmsJ,EAAmBp6J,SAAS,UACzC0S,EAACyuD,IAAM,CACL33C,UAAU,sCACVo0C,KAAK,eACL,aAAYw8F,EACZ1zI,SAAUhpB,KAAKo7J,aACf94G,QAAS,SAAC/+C,GAAa,OAAKkrH,EAAKkuC,cAAcp5J,EAAE,KAGrD,IAGGo6D,CACT,EAUAyuD,EAMAiwC,aAAA,WACE/hI,QAAQw0B,IAAI,iBACd,EAACs9D,EAEDz/G,KAAA,SAAKpJ,GACHA,EAAEoC,kBAIE3F,KAAK0qB,MAAMkyI,QACb58J,KAAK0qB,MAAMkyI,OAAO58J,KAAK4wB,KAE3B,EAACw7F,EAEKuwC,cAAa,eAAAE,EAAA37E,EAAA9tB,IAAAA,MAAnB,SAAA0gG,EAAoBvwJ,GAAa,IAAAs4J,EAAA,OAAAzoG,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,OACX,GAApB3lB,EAAEoC,mBAEEinE,QAAQvM,IAAY7G,IAAAA,WAAekH,MAAM,+CAAgD,CAAE+7F,SAAUz8J,KAAK4wB,KAAKorI,eAAiB,CAAFjtI,EAAA7F,KAAA,QACnG,OAAvB2yI,EAAO77J,KAAK4wB,KAAKirI,OAAM9sI,EAAA7F,KAAA,EACvBswC,IAAAA,QAAY,CAChB1iC,OAAQ,SACR+f,IAAK2iB,IAAAA,MAAU4J,UAAU,UAAY,sBAAwBy4F,IAC7D,OAEE77J,KAAK0qB,MAAMoyI,UACb98J,KAAK0qB,MAAMoyI,SAAS98J,KAAK4wB,MAC1B,wBAAA7B,EAAAmO,OAAA,GAAA42H,EAAA,UAEJ,gBAAAiJ,GAAA,OAAAF,EAAAppJ,MAAA,KAAAC,UAAA,EAdkB,GAclBynJ,CAAA,CArL6B,CAAS9/F,KCzBzC,MAAM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,2B,aC2B1BupD,EAAgB,SAAAvxC,GAAA,SAAAuxC,IAAA,QAAA/1D,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAMnC,OANmC2rE,EAAAwkB,EAAA1rH,KAAA0T,MAAAg4G,EAAA,OAAAtrH,OAAAmZ,KAAA,MAC5CwzC,KAAoB,KAAIm6C,EACxBg2D,aAAO,EAAAh2D,EACPi2D,sBAAgB,EAAAj2D,EAChBk2D,qBAAe,EAAAl2D,EACfm2D,sBAAgB,EAAAn2D,EAChB0zD,eAAS,EAAA1zD,CAAA,CANmCptC,EAAAmjG,EAAAvxC,GAMnC,IAAAW,EAAA4wC,EAAAr9J,UA4LR,OA5LQysH,EAQT7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKi9J,QAAUj9J,KAAK0qB,MAAM2yI,WAC1Br9J,KAAKk9J,iBAAmBl9J,KAAK0qB,MAAMwyI,kBAAoB,KACvDl9J,KAAKm9J,gBAAkBn9J,KAAK0qB,MAAMyyI,kBAAmB,EACrDn9J,KAAKo9J,iBAAmB,GACxBp9J,KAAK26J,UAAY36J,KAAK0qB,MAAMiwI,UAE5B36J,KAAKs9J,cACP,EAAClxC,EAEDznF,KAAA,WAAO,IAAA6nF,EAAA,KACL,OACEx3G,EAAA,OAAK8W,UAAU,sCAAsC,YAAU,UAE5D9rB,KAAKiwE,aAAgD,IAAjCjwE,KAAKu9J,iBAAiB94J,QACzCuQ,EAAA,OAAK8W,UAAW,sBACb0tC,IAAAA,WAAekH,MAAM,oCAEtB1rD,EAAC0tD,IAAgB,QAInB1iE,KAAKiwE,aAAgD,IAAjCjwE,KAAKu9J,iBAAiB94J,QAC1CuQ,EAAA,OAAK8W,UAAU,eACb9W,EAAA,KAAG8W,UAAU,oBAAoB0tC,IAAAA,WAAekH,MAAM,oCAI1D1rD,EAAA,UACGhV,KAAKu9J,iBAAiB31J,KAAI,SAACgpB,GAAe,IAAA4sI,EAAAC,EACnCnC,EAAWL,EAAWrqI,EAAK5rB,QAC3B02J,GAAiBlvC,EAAK0wC,kBAAmB1wC,EAAK+uC,aAAa3qI,GAE3D8sI,EAAiB1/F,IAAU,CAC/B,WAEa,sBAAbs9F,GAAoC,sBAEpC9uC,EAAK9hG,MAAMizI,eAAiBnxC,EAAK9hG,MAAMizI,cAAcz8I,QAAiB,OAAVs8I,EAAC5sI,EAAKjH,MAAI6zI,EAAI,KAAO,GAAK,sBAGlFpC,EAAe5uC,EAAK4wC,iBAAiBljG,SAAStpC,EAAKirI,QAEzD,OACE7mJ,EAAA,MAAI,YAAWomJ,EAActuJ,IAAK8jB,EAAKirI,QACrC7mJ,EAACmmJ,EAAW,CACVvqI,KAAMA,EACN8qI,eAAgBA,EAChBlrC,WAAYhE,EAAK9hG,MAAMizI,eAAiBnxC,EAAK9hG,MAAMizI,cAAcz8I,QAAiB,OAAVu8I,EAAC7sI,EAAKjH,MAAI8zI,EAAI,KAAO,EAC7FC,eAAgBA,EAChBtC,aAAcA,EACdwB,OAAQpwC,EAAKoxC,SAASluH,KAAK88E,GAC3BsvC,YAAatvC,EAAKsvC,YAAYpsH,KAAK88E,GACnC1/D,KAAM0/D,EAAK9hG,MAAMoiC,KACjBgwG,SAAUtwC,EAAKswC,SAASptH,KAAK88E,KAIrC,IAECxsH,KAAK69J,kBACJ7oJ,EAAA,OAAK8W,UAAW,uBACd9W,EAACyuD,IAAM,CAAC33C,UAAW,yBAA0B9C,SAAUhpB,KAAKiwE,YAAavR,QAAS1+D,KAAKiwE,YAAa3tB,QAAS,kBAAMkqE,EAAK99B,UAAU,GAC/Hl1B,IAAAA,WAAekH,MAAM,mDAOpC,EAAC0rD,EAED0wC,SAAA,SAASlsI,GACH5wB,KAAK0qB,MAAMoyI,UACb98J,KAAK0qB,MAAMoyI,SAASlsI,EAExB,EAEAw7F,EAEA0vC,YAAA,SAAYlrI,GAEN5wB,KAAK0qB,MAAMozI,aACb99J,KAAK0qB,MAAMozI,aAAaltI,GAKtB5wB,KAAK0qB,MAAMyyI,iBACbp7J,OAAOw5C,KAAK3qB,EAAKimB,MAGrB,EAACu1E,EAEDmvC,aAAA,SAAa3qI,GACX,IAAMsqI,EAAWtqI,EAAK5rB,OAGtB,OAAItF,MAAMU,QAAQJ,KAAKk9J,kBACdl9J,KAAKk9J,iBAAiBh8I,QAAQg6I,IAAa,EAIjB,UAA1Bl7J,KAAKk9J,iBACLhC,EAAShhG,SAAS,UAIQ,UAA1Bl6D,KAAKk9J,iBACLhC,EAAShhG,SAAS,UAIQ,UAA1Bl6D,KAAKk9J,kBACLhC,EAAShhG,SAAS,SAI7B,EAEAkyD,EAMMwxC,SAAQ,eAAAG,EAAA78E,EAAA9tB,IAAAA,MAAd,SAAA0gG,EAAeljI,GAAU,IAAAirI,EAAAS,EAAA0B,EAAAn4J,EAAAoB,EAAA,OAAAmsD,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,OACC,GAAlB2yI,EAAOjrI,EAAKirI,QAEd77J,KAAKo9J,iBAAiBljG,SAAS2hG,GAAO,CAAF9sI,EAAA7F,KAAA,eAAA6F,EAAA4mC,OAAA,iBAYvC,GAVD31D,KAAKo9J,iBAAiBloJ,KAAK2mJ,GAErBS,EAAc1rI,EAAK2rI,WAAa,4CAA8C,sCAE1D3vF,QACxBvM,IACE7G,IAAAA,WAAekH,MAAM9vC,EAAKwd,SAAckuH,EAAW,qBAA0BA,EAAW,qBAAsB,CAC5GG,SAAU7rI,EAAKorI,eAKE,CAAFjtI,EAAA7F,KAAA,gBAAA6F,EAAAyG,KAAA,EAAAzG,EAAA7F,KAAA,GAESswC,IAAAA,QAA8B,CACtD1iC,OAAQ,QACR+f,IAAQ2iB,IAAAA,MAAU4J,UAAU,UAAS,mBACrCjgE,KAAM,CAAE04J,KAAAA,KACR,QAJImC,EAAWjvI,EAAAymC,KAMjBgE,IAAAA,MAAU6iB,YAAY2hF,GACtBhpJ,EAAEwqC,SAEFga,IAAAA,OAAW9sD,KAAK87D,IAAO,CAAExjE,KAAM,WAAa,CAC1Ck7D,IAAKtvC,EAAKwd,SAAW,mBAAqB,cAC1C,IACAorB,IAAAA,WAAekH,MAAU,MAAJ9vC,GAAAA,EAAMwd,SAAckuH,EAAW,gBAAqBA,EAAW,mBAGlFt8J,KAAK26J,UAAU7tG,OACXjnD,EAAQ7F,KAAK26J,UAAUjwE,MAAM8P,WAAU,SAAC5pE,GAAU,OAAKirI,IAASjrI,EAAKirI,MAAM,IACjF77J,KAAK26J,UAAUjwE,MAAM3mE,OAAOle,EAAO,IACpCkpB,EAAA7F,KAAA,iBAAA6F,EAAAyG,KAAA,GAAAzG,EAAAkvI,GAAAlvI,EAAA,SAEDyqC,IAAAA,OAAW9sD,KACT87D,IACA,CAAExjE,KAAM,SACRw0D,IAAAA,WAAekH,MAAU,MAAJ9vC,GAAAA,EAAMwd,SAAckuH,EAAW,aAAkBA,EAAW,aAAc,CAC7FG,SAAU7rI,EAAKorI,cAEjB,QAIiC,OAJjCjtI,EAAAyG,KAAA,GAGIvuB,EAAIjH,KAAKo9J,iBAAiBl8I,QAAQ26I,GACxC77J,KAAKo9J,iBAAiBr5I,OAAO9c,EAAG,GAAG8nB,EAAAgiB,OAAA,6BAAAhiB,EAAAmO,OAAA,GAAA42H,EAAA,yBAGxC,gBAAAiJ,GAAA,OAAAgB,EAAAtqJ,MAAA,KAAAC,UAAA,EApDa,GAoDbspJ,CAAA,CAlM2C,CAAS3hG,KCtBlC6iG,EAAY,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAA1qJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAAqkG,EAAAC,GAAA,IAAA/xC,EAAA8xC,EAAAv+J,UAwB9B,OAxB8BysH,EACxBkxC,aAAP,WAEEt9J,KAAK26J,UAAUyD,QAAQp+J,KAAK0qB,MAAMoiC,MAAQ0M,IAAAA,QAAY1M,MAItD9sD,KAAK8sD,KAAO9sD,KAAK26J,UAAU7tG,IAC7B,EAACs/D,EAEDyxC,eAAA,WACE,OAAO79J,KAAK26J,UAAUkD,gBACxB,EAACzxC,EAED19B,SAAA,WACE1uF,KAAK26J,UAAUjsE,UACjB,EAAC09B,EAEDn8C,UAAA,WACE,OAAOjwE,KAAK26J,UAAU1qF,WACxB,EAACm8C,EAEDmxC,eAAA,WACE,OAAOv9J,KAAK26J,UAAUjwE,KACxB,EAACwzE,CAAA,CAxB8B,CAASlB,GCL1C,MAAM,EAA+BzlD,OAAOC,KAAK/D,OAAO,4B,aCanC4qD,EAAqB,SAAApoC,GAAA,SAAAooC,IAAA,QAAAp3D,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAOhB,OAPgB2rE,EAAAgvB,EAAAl2H,KAAA0T,MAAAwiH,EAAA,OAAA91H,OAAAmZ,KAAA,MACxCoxE,MAAQ,GAAEuc,EACVq3D,UAAY,KAAIr3D,EAChBzmG,QAAU,CACR+9J,QAAQ,EACRnwH,QAAQ,GACT64D,EACDvoC,SAAmB,EAAKuoC,CAAA,CAPgBptC,EAAAwkG,EAAApoC,GAOhB,IAAA7J,EAAAiyC,EAAA1+J,UAkIvB,OAlIuBysH,EAExB7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,EACf,EAACgqE,EAEDtgG,UAAA,WACE,MAAO,qCACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAekH,MAAM,gDAC9B,EAAC0rD,EAEDoyC,aAAA,SAAaj7J,GACXvD,KAAKy+J,SAAS/+J,MAAMigB,KAAKpc,EAAE5C,OAAO+pF,OACpC,EAAC0hC,EAEDqyC,SAAA,SAASC,GAAkB,IAAA3mE,GACzBA,EAAC/3F,KAAK0qF,OAAiBx1E,KAAIzB,MAAAskF,EAAI2mE,GAC/B1pJ,EAAEwqC,QACJ,EAAC4sE,EAEDuyC,WAAA,SAAWp7J,GACTA,EAAEmC,iBACFnC,EAAEoC,iBACJ,EAACymH,EAEDwyC,OAAA,SAAOr7J,GACLA,EAAEmC,iBACFnC,EAAEoC,kBACEpC,EAAEknF,cAAgBlnF,EAAEknF,aAAaC,OACnC1qF,KAAKy+J,SAAS/+J,MAAMigB,KAAKpc,EAAEknF,aAAaC,OAE5C,EAAC0hC,EAEDyyC,gBAAA,WACM7+J,KAAKs+J,WACPt+J,KAAKs+J,UAAU7yJ,OAEnB,EAAC2gH,EAEDh2F,QAAA,WAAU,IAAAo2F,EAAA,KACR,OACEx3G,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OACE8W,UAAU,iCACVw2B,QAAS,kBAAMkqE,EAAKqyC,iBAAiB,EACrC90E,WAAY/pF,KAAK2+J,WAAWjvH,KAAK1vC,MACjCqqF,OAAQrqF,KAAK4+J,OAAOlvH,KAAK1vC,OAExBw5D,IAAAA,WAAekH,MAAM,oDACtB1rD,EAAA,SACEhQ,KAAK,OACL20J,UAAQ,EACR5gG,SAAU/4D,KAAKw+J,aAAa9uH,KAAK1vC,MACjC+S,MAAO,CAAE05B,QAAS,EAAGnqC,SAAU,WAAY0L,KAAM,WACjDm0C,SAAU,SAACC,GACToqE,EAAK8xC,UAAYl8G,EAAMqF,GACzB,KAGJzyC,EAAA,OAAK8W,UAAU,+BACZ9rB,KAAK0qF,MAAM9iF,KAAI,SAACgpB,GACf,IAAM+qI,EAAU/qI,EAAK5rB,KAAKw/F,WAAW,UACrC,OACExvF,EAAA,OAAK8W,UAAU,gBACZ6vI,EAAU3mJ,EAAA,OAAKoN,IAAK8sF,IAAI4vD,gBAAgBluI,GAAOiuC,IAAKjuC,EAAK/d,OAAWmC,EAAA,KAAG8W,UAAWmvI,EAAWrqI,EAAK5rB,QACnGgQ,EAAA,OAAK8W,UAAU,qBAAqB8E,EAAK/d,MAEzCmC,EAACyuD,IAAM,CACL33C,UAAU,uDACVo0C,KAAK,eACL5d,QAAS,WACPkqE,EAAK9hC,MAAQ8hC,EAAK9hC,MAAM5jF,QAAO,SAAC+N,GAAC,OAAKA,IAAM+b,CAAI,GAClD,IAIR,KAEF5b,EAAA,OAAK8W,UAAU,4CACb9W,EAACm8E,IAAM,CAAC94D,MAAOr4B,KAAKQ,QAAQ4tC,OAAQ2qB,SAAU,SAAChyD,GAAc,OAAMylH,EAAKhsH,QAAQ4tC,OAASrnC,CAAK,GAC3FyyD,IAAAA,WAAekH,MAAM,qEAG1B1rD,EAAA,OAAK8W,UAAU,mDACb9W,EAACyuD,IAAM,CACL33C,UAAU,yBACV4yC,QAAS1+D,KAAK0+D,QACdpc,QAAStiD,KAAKwqF,OAAO96C,KAAK1vC,MAC1BgpB,UAAWhpB,KAAK0qF,MAAMjmF,QAAUzE,KAAK0+D,SAEpClF,IAAAA,WAAekH,MAAM,oDAKhC,EAAC0rD,EAEK5hC,OAAM,eAAAu0E,EAAA79E,EAAA9tB,IAAAA,MAAZ,SAAA0gG,IAAA,IAAAkL,EAAAn6I,EAAAo6I,EAAAxwC,EAAA,YAAAr7D,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,OAaK,OAZHlpB,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEIw/G,EAAW,IAAIryG,SAGrB3sD,KAAK0qF,MAAM/zE,SAAQ,SAACia,GAClBouI,EAASv3H,OAAO,UAAW7W,EAC7B,IAEAnP,OAAOvB,KAAKlgB,KAAKQ,SAASmW,SAAQ,SAAC7J,GACjCkyJ,EAASv3H,OAAO,WAAW36B,EAAG,IAAK2hH,EAAKjuH,QAAQsM,GAClD,IAAGiiB,EAAA7F,KAAA,EAEmBswC,IAAAA,QAAqC,CACzD1iC,OAAQ,OACR+f,IAAK2iB,IAAAA,MAAU4J,UAAU,UAAY,cACrCpuB,UAAW,SAAC5Z,GAAa,OAAKA,CAAG,EACjCj4B,KAAM67J,IACN,OALIn6I,EAAOkK,EAAAymC,KAOPypG,EAAgBzlG,IAAAA,MAAU6iB,YAAYx3D,GAE5C7kB,KAAK0qB,MAAMw0I,iBAAiBD,GAC5Bj/J,KAAK0qF,MAAQ,GACb1qF,KAAK2M,OAEL3M,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAAS,yBAAAzwB,EAAAmO,OAAA,GAAA42H,EAAA,UACZ,yBAAAiL,EAAAtrJ,MAAA,KAAAC,UAAA,EA9BW,GA8BX2qJ,CAAA,CAzIuC,CAASx1F,KCT9Bs2F,GAAc,SAAAhB,GAAA,SAAAgB,IAAA,OAAAhB,EAAA1qJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAAslG,EAAAhB,GAAA,IAAA/xC,EAAA+yC,EAAAx/J,UAmBhC,OAnBgCysH,EAC1BkxC,aAAP,WACEt9J,KAAK26J,UAAU/rE,aACjB,EAACw9B,EAEDyxC,eAAA,WACE,OAAO79J,KAAK26J,UAAUkD,gBACxB,EAACzxC,EAED19B,SAAA,WACE1uF,KAAK26J,UAAUjsE,UACjB,EAAC09B,EAEDn8C,UAAA,WACE,OAAOjwE,KAAK26J,UAAU1qF,WACxB,EAACm8C,EAEDmxC,eAAA,WACE,OAAOv9J,KAAK26J,UAAUjwE,KACxB,EAACy0E,CAAA,CAnBgC,CAASnC,GCCvBoC,GAAa,WAOhC,SAAAA,EAAYC,QAAoB,IAApBA,IAAAA,GAAuB,GAAK,KANjCvyG,UAAI,OACJ49B,WAAK,OACJ8D,iBAAW,OACX9vB,aAAO,OACP2gG,iBAAW,EAGjBr/J,KAAK8sD,KAAO,KACZ9sD,KAAK0qF,MAAQ,GACb1qF,KAAKwuF,aAAc,EACnBxuF,KAAK0+D,SAAU,EACf1+D,KAAKq/J,YAAcA,CACrB,CAEA,IAAAjzC,EAAAgzC,EAAAz/J,UAyHC,OAzHDysH,EAIOgyC,QAAP,SAAetxG,GACTA,IAAS9sD,KAAK8sD,OAElB9sD,KAAK8sD,KAAOA,EACZ9sD,KAAK0qF,MAAQ,GACb1qF,KAAK4uF,cACP,EAACw9B,EAEMz9B,QAAP,WACE3uF,KAAK0qF,MAAQ,GACb1qF,KAAK4uF,cACL55E,EAAEwqC,QACJ,EAEA4sE,EAKax9B,YAAW,eAAA0wE,EAAAp+E,EAAA9tB,IAAAA,MAAxB,SAAA0gG,EAAyBhyJ,GAAc,IAAA0+C,EAAAvD,EAAAp4B,EAAA,OAAAuuC,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,OAAI,QAAJ,IAAdpnB,IAAAA,EAAiB,GACnC9B,KAAKq/J,aAAgBr/J,KAAK8sD,KAAI,CAAA/9B,EAAA7F,KAAA,eAAA6F,EAAA4mC,OAAA,SAAShW,QAAQ/oB,OAAO,iBAAe,OAiBzE,OAfD52B,KAAK0+D,SAAU,EAEXle,EAAgB,cAChBvD,EAA+B,CAAC,GAE/Bj9C,KAAKq/J,aAAer/J,KAAK8sD,KAC5B7P,EAAS,CACPn2C,OAAQ,CAAEgmD,KAAM9sD,KAAK8sD,KAAKnjC,MAC1BmwD,KAAM,CAAEh4E,OAAAA,KAGV0+C,EAAQ,0BACRvD,EAAS,CACP68B,KAAM,CAAEh4E,OAAAA,KAEXitB,EAAA7F,KAAA,EAEqBswC,IAAAA,MAAU34D,KAAa2/C,EAAOvD,GAAO,OAA9C,OAAPp4B,EAAOkK,EAAAymC,KAAAzmC,EAAA4mC,OAAA,SAEN31D,KAAK6uF,aAAahqE,IAAQ,yBAAAkK,EAAAmO,OAAA,GAAA42H,EAAA,UAClC,gBAAAiJ,GAAA,OAAAuC,EAAA7rJ,MAAA,KAAAC,UAAA,EAvBuB,GAyBxB04G,EAGa19B,SAAQ,eAAA6wE,EAAAr+E,EAAA9tB,IAAAA,MAArB,SAAAosG,IAAA,OAAApsG,IAAAA,MAAA,SAAAqsG,GAAA,cAAAA,EAAAjqI,KAAAiqI,EAAAv2I,MAAA,OACsB,OAApBlpB,KAAK0+D,SAAU,EAAK+gG,EAAA9pG,OAAA,SACb31D,KAAK4uF,YAAY5uF,KAAK0qF,MAAMjmF,SAAO,wBAAAg7J,EAAAviI,OAAA,GAAAsiI,EAAA,UAC3C,yBAAAD,EAAA9rJ,MAAA,KAAAC,UAAA,EAHoB,GAGpB04G,EAEOv9B,aAAR,SAAqBhqE,GAA2D,IAAA66I,EAAAC,EAK9E,OAJA3/J,KAAK0qF,MAAQ7lE,EACb7kB,KAAK0+D,SAAU,EACf1+D,KAAKwuF,cAA+B,OAAhBkxE,EAAC76I,EAAQg9B,UAAc,OAAP89G,EAAfD,EAAiBlwE,SAAjBmwE,EAAwBz2I,MAC7ClU,EAAEwqC,SACK36B,CACT,EAEAunG,EAIO2uC,UAAP,SAAiBrwE,GACW,IAAAk1E,EAAtBlgK,MAAMU,QAAQsqF,IAChBk1E,EAAA5/J,KAAK0qF,OAAMr9D,QAAO5Z,MAAAmsJ,EAAIl1E,GAEtB1qF,KAAK0qF,MAAMr9D,QAAQq9D,GAErB11E,EAAEwqC,QACJ,EAEA4sE,EAIOyzC,eAAP,SAAsBn1E,GAChBhrF,MAAMU,QAAQsqF,GAChB1qF,KAAK0qF,MAAQ1qF,KAAK0qF,MAAM5jF,QAAO,SAAC8pB,GAAI,OAAM85D,EAAMxwB,SAAStpC,EAAK,IAE9D5wB,KAAK0qF,MAAQ1qF,KAAK0qF,MAAM5jF,QAAO,SAAC8pB,GAAI,OAAKA,IAAS85D,CAAK,IAGzD11E,EAAEwqC,QACJ,EAEA4sE,EAIO0zC,SAAP,WACE,OAAO9/J,KAAK0qF,MAAMjmF,OAAS,CAC7B,EAEA2nH,EAIOn8C,UAAP,WACE,OAAOjwE,KAAK0+D,OACd,EAEA0tD,EAIOyxC,eAAP,WACE,OAAO79J,KAAKwuF,WACd,EAEA49B,EAIOr0F,MAAP,WACE,OAAQ/3B,KAAK8/J,aAAe9/J,KAAKiwE,WACnC,EAACmvF,CAAA,CAxI+B,GCMbW,GAAgB,SAAA9pC,GAAA,SAAA8pC,IAAA,OAAA9pC,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAAkmG,EAAA9pC,GAAA,IAAA7J,EAAA2zC,EAAApgK,UAmPlC,OAnPkCysH,EACnC7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAGbpiD,KAAKs5J,SAAWl3G,EAAM13B,MAAM4uI,SAG5Bt5J,KAAK29J,cAAgB,GAGrB39J,KAAKggK,iBAA0CltJ,IAA5BsvC,EAAM13B,MAAMs1I,aAAmC59G,EAAM13B,MAAMs1I,YAG9EhgK,KAAKk9J,iBAAmB96G,EAAM13B,MAAMwyI,kBAAoB,KAGxDl9J,KAAKigK,SAAW,KAEhBjgK,KAAKkgK,qBAAuB99G,EAAM13B,MAAMy1I,qBAAuB,OAE/DngK,KAAKogK,cAAgB,KAErBpgK,KAAKqgK,cAAgB,IAAIjB,GACzBp/J,KAAKsgK,gBAAkB,IAAIlB,IAAc,GAEzCp/J,KAAKs5J,SAASoB,SAAS16J,KAAKqgK,eAG5BrgK,KAAKugK,UACP,EAACn0C,EAEDtgG,UAAA,WACE,MAAO,qCACT,EAEAsgG,EAGAjqE,SAAA,SAASC,GAAO,IAAA6kD,EAAA,KACdgvB,EAAAt2H,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,GAEfpiD,KAAKigK,SAAW,IAAIrG,GAAY,SAAClvE,GAAK,OAAKuc,EAAKqyD,SAAS9uE,OAAOE,GAAO,EAAM,GAAE1qF,KAAKK,IAAIQ,KAAK,kBAAkB,GACjH,EAEAurH,EAGAprE,SAAA,WACMhhD,KAAKigK,UACPjgK,KAAKigK,SAASjG,QAElB,EAAC5tC,EAEDznF,KAAA,WAAO,IAAA67H,EAAAh0C,EAAA,KACCi0C,EAAYzgK,KAAK29J,cAAcl5J,OACrCinH,EAAiC1rH,KAAK0qB,MAA9Bg2I,EAAQh1C,EAARg1C,SAAUC,EAAUj1C,EAAVi1C,WAElB,OACE3rJ,EAAA,OAAK8W,UAAS,sBAAwB9rB,KAAK8rB,aACzC9W,EAAA,OAAK8W,UAAU,iBACb9W,EAAA,OAAK8W,UAAU,sCACX40I,GAA0C,SAA9B1gK,KAAKkgK,sBACjBlrJ,EAACqkJ,EAAY,CAACC,SAAUt5J,KAAKs5J,SAAUtwI,SAAUhpB,KAAKqgK,cAAcpwF,YAAaspF,qBAAmB,IAErG//F,IAAAA,QAAY1M,MAAQ0M,IAAAA,QAAY1M,KAAK8zG,sBAAwBD,GAA4C,WAA9B3gK,KAAKkgK,sBAC/ElrJ,EAACyuD,IAAM,CACL33C,UAAU,SACVo0C,KAAK,qBACL5d,QAAS,WACPkqE,EAAKq0C,iBACP,GAECrnG,IAAAA,WAAekH,MAAM,qCAK5B1rD,EAAA,OAAK8W,UAAU,qBACb9W,EAAA,OAAK8W,UAAU,6BACb9W,EAAA,KAAG8W,UAAU,4BAEZ0tC,IAAAA,WAAekH,MAAM,gDAI1B1rD,EAAA,OAAK8W,UAAU,gBACb9W,EAAA,MAAI8W,UAAU,2CAA2C0tC,IAAAA,WAAekH,MAAM,oCAC7D,OAAhB8/F,EAAAhnG,IAAAA,QAAY1M,WAAI,EAAhB0zG,EAAkBM,uBAAwBJ,IAAaC,GACtD3rJ,EAAA,OAAK8W,UAAU,oBAAoB9rB,KAAK+gK,yBAAyB99I,YAIpEjjB,KAAK8oE,YACJ9zD,EAAA,OAAK8W,UAAU,eACb9W,EAACwzD,MAAUxoE,KAAK8oE,aAIpB9zD,EAAA,OAAK8W,UAAU,cACkB,SAA9B9rB,KAAKkgK,sBAAmClgK,KAAKghK,mBACf,WAA9BhhK,KAAKkgK,sBAAqClgK,KAAKihK,sBAGlDjsJ,EAAA,OAAK8W,UAAU,gBACb9W,EAACyuD,IAAM,CAACnhB,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,MAAO8rB,UAAU,UAC9C0tC,IAAAA,WAAekH,MAAM,oCAGxB1rD,EAACyuD,IAAM,CACLnhB,QAAStiD,KAAKggF,SAAStwC,KAAK1vC,MAC5BgpB,SAAwC,IAA9BhpB,KAAK29J,cAAcl5J,SAAkBzE,KAAKggK,aAAehgK,KAAK29J,cAAcl5J,OAAS,EAC/FqnB,UAAU,0BAET0tC,IAAAA,WAAekH,MAAM,iDAAkD,CAAE+/F,UAAAA,OAMtF,EAACr0C,EAED20C,uBAAA,WAAyB,IAAAtyC,EAAA,KACjB9wD,EAAQ,IAAIlB,KAgBlB,OAdAkB,EAAM7kD,IACJ,OACA9D,EAACyuD,IAAM,CAAC33C,UAAS,wBAAuD,SAA9B9rB,KAAKkgK,qBAAkC,SAAW,IAAM59G,QAAS,kBAAMmsE,EAAKyyC,WAAW,OAAO,GACrI1nG,IAAAA,WAAekH,MAAM,oCAI1B/C,EAAM7kD,IACJ,SACA9D,EAACyuD,IAAM,CAAC33C,UAAS,wBAAuD,WAA9B9rB,KAAKkgK,qBAAoC,SAAW,IAAM59G,QAAS,kBAAMmsE,EAAKyyC,WAAW,SAAS,GACzI1nG,IAAAA,WAAekH,MAAM,2CAInB/C,CACT,EAACyuD,EAED80C,WAAA,SAAWC,GACTnhK,KAAKkgK,qBAAuBiB,EAC5BnsJ,EAAEwqC,QACJ,EAAC4sE,EAED40C,iBAAA,WACE,OACEhsJ,EAACkpJ,EAAY,CACXpxG,KAAM9sD,KAAK0qB,MAAMoiC,KACjBuwG,YAAU,EACVS,aAAc99J,KAAK89J,aAAapuH,KAAK1vC,MACrC29J,cAAe39J,KAAK29J,cACpBT,iBAAkBl9J,KAAKk9J,iBACvBvC,UAAW36J,KAAKqgK,cAChBvD,SAAU98J,KAAK88J,SAASptH,KAAK1vC,OAGnC,EAACosH,EAED60C,mBAAA,WACE,OACEjsJ,EAACmqJ,GAAc,CACb9B,YAAU,EACVS,aAAc99J,KAAK89J,aAAapuH,KAAK1vC,MACrC29J,cAAe39J,KAAK29J,cACpBT,iBAAkBl9J,KAAKk9J,iBACvBpwG,KAAM9sD,KAAK0qB,MAAMoiC,KACjB6tG,UAAW36J,KAAKsgK,gBAChBxD,SAAU98J,KAAK88J,SAASptH,KAAK1vC,OAGnC,EAEAosH,EAKA0xC,aAAA,SAAaltI,GACX,IAAMwwI,EAAephK,KAAK29J,cAAcz8I,QAAQ0P,EAAKjH,MAEjDy3I,GAAgB,EAClBphK,KAAK29J,cAAc55I,OAAOq9I,EAAc,GAEpCphK,KAAKggK,YACPhgK,KAAK29J,cAAczoJ,KAAK0b,EAAKjH,MAE7B3pB,KAAK29J,cAAgB,CAAC/sI,EAAKjH,KAGjC,EAEAyiG,EAGAm0C,SAAA,WAAW,IAAA7xC,EAAA,KACT1uH,KAAKs5J,SAASv4J,GAAG,WAAW,SAAAg3F,GAAc,IAAXnnE,EAAImnE,EAAJnnE,KACzB89F,EAAKsxC,YACPtxC,EAAKivC,cAAczoJ,KAAK0b,EAAKjH,MAE7B+kG,EAAKivC,cAAgB,CAAC/sI,EAAKjH,KAE/B,GACF,EAEAyiG,EAGApsC,SAAA,WACEhgF,KAAK2M,OAGD3M,KAAK0qB,MAAMs1D,SACbhgF,KAAK0qB,MAAMs1D,SAAShgF,KAAK29J,eAM3B39J,KAAK29J,cAAc/1J,KAAI,SAACy5J,GACtB,IAAMzwI,EAAO4oC,IAAAA,MAAUxtC,QAAQ,QAASq1I,IAAW7nG,IAAAA,MAAUxtC,QAAQ,eAAgBq1I,GAErF7nG,IAAAA,SAAawN,OAAO1B,eAAe10C,EAAK0wI,SAAW,MAAM,EAC3D,GACF,EAACl1C,EAEDy0C,gBAAA,WAAkB,IAAA9iC,EAAA,KAChBvkE,IAAAA,MAAU9sD,KACR2xJ,EACA,CACEa,iBAAkB,SAACx0E,GACjBqzC,EAAKuiC,gBAAgBvF,UAAUrwE,EACjC,IAEF,EAEJ,EAAC0hC,EAED0wC,SAAA,SAASlsI,GACP5wB,KAAKsgK,gBAAgBT,eAAejvI,GACpC5wB,KAAKqgK,cAAcR,eAAejvI,EACpC,EAACmvI,CAAA,CAnPkC,CAASl3F,KCDzB04F,GAAiB,SAAA91C,GAAA,SAAA81C,IAAA,OAAA91C,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA0nG,EAAA91C,GAAA,IAAAW,EAAAm1C,EAAA5hK,UAuBnC,OAvBmCysH,EACpCznF,KAAA,WACE,OACE3vB,EAACvM,IAAO,CAAC8H,KAAMipD,IAAAA,WAAekH,MAAM,mCACjC+C,IAAAA,UAAiB,CAChB33C,UAAW,wCACXw2B,QAAStiD,KAAKwhK,yBAAyB9xH,KAAK1vC,MAC5CkgE,KAAM,uBAId,EAEAksD,EAGAo1C,yBAAA,SAAyBj+J,GACvBA,EAAEmC,iBAGF8zD,IAAAA,MAAU9sD,KAAKqzJ,GAAkB,CAC/BzG,SAAUt5J,KAAK0qB,MAAM4uI,UAEzB,EAACiI,CAAA,CAvBmC,CAASlmG,KCV/C,MAAM,GAA+Bk8C,OAAOC,KAAK/D,OAAO,6B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,gC,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,oB,eCEnCguD,GAAI,SAAAhyC,GAAA,SAAAgyC,IAAA,OAAAhyC,EAAAh8G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA4nG,EAAAhyC,GAAA,IAAArD,EAAAq1C,EAAA9hK,UAmEtB,OAnEsBysH,EACvB4vC,SAAA,WACE,OAAOtgF,IAAAA,UAAwB,YAAY37E,KAAKC,KAClD,EAACosH,EAED/rE,KAAA,WACE,OAAOq7B,IAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAACosH,EAEDv1E,IAAA,WACE,OAAO6kC,IAAAA,UAAwB,OAAO37E,KAAKC,KAC7C,EAACosH,EAEDv2G,KAAA,WACE,OAAO6lE,IAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAACosH,EAEDpnH,KAAA,WACE,OAAO02E,IAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAACosH,EAEDs1C,UAAA,WACE,OAAOhmF,IAAAA,UAAwB,aAAa37E,KAAKC,KACnD,EAACosH,EAEDp9C,UAAA,WACE,OAAO0M,IAAAA,UAAgB,YAAaA,IAAAA,eAAqB37E,KAAKC,KAChE,EAACosH,EAEDyvC,KAAA,WACE,OAAOngF,IAAAA,UAAwB,QAAQ37E,KAAKC,KAC9C,EAACosH,EAEDhgG,IAAA,WACE,OAAOsvD,IAAAA,UAAwB,OAAO37E,KAAKC,KAC7C,EAACosH,EAEDh+E,OAAA,WACE,OAAOstC,IAAAA,UAAyB,UAAU37E,KAAKC,KACjD,EAACosH,EAEDk1C,OAAA,WACE,OAAO5lF,IAAAA,UAAwB,UAAU37E,KAAKC,KAChD,EAACosH,EAEDmwC,SAAA,WACE,OAAO7gF,IAAAA,UAAyB,UAAU37E,KAAKC,KACjD,EAACosH,EAEDu1C,gBAAA,WACE,OAAOjmF,IAAAA,UAAyB,mBAAmB37E,KAAKC,KAC1D,EAACosH,EAEDgwC,YAAA,WACE,OAAO1gF,IAAAA,UAAyB,eAAe37E,KAAKC,KACtD,EAACosH,EAEDlgD,QAAA,WACE,OAAOwP,IAAAA,UAAyB,WAAW37E,KAAKC,KAClD,EAACosH,EAEDhgD,UAAA,WACE,OAAOsP,IAAAA,UAAyB,aAAa37E,KAAKC,KACpD,EAACosH,EAEDhwC,YAAA,WACE,MAAO,gBAAkBp8E,KAAK47E,OAAS,IAAM57E,KAAK2pB,KAAO,GAC3D,EAAC83I,CAAA,CAnEsB,CAAS/lF,KCClC,WACE,IAAI+8B,KAAAA,QACD3/F,IAAI,QAAS2oJ,IACb3oJ,IAAI,eAAgB2oJ,KCDqC,IAEzCG,GAAe,SAAA1M,GAAA,SAAA0M,IAAA,OAAA1M,EAAAzhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA+nG,EAAA1M,GAAA,IAAA9oC,EAAAw1C,EAAAjiK,UA6BjC,OA7BiCysH,EAClC7pE,OAAA,SAAOH,GACL8yG,EAAAv1J,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK8sD,KAAO,KAEZ9sD,KAAKqpF,SAASr0E,EAAEwrC,MAAM3L,MAAM,YAC9B,EAACu3E,EAEDh2F,QAAA,WACE,IAAMukI,EAAY,IAAIyE,GACtB,OAAI5lG,IAAAA,QAAY1M,OAAS0M,IAAAA,QAAY1M,KAAK+0G,0BAA4B7hK,KAAK8sD,OAAS0M,IAAAA,QAAY1M,MAE5F9sD,KAAK8sD,MACLoxG,EAAax+G,UAAU,CACrBoN,KAAM9sD,KAAK8sD,KACXuwG,YAAY,EACZF,iBAAiB,EACjBxC,UAAAA,IAIG,IAEX,EAACvuC,EAED1/G,KAAA,SAAKogD,GACHooG,EAAAv1J,UAAM+M,KAAI3M,KAAC,KAAA+sD,GACX9sD,KAAK8sD,KAAOA,CACd,EAAC80G,CAAA,CA7BiC,CAAS34E,MCF7C,SAAe,GAAf9oF,OACKM,GAAM,EAWT,IAAIg4G,KAAAA,SACD3/F,IAAI,eAAgB,uBAAwB8oJ,MClBlC,SAAS9nG,KAetB,OAdAA,GAAWr4C,OAAOs+B,QAAU,SAAUp/C,GACpC,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GAEvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CAEA,OAAOnM,CACT,EAEOm5D,GAASrmD,MAAMzT,KAAM0T,UAC9B,CCToC,ICAvBi8G,GAAU71D,GAAA,GCHS,CAC9BgoG,aFa+B,SAAAr2C,GAAA,SAAAq2C,IAAA,QAAA76D,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAyG9B,OAzG8B2rE,EAAAwkB,EAAA1rH,KAAA0T,MAAAg4G,EAAA,OAAAtrH,OAAAmZ,KAAA,MAC/BsX,UAAI,EAAAq2E,EACJz2F,cAAQ,EAAAy2F,EACRo0D,aAAuB,EAAIp0D,EA6F3Bu0D,iBAAmB,WACjBv0D,EAAKo0D,aAAc,EACnBrmJ,EAAEwqC,QACJ,EAACynD,EAGDw0D,gBAAkB,WAChBx0D,EAAKo0D,aAAc,EACnBrmJ,EAAEwqC,QACJ,EAACynD,CAAA,CAzG8BptC,EAAAioG,EAAAr2C,GAyG9B,IAAAW,EAAA01C,EAAAniK,UAOA,OAPAysH,EApGD7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK4wB,KAAO5wB,KAAK0qB,MAAMkG,IACzB,EAACw7F,EAEDznF,KAAA,WAAO,IAAA6nF,EAAA,KACCmvC,EAAU37J,KAAK4wB,KAAK5rB,OAAOw/F,WAAW,UACtC82D,EAAWL,EAAWj7J,KAAK4wB,KAAK5rB,QAEhC+8J,EAAa/hK,KAAK4wB,KAAK+wI,kBAAoB,cAAgB,gBAEjE,OACE3sJ,EAAA,OAAK8W,UAAU,eAAehf,IAAK9M,KAAK4wB,KAAKirI,QAC3C7mJ,EAAA,OAAK8W,UAAU,6BACb9W,EAAA,YACGkrD,IAAK6hG,GACL/hK,KAAK4wB,KAAKorI,aAGfhnJ,EAAA,OAAK8W,UAAU,wBAAwBw2B,QAAS,kBAAMkqE,EAAKsvC,YAAYtvC,EAAK57F,KAAK,GAC9E+qI,EACC37J,KAAKq7J,YACHrmJ,EAAA,OACE8W,UAAW9rB,KAAK0qB,MAAMgzI,eACtBt7I,IAAKpiB,KAAK4wB,KAAKimB,MACf6nB,QAAQ,OACR/iB,QAAS37C,KAAKw7J,iBACd9/G,OAAQ17C,KAAKy7J,gBACb58F,IAAK7+D,KAAK4wB,KAAKorI,aAGjB97F,IAvBQ,8BAuBQ,CAAEp0C,UAAW,kBAG/Bo0C,IAAKo7F,EAAU,CAAExvI,UAAW,mBAGhC9W,EAAA,OAAK8W,UAAU,yBAAyB9rB,KAAKwnF,cAAcvkE,WAGjE,EAACmpG,EAED5kC,YAAA,WAA0C,IAAAinC,EAAA,KAClC9wD,EAAQ,IAAIlB,KAElBkB,EAAM7kD,IACJ,YACA9D,EAACyuD,IAAM,CAAC33C,UAAU,sBAAsBo0C,KAAK,qBAAqB5d,QAAS,kBAAMmsE,EAAK4tC,cAAc,EAAE,aAAW,UAGnH1+F,EAAM7kD,IACJ,WACA9D,EAACyuD,IAAM,CAAC33C,UAAU,sBAAsBo0C,KAAK,kBAAkB5d,QAAS,kBAAMvgD,OAAOw5C,KAAKkzE,EAAK79F,KAAKimB,MAAM,EAAE,aAAW,cAGzH,IAAMmrH,EAAehiK,KAAK4wB,KAAK+wI,kBAAoB,cAAgB3hK,KAAK4wB,KAAKwd,SAAW,aAAe,mBAKvG,OAJAuvB,EAAM7kD,IAAI,YAAa9D,EAACyuD,IAAM,CAAC33C,UAAU,sBAAsBo0C,KAAM8hG,EAAc1/G,QAAS,kBAAMmsE,EAAKmvC,UAAU,EAAE,aAAW,UAE9HjgG,EAAM7kD,IAAI,SAAU9D,EAACyuD,IAAM,CAAC33C,UAAU,sBAAsBo0C,KAAK,eAAe5d,QAAS,kBAAMmsE,EAAKkuC,eAAe,EAAE,aAAW,YAEzHh/F,CACT,EAACyuD,EAEKuwC,cAAa,eAAAE,EAAA37E,EAAA9tB,IAAAA,MAAnB,SAAA0gG,IAAA,IAAA+H,EAAA,OAAAzoG,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,OACoE,IAArD0jD,QAAQ,8CAET,CAAF79C,EAAA7F,KAAA,QACqB,OAAvB2yI,EAAO77J,KAAK4wB,KAAKirI,OAAM9sI,EAAA7F,KAAA,EACvBswC,IAAAA,QAAY,CAChB1iC,OAAQ,SACR+f,IAAK2iB,IAAAA,MAAU4J,UAAU,UAAY,sBAAwBy4F,IAC7D,OAEE77J,KAAK0qB,MAAMoyI,UACb98J,KAAK0qB,MAAMoyI,SAAS98J,KAAK4wB,MAC1B,wBAAA7B,EAAAmO,OAAA,GAAA42H,EAAA,UAEJ,yBAAA+I,EAAAppJ,MAAA,KAAAC,UAAA,EAdkB,GAclB04G,EAEDiwC,aAAA,WAEE/hI,QAAQw0B,IAAI,iBACd,EAACs9D,EAEDwxC,SAAA,WAEEtjI,QAAQw0B,IAAI,YACd,EAQAs9D,EAMA0vC,YAAA,SAAYlrI,GACN5wB,KAAK0qB,MAAMozI,cACb99J,KAAK0qB,MAAMozI,aAAaltI,EAG5B,EAACkxI,CAAA,CAhH8B,CAASzmG,KEZxCgjG,sBAAAA,EACAH,aAAAA,GDCmB,CACnBtE,YAAAA,EACA2H,kBAAAA,GACAxB,iBAAAA,GACAvF,SAAAA,EACAnB,aAAAA,IEHF7/F,IAAAA,aAAiB1gD,IAAI,cAAc,WAGjCmyF,IAAAA,UAAe42D,uBAAyBnmF,IAAAA,UAAgB,qCACxDuvB,IAAAA,UAAeg3D,yBAA2BvmF,IAAAA,UAAgB,uCAC1DuvB,IAAAA,UAAei3D,mBAAqBxmF,IAAAA,UAAgB,iCACpDuvB,IAAAA,UAAek3D,eAAiBzmF,IAAAA,UAAgB,6BAChDuvB,IAAAA,UAAe21D,kBAAoBllF,IAAAA,UAAgB,gCACnDuvB,IAAAA,UAAe61D,kBAAoBplF,IAAAA,UAAgB,iCCRnDj7E,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,UAAU,WACrC5mE,KAAKs5J,SAAW,IAAIkB,CACtB,KACA/5J,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,gBAAgB,SAAUjJ,GACrD,GAAKnE,IAAAA,MAAU4J,UAAU,wBAAzB,CAEA,IAAMg/F,EAA0B5oG,IAAAA,MAAU4J,UAAU,sCAGpB,SAA5Bg/F,GAAkE,cAA5BA,GACxCzkG,EAAM7kD,IACJ,mBACAyoJ,GAAkB7hH,UAAU,CAC1B45G,SAAUt5J,KAAKs5J,YAMW,SAA5B8I,GAAkE,eAA5BA,GACxCzkG,EAAM7kD,IACJ,aACAugJ,EAAa35G,UAAU,CACrB45G,SAAUt5J,KAAKs5J,WAnBmC,CAuB1D,KAEA74J,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,YAAY,SAAUy7F,EAAIjgH,GAAO,IAAA6kD,EAAA,KAC5D,GAAKztC,IAAAA,MAAU4J,UAAU,wBAAzB,CAEApjE,KAAKs5J,SAASv4J,GAAG,WAAW,SAAAg3F,GAAyB,IAAtBnnE,EAAImnE,EAAJnnE,KAC7B,GAD4CmnE,EAAT6iE,YAGnC3zD,EAAKv8E,MAAMq8C,SAASC,OAAO1B,eAAe10C,EAAK0wI,SAAW,MAAM,GAK9B,mBAAvBr6D,EAAKv8E,MAAM28C,SAAwB,CAI5C,IAAMi7F,EAAuB9oG,IAAAA,SAAaorB,aAE1CprB,IAAAA,SAAaorB,aAAe,kBAAM,CAAK,EAEvCqiB,EAAKv8E,MAAM28C,UAEX7N,IAAAA,SAAaorB,aAAe09E,CAC9B,CACF,IAIA,IAAMC,EAAoBviK,KAAKwiK,6BAE3BD,IACFviK,KAAKyiK,YAAc,IAAI7I,GAAY,SAAClvE,GAAK,OAAKuc,EAAKqyD,SAAS9uE,OAAOE,EAAM,GAAE63E,IAG7E,IAAInI,GAAe,SAAC1vE,GAAK,OAAKuc,EAAKqyD,SAAS9uE,OAAOE,EAAM,GAAE1qF,KAAKK,EAAE,sBAAsB,GAhChC,CAiC1D,KAEAI,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,YAAY,SAAUy7F,EAAIjgH,GAChDoX,IAAAA,MAAU4J,UAAU,yBAErBpjE,KAAKyiK,aACPziK,KAAKyiK,YAAYzI,QAErB,IAEApzF,IAAAA,UAAqB47F,2BAA6B,WAChD,OAAOxiK,KAAKK,IAAIy1B,QAAQ,aAAa,EACvC,GC9EAr1B,EAAAA,EAAAA,QAAO4mF,IAAAA,UAAgB,YAAY,WAAY,IAAA4f,EAAA,KAC7CjnG,KAAKK,EAAE,mCACJg+C,OAAO,SACPt9C,GAAG,SAAS,SAACwC,GAIZ,GAHAA,EAAEmC,iBACFnC,EAAEoC,kBAEG6zD,IAAAA,MAAU4J,UAAU,0BAAzB,CAKA,IAAIvsB,EAAM2iB,IAAAA,MAAU4J,UAAU,UAAY,gBAE1CvsB,GAAO,IAAM9B,mBAAmBxxC,EAAE0J,cAAcy1J,QAAQC,uBACxD9rH,GAAO,IAAM9B,mBAAmBkyD,EAAKv8E,MAAMy9C,KAAKx+C,MAChDktB,GAAO,IAAM9B,mBAAmBykB,IAAAA,QAAYiwC,WAE5C1nG,OAAOw5C,KAAK1E,EARZ,MAFEwxB,MAAM7O,IAAAA,WAAekH,MAAM,wCAW/B,GACJ,KCrBAjgE,EAAAA,EAAAA,QAAOwoF,KAAAA,UAAoB,YAAY,SAAUtrB,GAC/C,IAAMilG,IAAcppG,IAAAA,MAAU4J,UAAU,wBAClCy/F,IAAe7iK,KAAK8sD,KAAKo1G,qBAE/B,GAAI1oG,IAAAA,QAAY1M,OAAS0M,IAAAA,QAAY1M,KAAK+0G,0BAA6B7hK,KAAK8sD,OAAS0M,IAAAA,QAAY1M,OAAS81G,GAAaC,IAAe,CACpI,IAAMC,EAAc9iK,KAAK8sD,KAAKo1G,qBAE9BvkG,EAAM7kD,IACJ,UACAuiE,KAAAA,UACE,CACEjrD,KAAMopC,IAAAA,MAAU,eAAgB,CAC9Bhe,SAAUx7C,KAAK8sD,KAAKgS,SAEtBjsD,KAAM,UACNqtD,KAAM,sBAER,CACElgE,KAAK8sD,OAAS0M,IAAAA,QAAY1M,KACtB0M,IAAAA,WAAekH,MAAM,kCACrBlH,IAAAA,WAAekH,MAAM,yCACzB,IACAoiG,EAAc,EAAI9tJ,EAAA,QAAM8W,UAAU,gBAAgBg3I,GAAsB,KAG5E,GAEJ,CACF,GHTF,G;;;;;;;MIxBA,IAAItqG,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,oFCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,yB,aCGnCsvD,EAAM,SAAAtzC,GAAA,SAAAszC,IAAA,QAAA97D,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAMkC,OANlC2rE,EAAAwoB,EAAA1vH,KAAA0T,MAAAg8G,EAAA,OAAAtvH,OAAAmZ,KAAA,MACzB5D,KAAOgmE,IAAAA,UAAgB,QAAOurB,EAC9Bp0F,KAAO6oE,IAAAA,UAAgB,QAAOurB,EAC9BpwD,IAAM6kC,IAAAA,UAAgB,OAAMurB,EAC5B+7D,eAAiBtnF,IAAAA,UAAgB,kBAAiBurB,EAClDg8D,iBAAmBvnF,IAAAA,UAAgB,oBAAmBurB,EACtDi8D,SAAWr6H,IAAS,MAAM,SAAClf,GAAE,MAAK,oBAAsBA,CAAE,IAACs9E,CAAA,CAI1D,OAVwBptC,EAAAkpG,EAAAtzC,GAMkCszC,EAAApjK,UAE3Dy8E,YAAA,WACE,MAAO,uBAAyBp8E,KAAK47E,OAAS,IAAM57E,KAAK2B,KAAKgoB,GAAK,GACrE,EAACo5I,CAAA,CAVwB,CAASrnF,KCHpC,MAAM,EAA+B67B,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAzC,SAAS,EAAC91C,EAAOr5D,GAC9B,YADkC,IAAJA,IAAAA,EAAO,QAC9Bq5D,EAAMjoD,MAAK,SAAChM,EAAGE,GAAC,OAAKF,EAAEpF,KAAUsF,EAAEtF,IAAO,GACnD,CCGA,IAEqB6+J,EAAmB,SAAAltC,GAAA,SAAAktC,IAAA,OAAAltC,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAAspG,EAAAltC,GAAA,IAAA7J,EAAA+2C,EAAAxjK,UAiHrC,OAjHqCysH,EACtC7pE,OAAA,SAAOH,GAAO,IAAA6kD,EAAA,KACZgvB,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEboX,IAAAA,MAAAA,IAAc,sBAAsB7iD,SAAQ,SAACysJ,GAC3Cn8D,EAAKm8D,EAAOF,aAAc,CAC5B,GACF,EAAC92C,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,qCAC9B,EAAC4yD,EAEDh2F,QAAA,WACE,OAAOphB,EAAE,cAAehV,KAAKmD,OAC/B,EAACipH,EAEDjpH,KAAA,WAAO,IAAAqpH,EAAA,KACC62C,EAAWC,EACf9pG,IAAAA,MAAAA,IAAc,sBAAsB1yD,QAAO,SAACs8J,GAC1C,IAAM/qI,EAAQmhC,IAAAA,QAAAA,KAAAA,wBAAyC4pG,EAAOz5I,MAE9D,OAAQ0O,GAASA,EAAMkrI,UACzB,KAGF,OAAwB,IAApBF,EAAS5+J,OACJg/D,IAAAA,UACL,CACE33C,UAAW,SACXw2B,QAAO,WACLkX,IAAAA,MAAAA,OACF,GAEFA,IAAAA,WAAAA,MAAqB,uCAIlB6pG,EAASz7J,KAAI,SAACw7J,GAAM,OACzBpuJ,EAAE,MAAO,CACPA,EAAE,KAAMouJ,EAAOvwJ,QACf2mD,IAAAA,MAAAA,UAAoB,6BAChB,KACAxkD,EACE,IACAouJ,EAAOH,mBACHzpG,IAAAA,WAAAA,MAAqB,0CAA2C,CAC9D9gD,KAAM+gD,MAAM2pG,EAAOH,oBAAoBvmJ,OAAO88C,IAAAA,MAAAA,UAAoB,4BAEpEA,IAAAA,WAAAA,MAAqB,kDAE/B4pG,EAAOJ,iBAAmBhuJ,EAAE,IAAKouJ,EAAOJ,kBAAoB,KAC5DhuJ,EACE,cACAA,EACE,0CACAA,EAAE,iBAAkB,CAClBA,EAAE,QAAS,CACThQ,KAAM,WACNsrB,QAASk8F,EAAK42C,EAAOF,YACrBnqG,SAAU,WACRyzD,EAAK42C,EAAOF,aAAe12C,EAAK42C,EAAOF,WACzC,IAEF1pG,IAAAA,WAAAA,MAAqB,wCAAyC,CAC5D4pG,OAAQA,EAAOvwJ,OACfnJ,EAAG05J,EAAOvsH,MACN7hC,EAAE,IAAK,CACLob,KAAMgzI,EAAOvsH,MACbl2C,OAAQ,WAEVqU,EAAE,cAKdyuD,IAAAA,UACE,CACE33C,UAAW,yBACX9C,UAAWwjG,EAAK42C,EAAOF,YACvB5gH,QAAS,WAGP,IAAMkhH,EAAwBhqG,IAAAA,QAAAA,KAAAA,6BAE9BA,IAAAA,QACW,CACP3iB,IAAK2iB,IAAAA,MAAAA,UAAoB,UAAY4pG,EAAOhnF,cAAgB,UAC5DtlD,OAAQ,OACRkzC,aAAcwiD,EAAK7wE,QAAQjM,KAAK88E,KAEjCv1F,MAAK,SAACwsI,GACLjqG,IAAAA,MAAAA,YAAsBiqG,GAGE,IAApBJ,EAAS5+J,SACP++J,EAGFzhK,OAAOkuB,SAAS66C,SAEhBtR,IAAAA,MAAAA,SAIJxkD,EAAEwqC,QACJ,GACJ,GAEFga,IAAAA,WAAAA,MAAqB,yCAEvB,GAEN,EAAC2pG,CAAA,CAjHqC,CAASt6F,KCPjD,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCOpDiwD,GAAoB,EAKHC,EAAW,oBAAAA,IAAA,KAAAv3C,EAAAu3C,EAAAhkK,UAsD7B,OAtD6BysH,EAC9Bw3C,gBAAA,WACE,GAAIF,EACF,OAAO,EAGT,IAAM52G,EAAO0M,IAAAA,QAAAA,KAEb,OAAO1M,GAAQA,EAAK+2G,2BACtB,EAACz3C,EAEDznF,KAAA,WACE,IAAK3kC,KAAK4jK,kBACR,OAAO5uJ,EAAE,OAGX,IAAMuzD,EAAW,CACf9E,IAAAA,UACE,CACE33C,UAAW,sBACXw2B,QAAS,WACPkX,IAAAA,MAAAA,KAAe2pG,EACjB,GAEF3pG,IAAAA,WAAAA,MAAqB,yCAInBmP,EAAiB,GAcvB,OAZKnP,IAAAA,QAAAA,KAAAA,8BACHmP,EAAezzD,KACbuuD,IAAAA,UAAiB,CACfvD,KAAM,eACNp0C,UAAW,iDACXw2B,QAAS,WACPohH,GAAoB,CACtB,KAKC1uJ,EACL,oBACAA,EAAE,aAAc,CACdA,EACE,kBACAwkD,IAAAA,QAAAA,KAAAA,6BACIA,IAAAA,WAAAA,MAAqB,oDACrBA,IAAAA,WAAAA,MAAqB,oDAE3BxkD,EAAE,oBAAqBwoD,IAAU+K,EAASpoE,OAAOwoE,OAGvD,EAACg7F,CAAA,CAtD6B,GCDhC,SAASG,EAAkB57H,GAA2B,QAAAwnF,EAAAh8G,UAAAjP,OAAds/J,EAAY,IAAArkK,MAAAgwH,EAAA,EAAAA,EAAA,KAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAZyoI,EAAYzoI,EAAA,GAAA5nB,UAAA4nB,GAClD,IAAMqsD,EAAWz/C,EAAQz0B,WAAC,EAAGswJ,GACvBC,EAAahvJ,EAAE2uJ,GAIrB,OAAIjkK,MAAMU,QAAQunF,IAChBA,EAASt6D,QAAQ22I,GAEVr8E,GASF3yE,EAAE,MAAO,CAACgvJ,EAAYr8E,GAC/B,CC9BA,MAAM,EAA+B4vB,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCOnCwwD,EAAsB,SAAAhuC,GAAA,SAAAguC,IAAA,OAAAhuC,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAAoqG,EAAAhuC,GAAA,IAAA7J,EAAA63C,EAAAtkK,UA0BxC,OA1BwCysH,EACzCjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,oCAAqC,CAC/Dhe,SAAUx7C,KAAK0qB,MAAMoiC,KAAKtR,YAE9B,EAAC4wE,EAEDh2F,QAAA,WAAU,IAAA6wE,EAAA,KACR,OAAOjyF,EACL,cACAA,EACE,KACAsuJ,EAAgB9pG,IAAAA,MAAAA,IAAc,uBAAuB5xD,KAAI,SAACw7J,GACxD,IAAM/qI,EAAQ4uE,EAAKv8E,MAAMoiC,KAAKo3G,wBAAwBd,EAAOz5I,MAE7D,OAAO3U,EAAE,KAAM,CACbouJ,EAAOvwJ,OAAS,KAChBwlB,GAASA,EAAM8rI,YACX3qG,IAAAA,WAAAA,MAAqB,0CAA2C,CAC9D9gD,KAAM0nD,IAAU/nC,EAAM8rI,eAExB3qG,IAAAA,WAAAA,MAAqB,6CAE7B,KAGN,EAACyqG,CAAA,CA1BwC,CAASp7F,KCHvC8mD,EAAa,CACxBwzC,oBAAAA,EACAQ,YAAAA,EACAM,uBAAAA,GCLWj7D,EAAS,CACpB+5D,OAAAA,GCDW1xD,EAAU,CACrBiyD,gBAAAA,GCUF9pG,IAAAA,aAAAA,IAAqB,aAAa,WCPnB,IACT4qG,EDOJ5qG,IAAAA,MAAAA,OAAAA,sBAAyCupG,EAEzC93D,IAAAA,UAAAA,sBAAuCvvB,IAAAA,UAAgB,yBACvDuvB,IAAAA,UAAAA,0BAA2CvvB,IAAAA,UAAgB,6BAC3DuvB,IAAAA,UAAAA,2BAA4CvvB,IAAAA,UAAgB,8BAC5DuvB,IAAAA,UAAAA,yBAA0CvvB,IAAAA,UAAgB,4BCZtD0oF,GAAc,GAElB3jK,EAAAA,EAAAA,QAAOk7D,IAAAA,UAAgB,UAAU,WAC/B,IAAIyoG,EAAJ,CAOA,GAAI5qG,IAAAA,QAAAA,QAAoBg0B,KAAY,CAClC,IAAM1gC,EAAO0M,IAAAA,QAAAA,KAET1M,GAAQA,EAAKu3G,8BAEfvhK,YAAW,WACT02D,IAAAA,MAAAA,KAAe2pG,EACjB,GAAG,EAEP,CAEAiB,GAAc,CAhBd,CAiBF,KCrBA3jK,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,UAAU,WAAY,IAAA+8B,EAAA,KAClDjnG,KAAKskK,iBAAmBhB,EAAgB9pG,IAAAA,MAAAA,IAAc,uBAEtDx5D,KAAKskK,iBAAiB3tJ,SAAQ,SAACysJ,GAC7Bn8D,EAAKm8D,EAAOF,aAAc,CAC5B,GACF,KAEAziK,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,UAAU,SAAUxC,GAAQ,IAAA8kD,EAAA,KAClD+3C,EAAY/qG,IAAAA,MAAAA,UAAoB,+BAElC+qG,GACF78F,EAAO5uD,IAAI,uBAAwB9D,EAAE,cAAeA,EAAE,gCAAiCuvJ,KAGzFvkK,KAAKskK,iBAAiB3tJ,SAAQ,SAACysJ,GAC7B17F,EAAO5uD,IACL,oBAAsBsqJ,EAAOz5I,KAC7B3U,EACE,cACAA,EACE,2CACAA,EAAE,iBAAkB,CAClBA,EAAE,QAAS,CACThQ,KAAM,WACNsrB,QAASk8F,EAAK42C,EAAOF,YACrBnqG,SAAU,WACRyzD,EAAK42C,EAAOF,aAAe12C,EAAK42C,EAAOF,WACzC,EACAl6I,SAAUwjG,EAAK9tD,UAEjBlF,IAAAA,WAAAA,MAAqB,kCAAmC,CACtD4pG,OAAQA,EAAOvwJ,OACfnJ,EAAG05J,EAAOvsH,MACN7hC,EAAE,IAAK,CACLob,KAAMgzI,EAAOvsH,MACbl2C,OAAQ,WAEVqU,EAAE,cAMlB,GACF,KAEAvU,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,cAAc,SAAUvoE,GAAM,IAAA8sH,EAAA,KAC1DzuH,KAAKskK,iBAAiB3tJ,SAAQ,SAACysJ,GAC7BzhK,EAAKyhK,EAAOF,YAAcz0C,EAAK20C,EAAOF,WACxC,GACF,KTxBAv4D,EAAAA,EAAAA,UAASnd,IAAAA,UAAqB,OAAQs2E,IACtCn5D,EAAAA,EAAAA,UAASj/B,IAAAA,UAA0B,OAAQo4F,IAG3Cn5D,EAAAA,EAAAA,UAAS1hB,IAAAA,UAAoB,OAAQ66E,IUhCrCrjK,EAAAA,EAAAA,QAAOoqF,IAAc,sBAAsB,SAACltB,EAAO7Q,GAC7C0M,IAAAA,MAAAA,UAAoB,sCACtBmE,EAAM7kD,IACJ,kBACA2qD,IAAAA,UACE,CACEvD,KAAM,mBACN5d,QAAO,WACLkX,IAAAA,MAAAA,KAAeyqG,EAAwB,CAAEn3G,KAAAA,GAC3C,GAEF0M,IAAAA,WAAAA,MAAqB,+CAI7B,GHGF,G;;;;;;;MIxBA,IAAIhB,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,qC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,iC,aCGnC+wD,EAA6B,SAAA5P,GAAA,SAAA4P,IAAA,OAAA5P,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA2qG,EAAA5P,GAAA,IAAAxoC,EAAAo4C,EAAA7kK,UAkB/C,OAlB+CysH,EAChDlsD,KAAA,WAEE,MAAO,aACT,EAACksD,EAEDh8F,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAEhC,OAAO9kB,IAAAA,MAAU0E,WAAWogB,EAAaC,UAC3C,EAAC6tC,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,6DAA8D,CAAE5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YAC5H,EAACslC,EAEDz8C,QAAA,WACE,OAAO,IACT,EAAC60F,CAAA,CAlB+C,CAAS39E,KCH3D,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,uBCEF,IAEjCgxD,EAAuB,SAAA7P,GAAA,SAAA6P,IAAA,OAAA7P,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA4qG,EAAA7P,GAAA,IAAAxoC,EAAAq4C,EAAA9kK,UAkBzC,OAlByCysH,EAC1ClsD,KAAA,WACE,MAAO,aACT,EAACksD,EAEDh8F,KAAA,WACE,IACM+3C,EADenoE,KAAK0qB,MAAM4zD,aACNC,UAE1B,OAAO/kB,IAAAA,MAAU0E,WAAWiK,EAAKjK,aAAciK,EAAK8e,WACtD,EAACmlC,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,uDAAwD,CAAE5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YACtH,EAACslC,EAEDz8C,QAAA,WACE,OAAOn7C,EAAAA,EAAAA,UAASx0B,KAAK0qB,MAAM4zD,aAAaC,UAAU3O,eAAgB,IACpE,EAAC60F,CAAA,CAlByC,CAAS59E,KCDhC69E,EAAuB,SAAA9P,GAAA,SAAA8P,IAAA,OAAA9P,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA6qG,EAAA9P,GAAA,IAAAxoC,EAAAs4C,EAAA/kK,UAiBzC,OAjByCysH,EAC1ClsD,KAAA,WACE,MAAO,kBACT,EAACksD,EAEDh8F,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAEhC,OAAO9kB,IAAAA,MAAU1M,KAAKwxB,EAAaC,UACrC,EAAC6tC,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,uDAAwD,CAAE5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YACtH,EAACslC,EAEDz8C,QAAA,WACE,OAAO,IACT,EAAC+0F,CAAA,CAjByC,CAAS79E,KCChC89E,EAA0B,SAAA/P,GAAA,SAAA+P,IAAA,OAAA/P,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA8qG,EAAA/P,GAAA,IAAAxoC,EAAAu4C,EAAAhlK,UAkB5C,OAlB4CysH,EAC7ClsD,KAAA,WACE,MAAO,cACT,EAACksD,EAEDh8F,KAAA,WACE,IACM+3C,EADenoE,KAAK0qB,MAAM4zD,aACNC,UAE1B,OAAO/kB,IAAAA,MAAU0E,WAAWiK,EAAKjK,aAAciK,EAAK3H,SACtD,EAAC4rD,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,0DAA2D,CAAE5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YACzH,EAACslC,EAEDz8C,QAAA,WACE,OAAOn7C,EAAAA,EAAAA,UAASx0B,KAAK0qB,MAAM4zD,aAAaC,UAAU3O,eAAgB,IACpE,EAAC+0F,CAAA,CAlB4C,CAAS99E,KCJxD,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCInCmxD,EAAuB,SAAAhQ,GAAA,SAAAgQ,IAAA,OAAAhQ,EAAAnhJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA+qG,EAAAhQ,GAAA,IAAAxoC,EAAAw4C,EAAAjlK,UAkBzC,OAlByCysH,EAC1ClsD,KAAA,WACE,MAAO,aACT,EAACksD,EAEDh8F,KAAA,WACE,IACM+3C,EADenoE,KAAK0qB,MAAM4zD,aACNC,UAE1B,OAAO/kB,IAAAA,MAAU0E,WAAWiK,EAAKjK,aAAciK,EAAK8e,WACtD,EAACmlC,EAEDh2F,QAAA,WACE,OAAOojC,IAAAA,WAAekH,MAAM,uDAAwD,CAAE5T,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YACtH,EAACslC,EAEDz8C,QAAA,WACE,OAAOn7C,EAAAA,EAAAA,UAASx0B,KAAK0qB,MAAM4zD,aAAaC,UAAU3O,eAAgB,IACpE,EAACg1F,CAAA,CAlByC,CAAS/9E,KCSrDrtB,IAAAA,aAAiB1gD,IAAI,kBAAkB,WACrC0gD,IAAAA,uBAA2BqrG,kBAAoBL,EAC/ChrG,IAAAA,uBAA2BsrG,YAAcL,EACzCjrG,IAAAA,uBAA2BurG,YAAcL,EACzClrG,IAAAA,uBAA2BwrG,eAAiBL,EAC5CnrG,IAAAA,uBAA2ByrG,YAAcL,EAEzC35D,IAAAA,UAAei6D,8BAAgCxpF,IAAAA,UAAgB,iCAC/DuvB,IAAAA,UAAek6D,wBAA0BzpF,IAAAA,UAAgB,2BACzDuvB,IAAAA,UAAem6D,2BAA6B1pF,IAAAA,UAAgB,8BAC5DuvB,IAAAA,UAAeo6D,wBAA0B3pF,IAAAA,UAAgB,2BACzDuvB,IAAAA,UAAeq6D,wBAA0B5pF,IAAAA,UAAgB,4BAEzDj7E,EAAAA,EAAAA,QAAO4wF,IAAAA,UAA4B,qBAAqB,SAAC1zB,GAAoB,IAAA4nG,EACrEC,EAAyB,OAAdD,EAAG/rG,IAAAA,cAAW,EAAX+rG,EAAaz4G,KAElB,MAAX04G,GAAAA,EAAaN,iCACfvnG,EAAM7kD,IACJ,oBACA,CACEjG,KAAM,oBACNqtD,KAAM,oBACNY,MAAOtH,IAAAA,WAAekH,MAAM,kEAE9B,GAIW,MAAX8kG,GAAAA,EAAaL,2BACfxnG,EAAM7kD,IACJ,cACA,CACEjG,KAAM,cACNqtD,KAAM,oBACNY,MAAOtH,IAAAA,WAAekH,MAAM,4DAE9B,GAIW,MAAX8kG,GAAAA,EAAaJ,8BACfznG,EAAM7kD,IACJ,iBACA,CACEjG,KAAM,iBACNqtD,KAAM,eACNY,MAAOtH,IAAAA,WAAekH,MAAM,gEAE7B,IAIU,MAAX8kG,GAAAA,EAAaH,2BACf1nG,EAAM7kD,IACJ,cACA,CACEjG,KAAM,cACNqtD,KAAM,mBACNY,MAAOtH,IAAAA,WAAekH,MAAM,6DAE7B,IAIU,MAAX8kG,GAAAA,EAAaF,2BACf3nG,EAAM7kD,IACJ,cACA,CACEjG,KAAM,cACNqtD,KAAM,cACNY,MAAOtH,IAAAA,WAAekH,MAAM,6DAE7B,GAGP,GACF,G;;;;;;;MCxFA,IAAIlI,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,IACzB0oC,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACR,EAEMomD,EAAgBpmD,EAAG7G,EAC3B,CCNc,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC1B,CCLD,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCKnCgyD,EAAAA,SAAAA,G,2DACZlqG,UAAP,SAAiB7wC,GACf,EAAM6wC,UAAN,UAAgB7wC,GAEhBA,EAAMoB,UAAY,eAClBpB,EAAMk2C,gBAAkB,sBACxBl2C,EAAMm2C,cAAgB,sBACvB,E,2BAEDte,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAKoxH,MAAQ,CACXs0C,OAAQ,CACN,kBACA,eACA,gBACA,mBACA,eACA,iBACA,mBACA,iBACA,wBACA,kBACA,mBACA,oBACA,cACA,iBACA,kBACA,iBACA,gBACA,kBACA,gBACA,oBACA,oBACA,aACA,gBACA,oBACA,gBACA,qBACA,uBACA,qBACA,mBACA,iBACA,gBACA,kBACA,gBACA,iBACA,kBACA,kBACA,gBACA,uBACA,kBACA,mBACA,gBACA,wBACA,qBACA,qBACA,YACA,gBACA,gBACA,gBACA,mBACA,sBACA,qBACA,kBACA,eACA,eACA,oBACA,oBACA,iBACA,wBACA,wBACA,eACA,qBACA,kBACA,uBACA,gBACA,qBACA,gBACA,gBACA,iBACA,iBACA,eACA,cACA,YACA,eACA,gBACA,kBACA,mBACA,cACA,cACA,sBACA,gBACA,8BACA,cACA,kBAGL,E,EAED/gI,KAAA,SAAKyd,GAGH,OAFAA,EAAM9sB,SAAWt1B,KAAK29D,QAAQ16C,UAEvB,EAAP,UAAa0hB,KAAb,UAAkByd,EACnB,E,EAEDyf,iBAAA,WAAmB,WACX8jG,EAAK,SAACnmG,GAAD,OAASU,IAAKV,EAAK,CAAE1zC,UAAW,iCAAhC,EAEX,MAAO,CACL,mBAAmBvnB,KAAKvE,KAAK0qB,MAAM0V,aAC/BpgC,KAAK0qB,MAAMk7I,eACT,CACE,SACE95I,UAAWkyC,IAAU,CACnB,2BAA2B,EAC3B,0BAAsD,iBAA3Bh+D,KAAK0qB,MAAM0V,YACtC,gBAA6C,kBAA3BpgC,KAAK0qB,MAAM0V,cAE/By+B,IAAI,GACJz8C,IAAKpiB,KAAK0qB,MAAMm7I,UAChBlqH,QAAS,WACP,EAAKjxB,MAAMm7I,QAAQ,QACnB,EAAKhgJ,OAAO,EAAKurG,MAAMs0C,OAAO,GAC/B,KAGLC,EAAG,gBACLA,EAAG3lK,KAAK0qB,MAAM0V,aAClBpgC,KAAK0qB,MAAMq2C,UAAYb,IAAKlgE,KAAK0qB,MAAMq2C,UAAW,CAAEj1C,UAAW,iBAAoB,GAEtF,E,EAED6xC,MAAA,WAAQ,WACAA,EAAQ,IAAIlB,KA6DlB,MA3D6B,SAAzBz8D,KAAK0qB,MAAMm7I,WAAwB7lK,KAAK0qB,MAAMk7I,iBAChDjoG,EAAM7kD,IACJ,UACA,SACEwpC,QAAS,kBAAM,EAAKz8B,OAAO,UAAlB,EACTi9C,KAAK,SACLh3C,UAAWkyC,IAAU,CACnB,mBAAmB,EACnB,+BAA2D,YAA3Bh+D,KAAK0qB,MAAM0V,cAE7Cj3B,MAAM,WAEN,SACE2iB,UAAS,oBAAsB9rB,KAAK0qB,MAAM7kB,QAC1Cg5D,IAAI,UACJ9rD,MAAO,CAAEnE,MAAO,OAAQ1M,OAAQ,OAAQ4qC,OAAQ,eAChD1qB,IAAKpiB,KAAK0qB,MAAMm7I,aAGpB,KAGFloG,EAAM7kD,IACJ,eACA,SACEwpC,QAAS,kBAAM,EAAKz8B,OAAO,eAAlB,EACTi9C,KAAK,SACLh3C,UAAWkyC,IAAU,CACnB,iDAAiD,EACjD,+BAA2D,iBAA3Bh+D,KAAK0qB,MAAM0V,cAE7Cj3B,MAAM,gBAEN,SACE2iB,UAAS,4CAA8C9rB,KAAK0qB,MAAM7kB,QAClEg5D,IAAI,UACJ9rD,MAAO,CAAEnE,MAAO,OAAQ1M,OAAQ,OAAQ4qC,OAAQ,eAChD1qB,IAAKpiB,KAAK0qB,MAAMm7I,aAGpB,MAIJ7lK,KAAKoxH,MAAMs0C,OAAO/uJ,SAAQ,SAACmvJ,GACzBnoG,EAAM7kD,IACJgtJ,EAAQniK,QAAQ,IAAK,KACrB,SACE2+C,QAAS,kBAAM,EAAKz8B,OAAOigJ,EAAlB,EACTh6I,UAAWkyC,IAAU,CAAE,mBAAmB,EAAM,+BAAgC,EAAKtzC,MAAM0V,cAAgB0lI,IAC3GhjG,KAAK,SACL35D,MAAK,IAAM28J,GAEV5lG,IAAK4lG,EAAS,CAAEh6I,UAAW,uBAE9B,IAEH,IAEM6xC,CACR,E,EAED93C,OAAA,SAAOq6C,GACLlgE,KAAK0qB,MAAM0V,UAAU8/B,EACtB,E,EAzMkBulG,CAA8BthK,KCE9B4hK,EAAAA,SAAAA,G,oFACnBxjH,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAKojC,OAASpjC,KAAK0qB,MAAM0Y,OAEzBpjC,KAAK4lK,eAAiBpsG,IAAAA,MAAAA,UAAoB,4CAC3C,E,EAED70B,KAAA,SAAKyd,GACH,OACE,SAAKt2B,UAAU,+BAA+BnC,GAAE,eAAiB3pB,KAAKojC,OAAOv9B,SAC3E,WACEb,KAAK,OACL8mB,UAAU,wDACV84C,YAAapL,IAAAA,WAAAA,MAAqB,sCAClCnpC,SAAsC,GAA3BrwB,KAAKojC,OAAOv9B,QAAU,GAAS,EAC1CgzD,KAAM74D,KAAKojC,OAAOj6B,QAGnBs8J,EAAsB/lH,UAAU,CAC/Btf,UAAWpgC,KAAKojC,OAAO88B,KACvB2lG,QAAS7lK,KAAKojC,OAAOyiI,QACrBhgK,MAAO7F,KAAKojC,OAAOv9B,MACnB+/J,eAAgB5lK,KAAK4lK,iBAGvB,WACE5gK,KAAK,OACL8mB,UAAU,sDACV84C,YAAapL,IAAAA,WAAAA,MAAqB,oCAClCnpC,SAAsC,GAA3BrwB,KAAKojC,OAAOv9B,QAAU,GACjCkB,MAAO/G,KAAKojC,OAAOyT,MACnBkiB,SAAUk4B,IAAS,QAASjxF,KAAKgmK,YAAYt2H,KAAK1vC,SAGpD,WACEgF,KAAK,SACL8mB,UAAU,uDACVnC,GAAE,OAAS3pB,KAAKojC,OAAOv9B,QAArB,QACFgzD,KAAM74D,KAAKojC,OAAO88B,OAGpB,WACEl7D,KAAK,SACL8mB,UAAU,8CACVnC,GAAE,OAAS3pB,KAAKojC,OAAOv9B,QAArB,WACFgzD,KAAM74D,KAAKojC,OAAOyiI,UAIzB,E,EAEDG,YAAA,SAAYj/J,GAAO,WACjB/G,KAAKojC,OAAOyT,IAAI9vC,GAEX/G,KAAK4lK,iBAIVz4J,aAAanN,KAAKimK,mBAES,gCAAvBjmK,KAAKojC,OAAO88B,SACdlgE,KAAKojC,OAAO88B,KAAK,+BACjBlgE,KAAKojC,OAAOyiI,QAAQ,SAGtB7lK,KAAKimK,kBAAoBnjK,YAAW,WAClC,GCtES,SAAoB+zC,GACjC,IAAIqvH,EAEJ,IACEA,EAAc,IAAIh3D,IAAIr4D,EAGvB,CAFC,MAAOz9B,GACP,OAAO,CACR,CAED,MAAO,CAAC,QAAS,UAAU8gD,SAASgsG,EAAYnvH,SACjD,CD4DSovH,CAAW,EAAK/iI,OAAOyT,OAAQ,CACjC,IAAMuvH,EAAU,oCE3DT,SAAwBvvH,GACrC,IAAIqvH,EAEJ,IACEA,EAAc,IAAIh3D,IAAIr4D,EAGvB,CAFC,MAAOz9B,GACP,OAAO,IACR,CAED,MAAI,CAAC,QAAS,UAAU8gD,SAASgsG,EAAYnvH,UACpCmvH,EAAY7sH,KAGd,IACR,CF6C2DgtH,CAAe,EAAKjjI,OAAOyT,OAAlE,OAEb,EAAKzT,OAAOyiI,QAAQO,GACpB,EAAKhjI,OAAO88B,KAAK,WAEjBlrD,EAAEwqC,QACH,MACC,EAAKpc,OAAO88B,KAAK,gBACjB,EAAK98B,OAAOyiI,QAAQ,QACpB7wJ,EAAEwqC,QAEL,GAAE,KACJ,E,EAjFkBumH,CAA8B1qG,KGD9BirG,EAAAA,SAAAA,G,oFACnB/jH,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK8kC,QAAU,GACf,IAAMA,EAAU9kC,KAAK0qB,MAAMoiC,KAAKy5G,gBAE5BzhI,EAAQrgC,OACVqgC,EAAQnuB,SAAQ,SAACysB,EAAQv9B,GACnBu9B,GAAUA,EAAOj6B,OACnB,EAAKq9J,mBAAmB3gK,EAAOu9B,EAElC,IAEDpjC,KAAKwmK,mBAAmB,EAE3B,E,EAED16I,UAAA,WACE,MAAO,iCACR,E,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,yCAC7B,E,EAEDpjC,QAAA,WACE,IAAMqwI,EAA0BzmK,KAAK8kC,QAAQwc,MAAK,SAACle,GAAD,MAA8B,gCAAlBA,EAAO88B,MAAnB,IAElD,OACE,SAAKp0C,UAAU,cACb,SAAKA,UAAU,QACZ9rB,KAAK8kC,QAAQl9B,KAAI,SAACw7B,GAAD,OAAY2iI,EAAsBrmH,UAAU,CAAEtc,OAAAA,GAA9C,IAElB,SAAKtX,UAAU,aAAanC,GAAG,uBAC7B,SAAKmC,UAAU,+CAA+C/Y,MAAM,mBAAmBuvC,QAAStiD,KAAK0mK,gBAAgBh3H,KAAK1vC,OACxH,OAAG8rB,UAAU,uBAGf,SAAKA,UAAU,+CAA+C/Y,MAAM,mBAAmBuvC,QAAStiD,KAAK2mK,gBAAgBj3H,KAAK1vC,OACxH,OAAG8rB,UAAU,wBAGd23C,IAAAA,UACC,CACEz+D,KAAM,SACN+N,MAAO,gBACP+Y,UAAW,gDACX4yC,QAAS1+D,KAAK0+D,QAEd11C,SAAUy9I,EACVt9J,MAAOs9J,EAA0BjtG,IAAAA,WAAAA,MAAqB,gEAAkE,MAE1HA,IAAAA,WAAAA,MAAqB,0CAMhC,E,EAED73D,KAAA,WACE,IAAMmjC,EAAU,GAahB,OAXA9kC,KAAK8kC,QAAQnuB,SAAQ,SAACysB,GAChBA,GAAUA,EAAOj6B,SAAWi6B,EAAOyT,OACrC/R,EAAQ5vB,KAAK,CACX/L,MAAOi6B,EAAOj6B,QACd0tC,IAAKzT,EAAOyT,MACZqpB,KAAM98B,EAAO88B,OACb2lG,QAASziI,EAAOyiI,WAGrB,IAEM,CACLU,cAAe7pI,KAAKwwB,UAAUpoB,GAEjC,E,EAEDogC,SAAA,SAAS3hE,GAAG,WACVA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf1+D,KAAK0qB,MAAMoiC,KACRob,KAAKloE,KAAK2B,OAAQ,CAAEqoE,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QACpDi3B,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,OACpBi3B,KAAK52B,EAAE,QAAQoD,QAAQ,uBAAwB,CAACzD,KAAK2B,OAAO4kK,iBAH/D,OAIS,WACL,EAAK7nG,SAAU,EACf1pD,EAAEwqC,QACH,GACJ,E,EAEDknH,gBAAA,WAAkB,WAChB1mK,KAAKwmK,mBAAmBxmK,KAAK8kC,QAAQrgC,QAErCuQ,EAAEwqC,SAEFn/C,EAAE,YAAY80B,OAAM,WAClB90B,EAAE,iBAAgB,EAAKykC,QAAQrgC,OAAS,IAAK0sC,WAC9C,GACF,E,EAEDw1H,gBAAA,WAAkB,WACVC,EAAS5mK,KAAK8kC,QAAQrgC,OAAS,EAErCpE,EAAE,gBAAgBumK,GAAUx1H,QAAQ,UAAU,WAC5C,EAAKtM,QAAQ/gB,OAAO6iJ,EAAQ,GAC5B5xJ,EAAEwqC,QACH,GACF,E,EAEDgnH,mBAAA,SAAmB15J,EAAKs2B,QAAe,IAAfA,IAAAA,EAAS,MACjB,MAAVA,GACFpjC,KAAK8kC,QAAQh4B,GAAO,CAAC,EACrB9M,KAAK8kC,QAAQh4B,GAAKjH,MAAQunD,IAAOtgD,GACjC9M,KAAK8kC,QAAQh4B,GAAK+4J,QAAUz4G,IAAO,QACnCptD,KAAK8kC,QAAQh4B,GAAK3D,MAAQikD,IAAO,IACjCptD,KAAK8kC,QAAQh4B,GAAK+pC,IAAMuW,IAAO,IAC/BptD,KAAK8kC,QAAQh4B,GAAKozD,KAAO9S,IAAO,kBAEhCptD,KAAK8kC,QAAQh4B,GAAO,CAAC,EACrB9M,KAAK8kC,QAAQh4B,GAAKjH,MAAQunD,IAAOtgD,GACjC9M,KAAK8kC,QAAQh4B,GAAK+4J,QAAUz4G,IAAOhqB,EAAOyiI,SAC1C7lK,KAAK8kC,QAAQh4B,GAAK3D,MAAQikD,IAAOhqB,EAAOj6B,OACxCnJ,KAAK8kC,QAAQh4B,GAAK+pC,IAAMuW,IAAOhqB,EAAOyT,KACtC72C,KAAK8kC,QAAQh4B,GAAKozD,KAAO9S,IAAOhqB,EAAO88B,MAE1C,E,EAlIkBomG,CAA2Bz9F,KCKhDrP,IAAAA,aAAAA,IAAqB,qBAAqB,WACxCyxC,IAAAA,UAAAA,cAA+BvvB,IAAAA,UAAgB,iBAAiB,SAAClc,GAAD,OAAS9iC,KAAK3iB,MAAMylD,GAAO,KAA3B,IAChEyrC,IAAAA,UAAAA,qBAAsCvvB,IAAAA,UAAgB,wBACtDuvB,IAAAA,UAAAA,qBAAsCvvB,IAAAA,UAAgB,yBAEtDj7E,EAAAA,EAAAA,QAAOyoF,IAAAA,UAAoB,aAAa,SAAUvrB,GAAO,WACjD7Q,EAAO9sD,KAAK0qB,MAAMoiC,KAExB,GAAKA,EAAK+5G,uBAAV,CAIA7mK,KAAKq6E,QAAUvtB,EAAKg6G,uBACpB9mK,KAAK8kC,QAAU9kC,KAAK0qB,MAAMoiC,KAAKy5G,gBAE/B,IAAMQ,EAAa,IAAItqG,KAEnBz8D,KAAK8kC,QAAQrgC,QACfzE,KAAK8kC,QAAQnuB,SAAQ,SAACysB,EAAQv9B,GAC5B,GAAIu9B,GAAUA,EAAOj6B,OAASi6B,EAAO88B,MAAQ98B,EAAOyT,IAAK,SACnDmwH,EAAc,CAAC,EACfpmG,EAAkB5C,MAAS,uBACX56B,EAAO88B,KADI,IACIr6D,EADJ,gBACyBA,IAAU,EADnC,EAE7B,2BAA2C,iBAAhBu9B,EAAO88B,KAFL,IAKX,YAAhB98B,EAAO88B,MAAsC,iBAAhB98B,EAAO88B,OAClC1G,IAAAA,MAAAA,UAAoB,6CACtBwtG,EAAc,CACZ3wC,gBAAiB,QAAQjzF,EAAOyiI,QAAjB,KACfoB,eAAgB,MAChBC,mBAAoB,SACpBC,iBAAkB,aAGpBvmG,GAAmB,iBAIvBmmG,EAAWjuJ,IAAX,eACiBjT,EACf,OAAGuqB,KAAMgT,EAAOyT,IAAKl2C,OAAO,SAASq4J,IAAI,gCACtC37E,IAAAA,UAAgB,CACfvxD,UAAWkyC,KAAS,OAAI4C,IAAkB,EAAtB,EAA4B,yBAAyB,EAAKwmG,SAA1D,IACpBpiK,KAAM,SACNk7D,KAAM98B,EAAO88B,KACbY,MAAO19B,EAAOj6B,MACd4J,MAAOi0J,KAId,CACF,IAEGhnK,KAAKq6E,SACP0sF,EAAWjuJ,IACT,yBACAukE,IAAAA,UAAgB,CACdr4E,KAAM,yBACNk7D,KAAM,aACNY,MAAOtH,IAAAA,WAAAA,MAAqB,qCAC5BlX,QAAS,WACPkX,IAAAA,MAAAA,KAAe8sG,EAAoB,CAAEx5G,KAAM,EAAKpiC,MAAMoiC,MACvD,KAEF,IAGI9sD,KAAKq6E,SACd0sF,EAAWjuJ,IACT,yBACAukE,IAAAA,UAAgB,CACdr4E,KAAM,8BACNk7D,KAAM,cACNY,MAAOtH,IAAAA,WAAAA,MAAqB,oCAC5BlX,QAAS,WACPkX,IAAAA,MAAAA,KAAe8sG,EAAoB,CAAEx5G,KAAM,EAAKpiC,MAAMoiC,MACvD,KAEF,GAIDi6G,EAAW9jJ,UAAUxe,OAAS,GAChCk5D,EAAM7kD,IAAI,mBAAoBiuJ,EAAW9jJ,UAAW,GA1ErD,CA4EF,GACF,G;;;;;;;MCjGD,IAAIu1C,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uBCIjD,IAAM4zD,EAAW,CACtBC,SAAU,2CACVC,QAAS,6CACTC,SAAU,sFACVC,OAAQ,kDACRC,SAAU,sDACVC,SAAU,iDAEVC,UAAW,uEACXC,cAAe,kCACfC,QAAS,4EACTC,GAAI,4EACJC,MAAO,sGAEPC,OAAQ,SAACtmK,GAAI,OAAKigF,UAAUsmF,MAAMC,EAAcxmK,GAAM,GAE3CymK,EAAe,CAC1BR,UAAW,YACXE,QAAS,YACTC,GAAI,YACJC,MAAO,cACPC,OAAQ,uBAGGtmK,EAAO,SAACu8D,GAAe,IAAAmqG,EAKlC,MAAO,CAAExxH,IAJGqnB,EAAWoqG,WAITn/J,MAHAqwD,IAAAA,MAGOmb,YAFAzW,EAAWwR,cAAel7C,EAAAA,EAAAA,WAAS0qC,EAAAA,EAAAA,iBAAsC,OAAvBmpG,EAACnqG,EAAWwR,kBAAW,EAAtB24F,EAAwBh8E,eAAgB,IAAK,IAAO,GAG9H,EAEa87E,EAAgB,SAAHpwE,GAA6B,MAAQ,CAAE5uF,MAA5B4uF,EAAL5uF,MAAwCoH,KAAtBwnF,EAAXpjB,YAAoD99B,IAApCkhD,EAAHlhD,IAA4C,ECpCjF,SAAS4b,EAAgBhhD,GAItC,OAHAghD,EAAkBhxC,OAAOixC,eAAiBjxC,OAAOC,eAAiB,SAAyBjQ,GACzF,OAAOA,EAAE+6C,WAAa/qC,OAAOC,eAAejQ,EAC9C,EACOghD,EAAgBhhD,EACzB,CCHe,SAAS82J,EAAW/zD,EAAQl7F,EAAMkvJ,GAc/C,OAVED,ECNW,WACb,GAAuB,oBAAZhvG,UAA4BA,QAAQkvG,UAAW,OAAO,EACjE,GAAIlvG,QAAQkvG,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVpvG,MAAsB,OAAO,EAExC,IAEE,OADA5yD,QAAQ/G,UAAUqc,QAAQjc,KAAKw5D,QAAQkvG,UAAU/hK,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOnD,GACP,OAAO,CACT,CACF,CDRMolK,GACWpvG,QAAQkvG,UAER,SAAoBj0D,EAAQl7F,EAAMkvJ,GAC7C,IAAI9+J,EAAI,CAAC,MACTA,EAAEwL,KAAKzB,MAAM/J,EAAG4P,GAChB,IACIgrC,EAAW,IADGvkC,SAAS2vB,KAAKj8B,MAAM+gG,EAAQ9qG,IAG9C,OADI8+J,GAAO91G,EAAepO,EAAUkkH,EAAM7oK,WACnC2kD,CACT,EAGKikH,EAAW90J,MAAM,KAAMC,UAChC,CEbe,SAASk1J,EAAiBJ,GACvC,IAAIK,EAAwB,mBAARnpF,IAAqB,IAAIA,SAAQ5sE,EA8BrD,OA5BA81J,EAAmB,SAA0BJ,GAC3C,GAAc,OAAVA,ICRkC3kK,EDQE2kK,GCPsB,IAAzDzoJ,SAASxE,SAASxb,KAAK8D,GAAIqd,QAAQ,kBDOQ,OAAOsnJ,ECR5C,IAA2B3kK,EDUtC,GAAqB,mBAAV2kK,EACT,MAAM,IAAIpvI,UAAU,sDAGtB,QAAsB,IAAXyvI,EAAwB,CACjC,GAAIA,EAAOnzI,IAAI8yI,GAAQ,OAAOK,EAAOtsJ,IAAIisJ,GAEzCK,EAAO/sJ,IAAI0sJ,EAAOM,EACpB,CAEA,SAASA,IACP,OAAOL,EAAUD,EAAO90J,UAAWgO,EAAe1hB,MAAM4L,YAC1D,CAUA,OARAk9J,EAAQnpK,UAAY8hB,OAAOugB,OAAOwmI,EAAM7oK,UAAW,CACjDiM,YAAa,CACX7E,MAAO+hK,EACPvlI,YAAY,EACZE,UAAU,EACVtH,cAAc,KAGXu2B,EAAeo2G,EAASN,EACjC,EAEOI,EAAiBJ,EAC1B,C,0GEpCA,IAAMO,EAAc,SAAAltI,GAAM,OAAIA,EAC5Bl4B,QAAQ,KAAM,SACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,SACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,OAAO,E,0GCHhB,IAAMqlK,EAAiB,SAAAC,GAC7B,SAAAD,EAAYl8J,GAAK,IAAAm6F,EAGD,OAFfA,EAAAgiE,EAAAlpK,KAAA,6BAA6B+M,EAAM,oBAAoBA,EAAQ,iBAAmBA,IAAI,MACjF+F,KAAO,oBACZo0F,EAAKn6F,IAAMA,EAAIm6F,CAChB,CAAC,OAL4BptC,EAAAmvG,EAAAC,GAK5BD,CAAA,CAL4B,CAK5BJ,EALqC/8J,QAQxB,SAASq9J,EAAKhgK,EAAUvH,EAAIwnK,GAAgE,IAAApxE,OAAA,IAAAoxE,EAAJ,CAAC,EAACA,EAAAC,EAAArxE,EAA3DsxE,cAAAA,OAAa,IAAAD,GAAQA,EAAAE,EAAAvxE,EAAExb,UAAAA,OAAS,IAAA+sF,EAAG,SAAA/hE,GAAO,OAAAA,EAALxgG,KAAgB,EAAAuiK,EAClG,GAAwB,iBAAbpgK,EACV,MAAM,IAAIkwB,UAAU,0DAA6DlwB,EAAQ,KAG1F,GAAoB,iBAATvH,EACV,MAAM,IAAIy3B,UAAU,uEAA4Ez3B,EAAI,KAGrG,IAkB0B4nK,EAlBpB5lK,EAAU,SAACihE,EAAa93D,GAE7B,IADA,IACqC08J,EADjCziK,EAAQpF,EACZ8nK,E,0sBAAAC,CAAuB58J,EAAIf,MAAM,QAAIy9J,EAAAC,KAAAjjJ,MAAE,KAA5B02C,EAAQssG,EAAAziK,MAClBA,EAAQA,EAAQA,EAAMm2D,QAAYpqD,CACnC,CAEA,IAAM62J,EAAmBptF,EAAU,CAACx1E,MAAAA,EAAO+F,IAAAA,IAC3C,QAAyBgG,IAArB62J,EAAgC,CACnC,GAAIN,EACH,OAAOzkG,EAGR,MAAM,IAAIokG,EAAkBl8J,EAC7B,CAEA,OAAOqL,OAAOwxJ,EACf,EAKMC,EAAmB,gDAQzB,OANIA,EAAiBrlK,KAAK2E,KACzBA,EAAWA,EAASvF,QAAQimK,GANHL,EAMuC5lK,EAN3B,kBDvBhC,SAAoB+vG,GAC1B,GAAuB,iBAAZA,EACV,OAAOq1D,EAAYr1D,GAGI,IAAxB,IAAIjkD,EAASikD,EAAQ,GAAGgc,EAAAh8G,UAAAjP,OALcm6B,EAAM,IAAAl/B,MAAAgwH,EAAA,EAAAA,EAAA,KAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAANsD,EAAMtD,EAAA,GAAA5nB,UAAA4nB,GAM5C,IAAK,IAAwCkuI,EAA7CC,E,0sBAAAC,CAA6B9qI,EAAO2mB,aAASikH,EAAAC,KAAAjjJ,MAAE,KAAAqjJ,EAAAL,EAAAziK,MAAnClB,EAAKgkK,EAAA,GAAE9iK,EAAK8iK,EAAA,GACvBp6G,EAASA,EAASs5G,EAAY5wJ,OAAOpR,IAAU2sG,EAAQ7tG,EAAQ,EAChE,CAEA,OAAO4pD,CACR,CCYoDq6G,CAAWP,EAAQ91J,WAAC,EAADC,WAAU,KAWzExK,EAASvF,QAFG,8CAEiBA,EACrC,C,0GC1CO,IAAMomK,EAAmB,SAAHhyE,GAAmD,IAA7CiyE,EAAOjyE,EAAPiyE,QAAS9rG,EAAU65B,EAAV75B,WAAU+rG,EAAAlyE,EAAEmyE,UAAAA,OAAS,IAAAD,GAAQA,EACvE,OACEj1J,EAACyuD,IAAM,CACL33C,UAAWkyC,IAAU,+BAA+BgsG,EAAWE,GAAa,mBAC5EhqG,MAASkoG,EAAa4B,IAAY,UAAUA,GAAS,eACrD1nH,QAAS6nH,EAAqBz6H,U,EAAWs6H,EAAS9rG,IAEjD1E,IAAAA,WAAekH,MAAM,iCAAiCspG,GAG7D,EAEaG,EAAuB,SAACH,EAAS9rG,GAC5C,IAAMrc,EAAUlgD,EAAKu8D,GACf8yF,EAASqW,EAAS2C,GAExB,GAAsB,mBAAXhZ,EACT,OAAOA,EAAOnvG,GAGhB,IAIMuoH,EAAe,iCAFT/pK,EAAE0B,QAAQG,SAAW,EAAIA,KAE6B,WADrD7B,EAAE0B,QAAQ6M,QAAU,EAAIA,KAC2C,2CAEhF,IAAK,IAAMy7J,KAAWxoH,EACpBA,EAAQwoH,GAAWt1H,mBAAmB8M,EAAQwoH,IAGhDtoK,OAAOw5C,KAAK2tH,EAAKlY,EAAQnvG,GAAU2X,IAAAA,MAAW4wG,EAChD,EAEaE,EAAoB,SAACpsG,EAAYgsG,GAK5C,IAJA,IAI8BV,EAJxBxiJ,EAAO,IAAIy1C,KACX4qG,EAAW7tG,IAAAA,MAAU4J,UAAU,6BAC/BmnG,EAAM/wG,IAAAA,MAAU4J,UAAU,4BAEhCqmG,E,0sBAAAC,CAAsBrC,KAAQmC,EAAAC,KAAAjjJ,MAAE,KAArBwjJ,EAAOR,EAAAziK,OAEA,WAAZijK,GAA2C,MAAlBpoF,UAAU4oF,UAAV5oF,UAAU4oF,SAAW7oK,EAAKu8D,MAEvDl3C,EAAKlO,IAAIkxJ,EAASD,EAAiB,CAAEC,QAAAA,EAAS9rG,WAAAA,EAAYgsG,UAAAA,IAC5D,CAMA,OAJIljJ,EAAK0O,IAAI60I,IACXvjJ,EAAK41C,YAAY2tG,EAAK,KAGjBvjJ,CACT,EClDqByjJ,EAAU,SAAAx0C,GAAA,SAAAw0C,IAAA,OAAAx0C,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAA4wG,EAAAx0C,GAAA,IAAA7J,EAAAq+C,EAAA9qK,UAmE5B,OAnE4BysH,EAC7B7pE,OAAA,SAAO+d,GACL21D,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAugE,GAEbtgE,KAAKqnK,SAAWrnK,KAAK0qB,MAAM28I,SAC3BrnK,KAAKk+D,WAAal+D,KAAK0qB,MAAMwzC,UAC/B,EAACkuD,EAEDtgG,UAAA,WACE,MAAO,kCACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAekH,MAAM,qCAC9B,EAAC0rD,EAEDh2F,QAAA,WACE,OACEphB,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,uBACb9W,EAAA,OAAK8W,UAAU,cAAc9rB,KAAK0qK,aAAaznJ,YAIvD,EAACmpG,EAEDs+C,WAAA,WACE,IAAM/sG,EAAQ2sG,EAAkBtqK,KAAKk+D,YAAY,GAmBjD,OAlBkB1E,IAAAA,MAAU4J,UAAU,gCAGpCzF,EAAM7kD,IACJ,aACA9D,EAAA,OAAK8W,UAAU,YACb9W,EAAA,SAAO8W,UAAU,cAAc9mB,KAAK,OAAO+B,MAAO/G,KAAKk+D,WAAWoqG,aAClEtzJ,EAACyuD,IAAM,CACL33C,UAAW,yBACX,aAAY0tC,IAAAA,WAAekH,MAAM,4CACjCpe,QAAStiD,KAAK4W,KAAK84B,KAAK1vC,OAEvBkgE,IAAK,2BAMPvC,CACT,EAACyuD,EAED9pE,QAAA,SAAQ0nH,GACN,OAAO9B,MAAM8B,EACf,EAAC59C,EAEDx1G,KAAA,WACE,IAAM+zJ,EAAW/pK,SAAS4wD,cAAc,mBACxCm5G,EAAS9kJ,SACT8kJ,EAASlmG,kBAAkB,EAAG,OAC9B7jE,SAASyjE,YAAY,QACrBrkE,KAAK4qK,gBACP,EAACx+C,EAEDw+C,eAAA,WACE,IAAMC,EAAajqK,SAAS4wD,cAAc,sBAC1Cq5G,EAAW7sG,UAAU95D,OAAO,WAC5BpB,YAAW,WACT+nK,EAAW7sG,UAAU95D,OAAO,UAC9B,GAAG,IACL,EAACumK,CAAA,CAnE4B,CAAS5hG,KCuBxCrP,IAAAA,aAAiB1gD,IAAI,oBAAoB,WACvC2kE,IAAAA,UAAqB6qF,SAAW5sF,IAAAA,UAAgB,aAEhDj7E,EAAAA,EAAAA,QAAOirE,IAAAA,UAA0B,gBAAgB,SAAU/N,GAAO,IAAAspC,EAAA,KAC1DogE,EAAW7tG,IAAAA,MAAU4J,UAAU,6BAC/BmnG,EAAM/wG,IAAAA,MAAU4J,UAAU,4BAE1B0nG,EAAwB,WAARP,EAChBQ,EAAiBD,IAAmC,MAAlBlpF,UAAU4oF,cAAQ,EAAlB5oF,UAAU4oF,SAAWrC,EAAcnoK,KAAKk+D,cAEhF,IAAIqsG,GAASO,IAAiBC,EAsB5BptG,EAAM7kD,IACJ,eACA9D,EAACyuD,IAAM,CACLovD,MAAM,mCACN3yD,KAAK,mBACL5d,QAAS,kBACPkX,IAAAA,MAAU9sD,KAAK+9J,EAAY,CACzBpD,SAAAA,EACAnpG,WAAY+oC,EAAK/oC,YACjB,GAGH1E,IAAAA,WAAekH,MAAM,oDAEvB,OApC0C,CAC7C,IAAM15C,EAAOsjJ,EAAkBtqK,KAAKk+D,YAOpC,GAJI4sG,IACF9jJ,EAAKzK,IAAI,UAAU+Y,SAAWkkC,IAAAA,WAAekH,MAAM,mDAGjD15C,EAAKq/B,UAAW,OAEpBsX,EAAM7kD,IACJ,eACA9D,EAACojE,IAAa,CACZlY,KAAK,mBACLU,gBAAgB,gBAChBI,sBAAuBxH,IAAAA,WAAekH,MAAM,qEAC5CQ,UAAU,GAETl6C,EAAK/D,WAGZ,CAkBF,GACF,G;;;;;;;;0BChFA,IAAIiwC,EAAUhU,EAAAA,KAAAA,QACd,SAASkU,IACP,aACA17C,EAAOC,QAAUy7C,EAAsB,WACrC,OAAOz7C,CACT,EAAGD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACb07C,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eACZyvB,EAAiBza,OAAOya,gBAAkB,SAAUnvB,EAAKD,EAAKi5C,GAC5Dh5C,EAAID,GAAOi5C,EAAKh/C,KAClB,EACAusD,EAAU,mBAAqBluC,OAASA,OAAS,CAAC,EAClDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAC7C,SAASC,EAAO7mD,EAAKD,EAAK/F,GACxB,OAAO0a,OAAOya,eAAenvB,EAAKD,EAAK,CACrC/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IACR12B,EAAID,EACV,CACA,IACE8mD,EAAO,CAAC,EAAG,GACb,CAAE,MAAO5yB,GACP4yB,EAAS,SAAgB7mD,EAAKD,EAAK/F,GACjC,OAAOgG,EAAID,GAAO/F,CACpB,CACF,CACA,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GACpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EACjFC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IACvC,OAAO73B,EAAeg4B,EAAW,UAAW,CAC1CntD,MAAOqtD,EAAiBP,EAAS7mD,EAAM6G,KACrCqgD,CACN,CACA,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CACLlgB,KAAM,SACNkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAEtB,CAAE,MAAO8b,GACP,MAAO,CACLh8B,KAAM,QACNkgB,IAAK8b,EAET,CACF,CACArpB,EAAQ2oB,KAAOA,EACf,IAAIg0B,EAAmB,CAAC,EACxB,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBb,EAAOa,EAAmBlB,GAAgB,WACxC,OAAOvzD,IACT,IACA,IAAIwhB,EAAWC,OAAOC,eACpBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MACjE81B,GAA2BA,IAA4BrB,GAAMxxC,EAAO9hB,KAAK20D,EAAyBnB,KAAoBkB,EAAoBC,GAC1I,IAAIC,EAAKH,EAA2B70D,UAAYs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GACpF,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAAUmgB,GAC5C88B,EAAOj0D,EAAWm3B,GAAQ,SAAU5R,GAClC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC9B,GACF,GACF,CACA,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAI,UAAY+vC,EAAOjwD,KAAM,CAC3B,IAAIypB,EAASwmC,EAAO/vC,IAClBne,EAAQ0nB,EAAO1nB,MACjB,OAAOA,GAAS,UAAYmsD,EAAQnsD,IAAU8a,EAAO9hB,KAAKgH,EAAO,WAAaguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAAUlwB,GAC9HiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EACjC,IAAG,SAAUoK,GACXg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAChC,IAAKm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAAUk+B,GAC7C1mC,EAAO1nB,MAAQouD,EAAWx+B,EAAQlI,EACpC,IAAG,SAAUpK,GACX,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACzC,GACF,CACAA,EAAOq+B,EAAO/vC,IAChB,CACA,IAAIkwC,EACJl5B,EAAel8B,KAAM,UAAW,CAC9B+G,MAAO,SAAe+vB,EAAQ5R,GAC5B,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAAUp+B,EAASC,GACxCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC/B,GACF,CACA,OAAOw+B,EAAkBA,EAAkBA,EAAgBn+B,KAAKo+B,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASjB,EAAiBP,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQ,iBACZ,OAAO,SAAUvB,EAAQ5R,GACvB,GAAI,cAAgBmT,EAAO,MAAM,IAAIxsB,MAAM,gCAC3C,GAAI,cAAgBwsB,EAAO,CACzB,GAAI,UAAYvB,EAAQ,MAAM5R,EAC9B,MAuEG,CACLne,WAAO+L,EACP0T,MAAM,EAxEN,CACA,IAAK3S,EAAQijB,OAASA,EAAQjjB,EAAQqR,IAAMA,IAAO,CACjD,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CACA,GAAI,SAAWzhD,EAAQijB,OAAQjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAAS,GAAI,UAAYrR,EAAQijB,OAAQ,CAC7G,GAAI,mBAAqBuB,EAAO,MAAMA,EAAQ,YAAaxkB,EAAQqR,IACnErR,EAAQ6hD,kBAAkB7hD,EAAQqR,IACpC,KAAO,WAAarR,EAAQijB,QAAUjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KACvEmT,EAAQ,YACR,IAAI48B,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAI,WAAaohD,EAAOjwD,KAAM,CAC5B,GAAIqzB,EAAQxkB,EAAQ2S,KAAO,YAAc,iBAAkByuC,EAAO/vC,MAAQovC,EAAkB,SAC5F,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAElB,CACA,UAAYyuC,EAAOjwD,OAASqzB,EAAQ,YAAaxkB,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAClG,CACF,CACF,CACA,SAASqwC,EAAoBjX,EAAUzqC,GACrC,IAAIm3J,EAAan3J,EAAQijB,OACvBA,EAASwnB,EAASj5B,SAAS2lJ,GAC7B,QAAIl4J,IAAcgkB,EAAQ,OAAOjjB,EAAQyqC,SAAW,KAAM,UAAY0sH,GAAc1sH,EAASj5B,SAAiB,SAAMxR,EAAQijB,OAAS,SAAUjjB,EAAQqR,SAAMpS,EAAWyiD,EAAoBjX,EAAUzqC,GAAU,UAAYA,EAAQijB,SAAW,WAAak0I,IAAen3J,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAAsC4xI,EAAa,aAAc12G,EAClY,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KACzD,GAAI,UAAY+vC,EAAOjwD,KAAM,OAAO6O,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAAKrR,EAAQyqC,SAAW,KAAMgW,EACjH,IAAIsB,EAAOX,EAAO/vC,IAClB,OAAO0wC,EAAOA,EAAKpvC,MAAQ3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAAO8M,EAAQqV,KAAOo1B,EAASwX,QAAS,WAAajiD,EAAQijB,SAAWjjB,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,GAAYe,EAAQyqC,SAAW,KAAMgW,GAAoBsB,GAAQ/hD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAAqCvlB,EAAQyqC,SAAW,KAAMgW,EACrW,CACA,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CACVwQ,OAAQD,EAAK,IAEf,KAAKA,IAASvQ,EAAMyQ,SAAWF,EAAK,IAAK,KAAKA,IAASvQ,EAAM0Q,WAAaH,EAAK,GAAIvQ,EAAM2Q,SAAWJ,EAAK,IAAKh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACrI,CACA,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBAAiBiwD,EAAO/vC,IAAKugC,EAAM8Q,WAAatB,CAChE,CACA,SAASd,EAAQJ,GACf/zD,KAAKq2D,WAAa,CAAC,CACjBJ,OAAQ,SACNlC,EAAYp9C,QAAQo/C,EAAc/1D,MAAOA,KAAKgxB,OAAM,EAC1D,CACA,SAAS4N,EAAO43B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EAAgB,OAAOA,EAAe12D,KAAKy2D,GAC/C,GAAI,mBAAqBA,EAASttC,KAAM,OAAOstC,EAC/C,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EACPiiB,EAAO,SAASA,IACd,OAASjiB,EAAIuvD,EAAS/xD,QAAS,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAAI,OAAOiiB,EAAKniB,MAAQyvD,EAASvvD,GAAIiiB,EAAK1C,MAAO,EAAI0C,EAC9G,OAAOA,EAAKniB,WAAQ+L,EAAWoW,EAAK1C,MAAO,EAAI0C,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMwtC,EAEV,CACA,SAASA,IACP,MAAO,CACL3vD,WAAO+L,EACP0T,MAAM,EAEV,CACA,OAAO+tC,EAAkB50D,UAAY60D,EAA4Bt4B,EAAey4B,EAAI,cAAe,CACjG5tD,MAAOytD,EACPr4B,cAAc,IACZD,EAAes4B,EAA4B,cAAe,CAC5DztD,MAAOwtD,EACPp4B,cAAc,IACZo4B,EAAkBoC,YAAc/C,EAAOY,EAA4Bd,EAAmB,qBAAsB/7C,EAAQi/C,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOjrD,YACjD,QAASkrD,IAASA,IAASvC,GAAqB,uBAAyBuC,EAAKH,aAAeG,EAAKjkD,MACpG,EAAG8E,EAAQo/C,KAAO,SAAUF,GAC1B,OAAOp1C,OAAOixC,eAAiBjxC,OAAOixC,eAAemE,EAAQrC,IAA+BqC,EAAOrK,UAAYgI,EAA4BZ,EAAOiD,EAAQnD,EAAmB,sBAAuBmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAAKkC,CAC5O,EAAGl/C,EAAQq/C,MAAQ,SAAU9xC,GAC3B,MAAO,CACLgwC,QAAShwC,EAEb,EAAG0vC,EAAsBE,EAAcn1D,WAAYi0D,EAAOkB,EAAcn1D,UAAW6zD,GAAqB,WACtG,OAAOxzD,IACT,IAAI2X,EAAQm9C,cAAgBA,EAAen9C,EAAQs/B,MAAQ,SAAU4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxG,IAAWA,IAAgBA,EAAcpV,SACzC,IAAIsX,EAAO,IAAInC,EAAcx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAAcgB,GACxE,OAAOp9C,EAAQi/C,oBAAoB9C,GAAWmD,EAAOA,EAAK/tC,OAAO+N,MAAK,SAAUxI,GAC9E,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC3C,GACF,EAAG0rC,EAAsBD,GAAKf,EAAOe,EAAIjB,EAAmB,aAAcE,EAAOe,EAAIpB,GAAgB,WACnG,OAAOvzD,IACT,IAAI4zD,EAAOe,EAAI,YAAY,WACzB,MAAO,oBACT,IAAIh9C,EAAQuI,KAAO,SAAUhgB,GAC3B,IAAIi3B,EAAS1V,OAAOvhB,GAClBggB,EAAO,GACT,IAAK,IAAIpT,KAAOqqB,EAAQjX,EAAKhL,KAAKpI,GAClC,OAAOoT,EAAKmW,UAAW,SAASnN,IAC9B,KAAOhJ,EAAKzb,QAAS,CACnB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAAQ,OAAOjO,EAAKniB,MAAQ+F,EAAKoc,EAAK1C,MAAO,EAAI0C,CAC9D,CACA,OAAOA,EAAK1C,MAAO,EAAI0C,CACzB,CACF,EAAGvR,EAAQinB,OAASA,EAAQu1B,EAAQx0D,UAAY,CAC9CiM,YAAauoD,EACbnjC,MAAO,SAAekmC,GACpB,GAAIl3D,KAAKw1B,KAAO,EAAGx1B,KAAKkpB,KAAO,EAAGlpB,KAAKw1D,KAAOx1D,KAAKy1D,WAAQ3iD,EAAW9S,KAAKwmB,MAAO,EAAIxmB,KAAKs+C,SAAW,KAAMt+C,KAAK82B,OAAS,OAAQ92B,KAAKklB,SAAMpS,EAAW9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAAiBY,EAAe,IAAK,IAAIrkD,KAAQ7S,KAAM,MAAQ6S,EAAKyyC,OAAO,IAAMzjC,EAAO9hB,KAAKC,KAAM6S,KAAUpD,OAAOoD,EAAK0C,MAAM,MAAQvV,KAAK6S,QAAQC,EACtU,EACAoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EACZ,IAAI2wC,EAAan3D,KAAKq2D,WAAW,GAAGE,WACpC,GAAI,UAAYY,EAAWnyD,KAAM,MAAMmyD,EAAWjyC,IAClD,OAAOllB,KAAKo3D,IACd,EACA1B,kBAAmB,SAA2B2B,GAC5C,GAAIr3D,KAAKwmB,KAAM,MAAM6wC,EACrB,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GACnB,OAAOtC,EAAOjwD,KAAO,QAASiwD,EAAO/vC,IAAMmyC,EAAWxjD,EAAQqV,KAAOouC,EAAKC,IAAW1jD,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,KAAcykD,CAC5I,CACA,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC1BguD,EAASxP,EAAM8Q,WACjB,GAAI,SAAW9Q,EAAMwQ,OAAQ,OAAO3iD,EAAO,OAC3C,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAChCgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAClC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GAC9D,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,MAAO,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OACzD,CACL,IAAKuB,EAAY,MAAM,IAAI5rD,MAAM,0CACjC,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,CACF,CACF,CACF,EACAR,OAAQ,SAAgB3wD,EAAMkgB,GAC5B,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MAAQ3T,EAAO9hB,KAAK0lD,EAAO,eAAiBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CACjG,IAAIuB,EAAejS,EACnB,KACF,CACF,CACAiS,IAAiB,UAAY1yD,GAAQ,aAAeA,IAAS0yD,EAAazB,QAAU/wC,GAAOA,GAAOwyC,EAAavB,aAAeuB,EAAe,MAC7I,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EACvD,OAAOtB,EAAOjwD,KAAOA,EAAMiwD,EAAO/vC,IAAMA,EAAKwyC,GAAgB13D,KAAK82B,OAAS,OAAQ92B,KAAKkpB,KAAOwuC,EAAavB,WAAY7B,GAAoBt0D,KAAKgP,SAASimD,EAC5J,EACAjmD,SAAU,SAAkBimD,EAAQmB,GAClC,GAAI,UAAYnB,EAAOjwD,KAAM,MAAMiwD,EAAO/vC,IAC1C,MAAO,UAAY+vC,EAAOjwD,MAAQ,aAAeiwD,EAAOjwD,KAAOhF,KAAKkpB,KAAO+rC,EAAO/vC,IAAM,WAAa+vC,EAAOjwD,MAAQhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAAKllB,KAAK82B,OAAS,SAAU92B,KAAKkpB,KAAO,OAAS,WAAa+rC,EAAOjwD,MAAQoxD,IAAap2D,KAAKkpB,KAAOktC,GAAW9B,CACtQ,EACAvjB,OAAQ,SAAgBolB,GACtB,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAAY,OAAOn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UAAWE,EAAc7Q,GAAQ6O,CACrH,CACF,EACA,MAAS,SAAgB2B,GACvB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAI,UAAYtB,EAAOjwD,KAAM,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EAChB,CACA,OAAOkS,CACT,CACF,CACA,MAAM,IAAI9rD,MAAM,wBAClB,EACA+rD,cAAe,SAAuBpB,EAAUX,EAAYC,GAC1D,OAAO91D,KAAKs+C,SAAW,CACrBj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GACR,SAAW91D,KAAK82B,SAAW92B,KAAKklB,SAAMpS,GAAYwhD,CACvD,GACC38C,CACL,CACAD,EAAOC,QAAUy7C,EAAqB17C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,iBC/S3G,SAASu7C,EAAQnmD,GAGf,OAAQ2K,EAAOC,QAAUu7C,EAAU,mBAAqB9tC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUtY,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBqY,QAAUrY,EAAInB,cAAgBwZ,QAAUrY,IAAQqY,OAAOzlB,UAAY,gBAAkBoN,CAC1H,EAAG2K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QAAUu7C,EAAQnmD,EAC5F,CACA2K,EAAOC,QAAUu7C,EAASx7C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,uBCP/F,IAAIygD,EAAUlZ,EAAQ,GAARA,GACdxnC,EAAOC,QAAUygD,EAGjB,IACEC,mBAAqBD,CACvB,CAAE,MAAOE,GACmB,iBAAfx4C,WACTA,WAAWu4C,mBAAqBD,EAEhCr4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAE5C,ICbIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU/gD,EAAQA,EAAOC,QAAS6gD,GAG/C9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,qCCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,0BCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,2BCEnCw3D,EAAc,WACjC,SAAAA,EAAYzzH,EAAUhnC,EAAU8qC,QAAa,IAAbA,IAAAA,EAAgB,MAC9Ct7C,KAAKw3C,SAAWA,EAChBx3C,KAAKwQ,SAAWA,EAChBxQ,KAAKs7C,cACHA,GACC,SAACwtB,GAEAtP,IAAAA,OAAW9sD,KAAKo8D,EAClB,EACF9oE,KAAKkrK,SAAW,KAEhBlrK,KAAKgF,KAAOhF,KAAKw3C,SAAS,qBAC5B,CAAC,IAAA40E,EAAA6+C,EAAAtrK,UAkCA,OAlCAysH,EAEDjtE,OAAA,SAAO5+C,GAAS,IAAA0mG,EAAA,KACdjnG,KAAKkrK,SAAWC,WAAWhsH,OAAO5+C,EAAS,CACzC6qK,QAASprK,KAAKw3C,SAAS,kCACvB6zH,MAAS7uJ,OAAOxc,KAAKw3C,SAA0B,iBAAK,OAAS,QAC7DxyC,KAAMhF,KAAKgF,KACX6Q,KAA8C,cAAxC7V,KAAKw3C,SAAS,sBAAwC,YAAc,SAC1EhnC,SAAUxQ,KAAKwQ,SACf,iBAAkB,WAEhB,IAAMs4D,EAAa,CACjB9jE,KAAM,QACNoxB,QAASojC,IAAAA,WAAekH,MAAM,8BAEhCumC,EAAK3rD,cAAcwtB,EACrB,GAEJ,EAACsjD,EAEDk/C,YAAA,WACE,OAAOH,WAAWG,YAAYtrK,KAAKkrK,SACrC,EAAC9+C,EAED3nE,QAAA,WACE,OAAO0mH,WAAW1mH,QAAQzkD,KAAKkrK,SACjC,EAAC9+C,EAEDp7F,MAAA,WACE,OAAOm6I,WAAWn6I,MAAMhxB,KAAKkrK,SAC/B,EAAC9+C,EAEDm/C,YAAA,WACE,MAAqB,cAAdvrK,KAAKgF,IACd,EAACimK,CAAA,CA/CgC,GCFpB,SAASpzG,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCNA,SAASk2E,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KACnB,CAAE,MAAOsd,GAEP,YADAuS,EAAOvS,EAET,CACIuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEvC,uBCbA,MAAM,EAA+Bs2B,OAAOC,KAAK/D,OAAO,iCCKxD,QAAe,WAEX,SAAS+3D,EAAMp/I,GACX,OAAO,SAASyqB,GAEZ,OAAO,IAAI8I,SAAQ,SAAShpB,EAASC,GACjC,IAAIr2B,EAAUK,SAAS0E,cAAc8mB,GACjC1nB,EAAS,OACTJ,EAAO,MAWX,OARA/D,EAAQm7C,OAAS,WACb/kB,EAAQkgB,EACZ,EACAt2C,EAAQo7C,QAAU,WACd/kB,EAAOigB,EACX,EAGQzqB,GACJ,IAAK,SACD7rB,EAAQ02C,OAAQ,EAChB,MACJ,IAAK,OACD12C,EAAQyE,KAAO,WACfzE,EAAQy4J,IAAM,aACd10J,EAAO,OACPI,EAAS,OAIjBnE,EAAQ+D,GAAQuyC,EAChBj2C,SAAS8D,GAAQqP,YAAYxT,EACjC,GACJ,CACJ,CAEA,MAAO,CACH8C,IAAKmoK,EAAM,QACXC,GAAID,EAAM,UACV/gK,IAAK+gK,EAAM,OAElB,CA1CD,GCDA,IAAME,EAAY,eHUwB7nK,EGVxBk0F,GHUwBl0F,EGVxBuvD,IAAAA,MAAG,SAAA0gG,IAAA,OAAA1gG,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,WACfswC,IAAAA,gBAAqB,CAAFzqC,EAAA7F,KAAA,eAAA6F,EAAA4mC,OAAA,wBAAA5mC,EAAA7F,KAAA,EAEjBwa,EAAK+nI,GAAG,iDAAiDjyG,IAAAA,WAAe+uC,YAAW,oBAAmB,OAE5G/uC,IAAAA,iBAAsB,EAAK,wBAAAzqC,EAAAmO,OAAA,GAAA42H,EAAA,IHMpB,WACL,IAAI9mJ,EAAOhN,KACTsZ,EAAO5F,UACT,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GACzB,SAAS0nE,EAAMj6E,GACb+5E,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EAClE,CACA,SAASk6E,EAAOjgD,GACd8/C,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EACnE,CACAggD,OAAMluE,EACR,GACF,GGlBD,kBANiB,OAAAilF,EAAAtkF,MAAA,KAAAC,UAAA,KAQGi4J,EAAS,SAAAlgD,GCXf,IAAwB94D,EAAUC,EDWnB,SAAA+4G,IAAA,OAAAlgD,EAAAh4G,MAAA,KAAAC,YAAA,KCXmBk/C,EDWnB64D,GCXS94D,EDWTg5G,GCVnBhsK,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDQG,IAAAw5D,EAAAu/C,EAAAhsK,UAiC3B,OAjC2BysH,EAC5B7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,EACf,EAACgqE,EAEDznF,KAAA,WACE,OACE3vB,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,gBAGrB,EAACsgG,EAEDjqE,SAAA,SAASC,GAAO,IAAA6kD,EAAA,KAad,GAZAwkB,EAAA9rH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,GAEfspH,IAAez0I,MAAK,WAClB,IAAMqX,EAAW6jC,aAAY,WACvBpwE,OAAO6pK,YACTx5F,cAAc9jC,GACd24D,EAAKv8E,MAAM2N,MAAM8mB,OAAOiD,EAAMqF,IAAI+J,cAAc,iBAEpD,GAAG,IACL,IAG8B,cAA1BxxD,KAAK0qB,MAAM2N,MAAMrzB,KAAsB,CACzC,IAAM42H,EAASx5E,EAAMqF,IAAI+J,cAAc,UAEnCoqE,IACFA,EAAOvrG,UAAY,EAEvB,CACF,EAACs7I,CAAA,CAjC2B,CAAStwG,KEL1BwwG,EAAmB,WAAH,OAFcryG,IAAAA,MAAU4J,UAAU,8BACpB5J,IAAAA,MAAU4J,UAAU,qBAC0B,EAE1E,SAAS,EAAC6hB,IACvBxkF,EAAAA,EAAAA,QAAOwkF,EAAStlF,UAAW,UAAU,WAAY,IAAAsnG,EAAA,KAC1C4kE,MAIL7rK,KAAK4rK,UAAY,IAAIX,EAAezxG,IAAAA,MAAU73D,KAAKuG,YAAY,WACzD++F,EAAK2kE,UAAUL,eAGjBtkE,EAAK/hC,SAAS,sBAElB,IACF,KAEAzkE,EAAAA,EAAAA,QAAOwkF,EAAStlF,UAAW,QAAQ,SAAUgC,GACtCkqK,MAILlqK,EAAK,wBAA0B3B,KAAK4rK,UAAUN,cAChD,KAEA7qK,EAAAA,EAAAA,QAAOwkF,EAAStlF,UAAW,eAAe,SAAU+nE,GAC7CmkG,KAILnkG,EAAO5uD,IACL,YACA6yJ,EAAUjsH,UAAU,CAClBrnB,MAAOr4B,KAAK4rK,aAEb,EAEL,KAGAnrK,EAAAA,EAAAA,QAAOwkF,EAAStlF,UAAW,UAAU,WAC9BksK,KAIL7rK,KAAK4rK,UAAU56I,OACjB,KAEA25E,EAAAA,EAAAA,UAAS1lB,EAAStlF,UAAW,YAAY,SAAUuoC,EAAU4jI,GAC3D,OAAID,KAAsB7rK,KAAK4rK,UAAUL,eAA+B,wBAAdO,GACxD9rK,KAAK0+D,SAAU,OACf1+D,KAAK4rK,UAAUnnH,WAIVvc,GACT,GACF,CChEA,MAAM,EAA+BqvE,OAAOC,KAAK/D,OAAO,qDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6CCS3Cs4D,EAA0B,SAAHh0E,GAQ9B,IAPJ77B,EAAK67B,EAAL77B,MACAl3D,EAAI+yF,EAAJ/yF,KACAgnK,EAAUj0E,EAAVi0E,WAMMr4C,EAAY,WAAH,QAAWn6D,IAAAA,MAAU4J,UAAU,iBAAiBp+D,EAAO,GAEtEvE,EAAAA,EAAAA,QAAOy7D,EAAMv8D,UAAW,UAAU,WAAY,IAAAsnG,EAAA,KACvCztC,IAAAA,MAAU4J,UAAU,6BACpBuwD,MAEL3zH,KAAK4rK,UAAY,IAAIX,EACnBzxG,IAAAA,MAAU73D,KAAKuG,YACf,WACE,GAAI++F,EAAK2kE,UAAUL,cAAe,CAEhC,IAAMt4J,EAAQ,IAAIzP,MAAM,UACxByP,EAAMg5J,uBAAwB,EAC9BhlE,EAAK/hC,SAASjyD,EAChB,CACF,IACA,SAAC61D,GAECm+B,EAAKn/B,SACLm/B,EAAKn+B,WAAaA,CACpB,IAEJ,KAEAroE,EAAAA,EAAAA,QAAOy7D,EAAMv8D,UAAWqsK,GAAY,SAAUrqK,GACvC63D,IAAAA,MAAU4J,UAAU,6BACpBuwD,MAELhyH,EAAK,wBAA0B3B,KAAK4rK,UAAUN,cAChD,KAEA7qK,EAAAA,EAAAA,QAAOy7D,EAAMv8D,UAAW,UAAU,SAAU+nE,GACrClO,IAAAA,MAAU4J,UAAU,6BACpBuwD,KAELjsD,EAAO5uD,IAAI,YAAa9D,EAAC22J,EAAS,CAACtzI,MAAOr4B,KAAK4rK,aAAgB,EACjE,KAEAnrK,EAAAA,EAAAA,QAAOy7D,EAAMv8D,UAAW,WAAW,SAAUyZ,EAAGiL,GACzCm1C,IAAAA,MAAU4J,UAAU,6BACpBuwD,MAEL3zH,KAAK4rK,UAAU56I,QAGF,WAAThsB,IAAqBqf,EAAMgkD,OAAWhkD,EAAMgkD,MAAMjyC,SAAY/R,EAAMgkD,MAAMjyC,QAAQ3xB,SACpF4f,EAAMgkD,MAAMjyC,QAAUojC,IAAAA,WAAekH,MAAM,sCAE/C,KAEAiqC,EAAAA,EAAAA,UAASzuC,EAAMv8D,UAAW,YAAY,SAAUuoC,EAAU3kC,GACxD,OAAIi2D,IAAAA,MAAU4J,UAAU,6BAA+BuwD,KAAe3zH,KAAK4rK,UAAUL,gBAAkBhoK,EAAE0oK,uBAIvG1oK,EAAEmC,iBACF1F,KAAK0+D,SAAU,OACf1+D,KAAK4rK,UAAUnnH,WAIVvc,EAAS3kC,EAClB,GACF,EC3EAi2D,IAAAA,aAAiB1gD,IAAI,iBAAiB,WACpC0gD,IAAAA,iBAAsB,EAEtB0yG,EAAe7+E,KACf6+E,EAAelkG,KD0Ef+jG,EAAwB,CAAE7vG,MAAO0N,IAAqB5kE,KAAM,SAAUgnK,WAAY,kBAClFD,EAAwB,CAAE7vG,MAAO0O,IAAY5lE,KAAM,SAAUgnK,WAAY,gBACzED,EAAwB,CAAE7vG,MAAOgO,IAAallE,KAAM,SAAUgnK,WAAY,cC1E5E;;;;;;;UCXIG,EADA3qJ,ECAAwsB,EACAo+H,E,iBCDJ10J,EAAOC,QAAU,EAAjBD,I,UCOA,IAAI0gD,EAAW,SAAUzgD,GACvB,aAEA,IAEI7E,EAFAugD,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eAEZ6mD,EAA4B,mBAAXluC,OAAwBA,OAAS,CAAC,EACnDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAE/C,SAASC,EAAO7mD,EAAKD,EAAK/F,GAOxB,OANA0a,OAAOya,eAAenvB,EAAKD,EAAK,CAC9B/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IAEL12B,EAAID,EACZ,CACD,IAEE8mD,EAAO,CAAC,EAAG,GACZ,CAAC,MAAO5yB,GACP4yB,EAAS,SAAS7mD,EAAKD,EAAK/F,GAC1B,OAAOgG,EAAID,GAAO/F,CACnB,CACF,CAED,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EAC/EC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IAMzC,OAFAG,EAAUW,QAuMZ,SAA0BhB,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQo6H,EAEZ,OAAO,SAAgB37H,EAAQ5R,GAC7B,GAAImT,IAAUq6H,EACZ,MAAM,IAAI7mJ,MAAM,gCAGlB,GAAIwsB,IAAUs6H,EAAmB,CAC/B,GAAe,UAAX77H,EACF,MAAM5R,EAKR,OAAOwxC,GACR,CAKD,IAHA7iD,EAAQijB,OAASA,EACjBjjB,EAAQqR,IAAMA,EAEP,GAAM,CACX,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACR,CACF,CAED,GAAuB,SAAnBzhD,EAAQijB,OAGVjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAElC,GAAuB,UAAnBrR,EAAQijB,OAAoB,CACrC,GAAIuB,IAAUo6H,EAEZ,MADAp6H,EAAQs6H,EACF9+I,EAAQqR,IAGhBrR,EAAQ6hD,kBAAkB7hD,EAAQqR,IAEnC,KAA6B,WAAnBrR,EAAQijB,QACjBjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KAGnCmT,EAAQq6H,EAER,IAAIz9F,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAoB,WAAhBohD,EAAOjwD,KAAmB,CAO5B,GAJAqzB,EAAQxkB,EAAQ2S,KACZmsI,EACAC,EAEA39F,EAAO/vC,MAAQovC,EACjB,SAGF,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAGjB,CAA0B,UAAhByuC,EAAOjwD,OAChBqzB,EAAQs6H,EAGR9+I,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM+vC,EAAO/vC,IAExB,CACF,CACF,CAnRqBkvC,CAAiBP,EAAS7mD,EAAM6G,GAE7CqgD,CACR,CAaD,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CAAElgB,KAAM,SAAUkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAC5C,CAAC,MAAO8b,GACP,MAAO,CAAEh8B,KAAM,QAASkgB,IAAK8b,EAC9B,CACF,CAlBDrpB,EAAQ2oB,KAAOA,EAoBf,IAAImyH,EAAyB,iBACzBG,EAAyB,iBACzBF,EAAoB,YACpBC,EAAoB,YAIpBr+F,EAAmB,CAAC,EAMxB,SAASL,IAAc,CACvB,SAASM,IAAsB,CAC/B,SAASC,IAA+B,CAIxC,IAAIC,EAAoB,CAAC,EACzBb,EAAOa,EAAmBlB,GAAgB,WACxC,OAAOvzD,IACR,IAED,IAAIwhB,EAAWC,OAAOC,eAClBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MAC/D81B,GACAA,IAA4BrB,GAC5BxxC,EAAO9hB,KAAK20D,EAAyBnB,KAGvCkB,EAAoBC,GAGtB,IAAIC,EAAKH,EAA2B70D,UAClCs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GAYtC,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAASmgB,GAC3C88B,EAAOj0D,EAAWm3B,GAAQ,SAAS5R,GACjC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC7B,GACF,GACF,CA+BD,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAoB,UAAhB+vC,EAAOjwD,KAEJ,CACL,IAAIypB,EAASwmC,EAAO/vC,IAChBne,EAAQ0nB,EAAO1nB,MACnB,OAAIA,GACiB,iBAAVA,GACP8a,EAAO9hB,KAAKgH,EAAO,WACdguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAASlwB,GACtDiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EAChC,IAAE,SAASoK,GACVg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAC/B,IAGIm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAASk+B,GAI9C1mC,EAAO1nB,MAAQouD,EACfx+B,EAAQlI,EACT,IAAE,SAASpK,GAGV,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACxC,GACF,CAzBCA,EAAOq+B,EAAO/vC,IA0BjB,CAED,IAAIkwC,EAgCJp1D,KAAK60D,QA9BL,SAAiB/9B,EAAQ5R,GACvB,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAASp+B,EAASC,GACvCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC9B,GACF,CAED,OAAOw+B,EAaLA,EAAkBA,EAAgBn+B,KAChCo+B,EAGAA,GACEA,GACP,CAKF,CA4GD,SAASE,EAAoBjX,EAAUzqC,GACrC,IAAIijB,EAASwnB,EAASj5B,SAASxR,EAAQijB,QACvC,GAAIA,IAAWhkB,EAAW,CAKxB,GAFAe,EAAQyqC,SAAW,KAEI,UAAnBzqC,EAAQijB,OAAoB,CAE9B,GAAIwnB,EAASj5B,SAAS,YAGpBxR,EAAQijB,OAAS,SACjBjjB,EAAQqR,IAAMpS,EACdyiD,EAAoBjX,EAAUzqC,GAEP,UAAnBA,EAAQijB,QAGV,OAAOw9B,EAIXzgD,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM,IAAIkU,UAChB,iDACH,CAED,OAAOk7B,CACR,CAED,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KAEzD,GAAoB,UAAhB+vC,EAAOjwD,KAIT,OAHA6O,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM+vC,EAAO/vC,IACrBrR,EAAQyqC,SAAW,KACZgW,EAGT,IAAIsB,EAAOX,EAAO/vC,IAElB,OAAM0wC,EAOFA,EAAKpvC,MAGP3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAGpC8M,EAAQqV,KAAOo1B,EAASwX,QAQD,WAAnBjiD,EAAQijB,SACVjjB,EAAQijB,OAAS,OACjBjjB,EAAQqR,IAAMpS,GAUlBe,EAAQyqC,SAAW,KACZgW,GANEsB,GA3BP/hD,EAAQijB,OAAS,QACjBjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAC5BvlB,EAAQyqC,SAAW,KACZgW,EA+BV,CAqBD,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CAAEwQ,OAAQD,EAAK,IAEvB,KAAKA,IACPvQ,EAAMyQ,SAAWF,EAAK,IAGpB,KAAKA,IACPvQ,EAAM0Q,WAAaH,EAAK,GACxBvQ,EAAM2Q,SAAWJ,EAAK,IAGxBh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACtB,CAED,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBACPiwD,EAAO/vC,IACdugC,EAAM8Q,WAAatB,CACpB,CAED,SAASd,EAAQJ,GAIf/zD,KAAKq2D,WAAa,CAAC,CAAEJ,OAAQ,SAC7BlC,EAAYp9C,QAAQo/C,EAAc/1D,MAClCA,KAAKgxB,OAAM,EACZ,CA6BD,SAAS4N,EAAO43B,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EACF,OAAOA,EAAe12D,KAAKy2D,GAG7B,GAA6B,mBAAlBA,EAASttC,KAClB,OAAOstC,EAGT,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EAAGiiB,EAAO,SAASA,IAC1B,OAASjiB,EAAIuvD,EAAS/xD,QACpB,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAGxB,OAFAiiB,EAAKniB,MAAQyvD,EAASvvD,GACtBiiB,EAAK1C,MAAO,EACL0C,EAOX,OAHAA,EAAKniB,MAAQ+L,EACboW,EAAK1C,MAAO,EAEL0C,CACR,EAED,OAAOA,EAAKA,KAAOA,CACpB,CACF,CAGD,MAAO,CAAEA,KAAMwtC,EAChB,CAGD,SAASA,IACP,MAAO,CAAE3vD,MAAO+L,EAAW0T,MAAM,EAClC,CA8MD,OA7mBA+tC,EAAkB50D,UAAY60D,EAC9BZ,EAAOe,EAAI,cAAeH,GAC1BZ,EAAOY,EAA4B,cAAeD,GAClDA,EAAkBoC,YAAc/C,EAC9BY,EACAd,EACA,qBAaF/7C,EAAQi/C,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAOjrD,YAClD,QAAOkrD,IACHA,IAASvC,GAG2B,uBAAnCuC,EAAKH,aAAeG,EAAKjkD,MAE/B,EAED8E,EAAQo/C,KAAO,SAASF,GAQtB,OAPIp1C,OAAOixC,eACTjxC,OAAOixC,eAAemE,EAAQrC,IAE9BqC,EAAOrK,UAAYgI,EACnBZ,EAAOiD,EAAQnD,EAAmB,sBAEpCmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAC1BkC,CACR,EAMDl/C,EAAQq/C,MAAQ,SAAS9xC,GACvB,MAAO,CAAEgwC,QAAShwC,EACnB,EAqED0vC,EAAsBE,EAAcn1D,WACpCi0D,EAAOkB,EAAcn1D,UAAW6zD,GAAqB,WACnD,OAAOxzD,IACR,IACD2X,EAAQm9C,cAAgBA,EAKxBn9C,EAAQs/B,MAAQ,SAAS4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxC,IAAhBA,IAAwBA,EAAcpV,SAE1C,IAAIsX,EAAO,IAAInC,EACbx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAC7BgB,GAGF,OAAOp9C,EAAQi/C,oBAAoB9C,GAC/BmD,EACAA,EAAK/tC,OAAO+N,MAAK,SAASxI,GACxB,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC1C,GACN,EAqKD0rC,EAAsBD,GAEtBf,EAAOe,EAAIjB,EAAmB,aAO9BE,EAAOe,EAAIpB,GAAgB,WACzB,OAAOvzD,IACR,IAED4zD,EAAOe,EAAI,YAAY,WACrB,MAAO,oBACR,IAiCDh9C,EAAQuI,KAAO,SAASiX,GACtB,IAAIjX,EAAO,GACX,IAAK,IAAIpT,KAAOqqB,EACdjX,EAAKhL,KAAKpI,GAMZ,OAJAoT,EAAKmW,UAIE,SAASnN,IACd,KAAOhJ,EAAKzb,QAAQ,CAClB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAGT,OAFAjO,EAAKniB,MAAQ+F,EACboc,EAAK1C,MAAO,EACL0C,CAEV,CAMD,OADAA,EAAK1C,MAAO,EACL0C,CACR,CACF,EAoCDvR,EAAQinB,OAASA,EAMjBu1B,EAAQx0D,UAAY,CAClBiM,YAAauoD,EAEbnjC,MAAO,SAASkmC,GAcd,GAbAl3D,KAAKw1B,KAAO,EACZx1B,KAAKkpB,KAAO,EAGZlpB,KAAKw1D,KAAOx1D,KAAKy1D,MAAQ3iD,EACzB9S,KAAKwmB,MAAO,EACZxmB,KAAKs+C,SAAW,KAEhBt+C,KAAK82B,OAAS,OACd92B,KAAKklB,IAAMpS,EAEX9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAEnBY,EACH,IAAK,IAAIrkD,KAAQ7S,KAEQ,MAAnB6S,EAAKyyC,OAAO,IACZzjC,EAAO9hB,KAAKC,KAAM6S,KACjBpD,OAAOoD,EAAK0C,MAAM,MACrBvV,KAAK6S,GAAQC,EAIpB,EAEDoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EAEZ,IACI2wC,EADYn3D,KAAKq2D,WAAW,GACLE,WAC3B,GAAwB,UAApBY,EAAWnyD,KACb,MAAMmyD,EAAWjyC,IAGnB,OAAOllB,KAAKo3D,IACb,EAED1B,kBAAmB,SAAS2B,GAC1B,GAAIr3D,KAAKwmB,KACP,MAAM6wC,EAGR,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GAYnB,OAXAtC,EAAOjwD,KAAO,QACdiwD,EAAO/vC,IAAMmyC,EACbxjD,EAAQqV,KAAOouC,EAEXC,IAGF1jD,EAAQijB,OAAS,OACjBjjB,EAAQqR,IAAMpS,KAGNykD,CACX,CAED,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GACxBguD,EAASxP,EAAM8Q,WAEnB,GAAqB,SAAjB9Q,EAAMwQ,OAIR,OAAO3iD,EAAO,OAGhB,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAC9BgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAEpC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SACpB,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GACzB,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAC3B,OAAO7iD,EAAOmyC,EAAM0Q,WAGvB,MAAM,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SACpB,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OAG3B,KAAIuB,EAMT,MAAM,IAAI5rD,MAAM,0CALhB,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WACpB,OAAO7iD,EAAOmyC,EAAM0Q,WAKvB,CACF,CACF,CACF,EAEDR,OAAQ,SAAS3wD,EAAMkgB,GACrB,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MACrB3T,EAAO9hB,KAAK0lD,EAAO,eACnBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CAChC,IAAIuB,EAAejS,EACnB,KACD,CACF,CAEGiS,IACU,UAAT1yD,GACS,aAATA,IACD0yD,EAAazB,QAAU/wC,GACvBA,GAAOwyC,EAAavB,aAGtBuB,EAAe,MAGjB,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EAIvD,OAHAtB,EAAOjwD,KAAOA,EACdiwD,EAAO/vC,IAAMA,EAETwyC,GACF13D,KAAK82B,OAAS,OACd92B,KAAKkpB,KAAOwuC,EAAavB,WAClB7B,GAGFt0D,KAAKgP,SAASimD,EACtB,EAEDjmD,SAAU,SAASimD,EAAQmB,GACzB,GAAoB,UAAhBnB,EAAOjwD,KACT,MAAMiwD,EAAO/vC,IAcf,MAXoB,UAAhB+vC,EAAOjwD,MACS,aAAhBiwD,EAAOjwD,KACThF,KAAKkpB,KAAO+rC,EAAO/vC,IACM,WAAhB+vC,EAAOjwD,MAChBhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAC9BllB,KAAK82B,OAAS,SACd92B,KAAKkpB,KAAO,OACa,WAAhB+rC,EAAOjwD,MAAqBoxD,IACrCp2D,KAAKkpB,KAAOktC,GAGP9B,CACR,EAEDvjB,OAAQ,SAASolB,GACf,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAGvB,OAFAn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UACtCE,EAAc7Q,GACP6O,CAEV,CACF,EAED,MAAS,SAAS2B,GAChB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAoB,UAAhBtB,EAAOjwD,KAAkB,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EACf,CACD,OAAOkS,CACR,CACF,CAID,MAAM,IAAI9rD,MAAM,wBACjB,EAED+rD,cAAe,SAASpB,EAAUX,EAAYC,GAa5C,OAZA91D,KAAKs+C,SAAW,CACdj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GAGS,SAAhB91D,KAAK82B,SAGP92B,KAAKklB,IAAMpS,GAGNwhD,CACR,GAOI38C,CAER,CAhtBc,CAqtBb,EAA6BD,EAAOC,QAAU,GAGhD,IACE0gD,mBAAqBD,CACtB,CAAC,MAAOE,GAWmB,iBAAfx4C,WACTA,WAAWu4C,mBAAqBD,EAEhCr4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAE3C,C,GChvBGG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAGpE9gD,EAAOC,OACf,CAGA6gD,EAAoBxjD,EAAI2jD,ECxBxBH,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAO,WACd,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ELNV5wB,EAAWC,OAAOC,eAAkB3U,GAAS0U,OAAOC,eAAe3U,GAASA,GAASA,EAAa,UAQtGyrD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQ/G,KAAK+G,IAChB,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPg4D,GAAah4D,EAAMqrD,WAAY,OAAOrrD,EAC1C,GAAW,GAAPg4D,GAAoC,mBAAfh4D,EAAMkwB,KAAqB,OAAOlwB,CAC5D,CACA,IAAIugD,EAAK7lC,OAAOugB,OAAO,MACvBw2B,EAAoB5gD,EAAE0vC,GACtB,IAAIijH,EAAM,CAAC,EACX4B,EAAiBA,GAAkB,CAAC,KAAM3qJ,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI64B,EAAiB,EAAP0kB,GAAYh4D,EAAyB,iBAAXszC,KAAyB8xH,EAAejrJ,QAAQm5B,GAAUA,EAAU74B,EAAS64B,GACxH54B,OAAO4pH,oBAAoBhxF,GAAS1jC,SAAS7J,GAASy9J,EAAIz9J,GAAO,IAAO/F,EAAM+F,KAI/E,OAFAy9J,EAAI,WAAa,IAAM,EACvB/xG,EAAoB5jD,EAAE0yC,EAAIijH,GACnBjjH,CACR,EMxBAkR,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB3jD,EAAI,CAAC,EAGzB2jD,EAAoBj1D,EAAK8oK,GACjB1sH,QAAQsF,IAAIxjC,OAAOvB,KAAKs4C,EAAoB3jD,GAAG/U,QAAO,CAACwsK,EAAUx/J,KACvE0rD,EAAoB3jD,EAAE/H,GAAKu/J,EAASC,GAC7BA,IACL,KCNJ9zG,EAAoBptD,EAAKihK,GAEjB,SAAW,UAAY,MCH/B7zG,EAAoB1jD,EAAI,WACvB,GAA0B,iBAAfgL,WAAyB,OAAOA,WAC3C,IACC,OAAO9f,MAAQ,IAAI+f,SAAS,cAAb,EAChB,CAAE,MAAOxc,GACR,GAAsB,iBAAXxB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBy2D,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GTA9E4R,EAAa,CAAC,EACdo+H,EAAoB,kBAExB5zG,EAAoBtxD,EAAI,CAAC2vC,EAAKrwB,EAAM1Z,EAAKu/J,KACxC,GAAGr+H,EAAW6I,GAAQ7I,EAAW6I,GAAK3hC,KAAKsR,OAA3C,CACA,IAAI9D,EAAQ6pJ,EACZ,QAAWz5J,IAARhG,EAEF,IADA,IAAIqzB,EAAUv/B,SAASgpB,qBAAqB,UACpC3iB,EAAI,EAAGA,EAAIk5B,EAAQ17B,OAAQwC,IAAK,CACvC,IAAI6D,EAAIq1B,EAAQl5B,GAChB,GAAG6D,EAAE6X,aAAa,QAAUk0B,GAAO/rC,EAAE6X,aAAa,iBAAmBypJ,EAAoBt/J,EAAK,CAAE4V,EAAS5X,EAAG,KAAO,CACpH,CAEG4X,IACH6pJ,GAAa,GACb7pJ,EAAS9hB,SAAS0E,cAAc,WAEzB62C,QAAU,QACjBz5B,EAAO/Z,QAAU,IACb6vD,EAAoBg0G,IACvB9pJ,EAAOE,aAAa,QAAS41C,EAAoBg0G,IAElD9pJ,EAAOE,aAAa,eAAgBwpJ,EAAoBt/J,GAExD4V,EAAON,IAAMy0B,GAEd7I,EAAW6I,GAAO,CAACrwB,GACnB,IAAIimJ,EAAmB,CAACj3I,EAAMviB,KAE7ByP,EAAOi5B,QAAUj5B,EAAOg5B,OAAS,KACjCvuC,aAAaxE,GACb,IAAI+jK,EAAU1+H,EAAW6I,GAIzB,UAHO7I,EAAW6I,GAClBn0B,EAAOna,YAAcma,EAAOna,WAAWC,YAAYka,GACnDgqJ,GAAWA,EAAQ/1J,SAAS9S,GAAQA,EAAGoP,KACpCuiB,EAAM,OAAOA,EAAKviB,EAAM,EAExBtK,EAAU7F,WAAW2pK,EAAiB/8H,KAAK,UAAM58B,EAAW,CAAE9N,KAAM,UAAWrE,OAAQ+hB,IAAW,MACtGA,EAAOi5B,QAAU8wH,EAAiB/8H,KAAK,KAAMhtB,EAAOi5B,SACpDj5B,EAAOg5B,OAAS+wH,EAAiB/8H,KAAK,KAAMhtB,EAAOg5B,QACnD6wH,GAAc3rK,SAASiiB,KAAK9O,YAAY2O,EApCkB,CAoCX,EUvChD81C,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,MCL9D,IAAI4lK,EACAn0G,EAAoB1jD,EAAE83J,gBAAeD,EAAYn0G,EAAoB1jD,EAAEmb,SAAW,IACtF,IAAIrvB,EAAW43D,EAAoB1jD,EAAElU,SACrC,IAAK+rK,GAAa/rK,IACbA,EAASisK,gBACZF,EAAY/rK,EAASisK,cAAczqJ,MAC/BuqJ,GAAW,CACf,IAAIxsI,EAAUv/B,EAASgpB,qBAAqB,UAC5C,GAAGuW,EAAQ17B,OAEV,IADA,IAAIwC,EAAIk5B,EAAQ17B,OAAS,EAClBwC,GAAK,IAAM0lK,GAAWA,EAAYxsI,EAAQl5B,KAAKmb,GAExD,CAID,IAAKuqJ,EAAW,MAAM,IAAI9gK,MAAM,yDAChC8gK,EAAYA,EAAUhpK,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpF60D,EAAoB5tD,EAAI+hK,C,WCbxB,IAAIG,EAAkB,CACrB,IAAK,GAGNt0G,EAAoB3jD,EAAEzM,EAAI,CAACikK,EAASC,KAElC,IAAIS,EAAqBv0G,EAAoB/mD,EAAEq7J,EAAiBT,GAAWS,EAAgBT,QAAWv5J,EACtG,GAA0B,IAAvBi6J,EAGF,GAAGA,EACFT,EAASp3J,KAAK63J,EAAmB,SAEjC,GAAG,EAAM,CAER,IAAIh2I,EAAU,IAAI4oB,SAAQ,CAAChpB,EAASC,IAAYm2I,EAAqBD,EAAgBT,GAAW,CAAC11I,EAASC,KAC1G01I,EAASp3J,KAAK63J,EAAmB,GAAKh2I,GAGtC,IAAI8f,EAAM2hB,EAAoB5tD,EAAI4tD,EAAoBptD,EAAEihK,GAEpDhoJ,EAAQ,IAAIxY,MAgBhB2sD,EAAoBtxD,EAAE2vC,GAfF5jC,IACnB,GAAGulD,EAAoB/mD,EAAEq7J,EAAiBT,KAEf,KAD1BU,EAAqBD,EAAgBT,MACRS,EAAgBT,QAAWv5J,GACrDi6J,GAAoB,CACtB,IAAIC,EAAY/5J,IAAyB,SAAfA,EAAMjO,KAAkB,UAAYiO,EAAMjO,MAChEioK,EAAUh6J,GAASA,EAAMtS,QAAUsS,EAAMtS,OAAOyhB,IACpDiC,EAAMmW,QAAU,iBAAmB6xI,EAAU,cAAgBW,EAAY,KAAOC,EAAU,IAC1F5oJ,EAAMxR,KAAO,iBACbwR,EAAMrf,KAAOgoK,EACb3oJ,EAAMy+B,QAAUmqH,EAChBF,EAAmB,GAAG1oJ,EACvB,CACD,GAEwC,SAAWgoJ,EAASA,EAC9D,CAEF,EAcF,IAAIa,EAAuB,CAACC,EAA4BxrK,KACvD,IAGI82D,EAAU4zG,GAHTe,EAAUC,EAAaj1G,GAAWz2D,EAGhBsF,EAAI,EAC3B,GAAGmmK,EAAS9rH,MAAM33B,GAAgC,IAAxBmjJ,EAAgBnjJ,KAAa,CACtD,IAAI8uC,KAAY40G,EACZ70G,EAAoB/mD,EAAE47J,EAAa50G,KACrCD,EAAoBxjD,EAAEyjD,GAAY40G,EAAY50G,IAG7CL,GAAsBA,EAAQI,EAClC,CAEA,IADG20G,GAA4BA,EAA2BxrK,GACrDsF,EAAImmK,EAAS3oK,OAAQwC,IACzBolK,EAAUe,EAASnmK,GAChBuxD,EAAoB/mD,EAAEq7J,EAAiBT,IAAYS,EAAgBT,IACrES,EAAgBT,GAAS,KAE1BS,EAAgBT,GAAW,CAC5B,EAIGiB,EAAqBtgK,KAAK,8BAAgCA,KAAK,+BAAiC,GACpGsgK,EAAmB32J,QAAQu2J,EAAqBx9H,KAAK,KAAM,IAC3D49H,EAAmBp4J,KAAOg4J,EAAqBx9H,KAAK,KAAM49H,EAAmBp4J,KAAKw6B,KAAK49H,G,kECrFvF,MAAM,EAA+B/1D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,SAAS3yB,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KAClB,CAAC,MAAOsd,GAEP,YADAuS,EAAOvS,EAER,CAEGuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEtC,CAEc,SAASC,EAAkBr9E,GACxC,OAAO,WACL,IAAImJ,EAAOhN,KACPsZ,EAAO5F,UACX,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GAEzB,SAAS0nE,EAAMj6E,GACb+5E,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EACjE,CAED,SAASk6E,EAAOjgD,GACd8/C,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EAClE,CAEDggD,OAAMluE,EACP,GACF,CACF,CClCc,SAAS+kD,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACR,EAEMomD,EAAgBpmD,EAAG7G,EAC3B,C,sBCPD,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aC8MxD,SAAS85D,EAAcC,GACnB,IAAIxoK,EAAOwoK,EAAQ5mK,MAAM,gBAAgB,GACrC6mK,EAASD,EAAQ7pK,QAAQ,UAAW,IAExC,OApKJ,SAAoBwpC,EAAO2B,GACvB3B,EAAQA,GAAS,GAES,iBAD1B2B,EAAaA,GAAc,CAAC,KAExBA,EAAa,CAAE9pC,KAAM8pC,IAEzB,IACI,OAAO,IAAI4+H,KAAKvgI,EAAO2B,EAC1B,CACD,MAAOvrC,GACH,GAAe,cAAXA,EAAEsP,KACF,MAAMtP,EAOV,IALA,IAIIoqK,EAAU,IAJuB,oBAAhBC,YACfA,YAAuC,oBAAlBC,cACrBA,cAA0C,oBAAnBC,eACvBA,eAAiBC,mBAEd9mK,EAAI,EAAGA,EAAIkmC,EAAM1oC,OAAQwC,GAAK,EACnC0mK,EAAQlmI,OAAO0F,EAAMlmC,IAEzB,OAAO0mK,EAAQK,QAAQl/H,EAAW9pC,KACrC,CACJ,CA6IUipK,CAAW,CADPC,EAA0BC,KAAKV,KAChB,CAAEzoK,KAAMA,GACrC,CAoND,SAASkpK,EAA0BjyH,GAK/B,IAJA,IAAIx3C,EAASw3C,EAAOx3C,OAChB2pK,EAAM,IAAIC,YAAY5pK,GACtB8c,EAAM,IAAIm+C,WAAW0uG,GACrBnnK,GAAK,IACAA,EAAIxC,GACT8c,EAAIta,GAAKg1C,EAAOrzB,WAAW3hB,GAE/B,OAAOmnK,CACV,CC9aD,IAAME,EAAU,kBAAOC,EAAAA,EAA6B/0G,IAAAA,MAAU4J,UAAU,iBAA1B,qCAA9B,EAEHorG,EAAW,6BAAG,+FAEvBF,IAFuB,SAIT,iCAJS,sFAMvBh0I,QAAQjW,MAAM,wEAAd,MANuB,iCASlB,MATkB,yDAAH,qDAYXoqJ,EAAmB,6BAAG,+FAE/BH,IAF+B,SAIjB,iCAJiB,sFAM/Bh0I,QAAQjW,MAAM,gFAAd,MAN+B,iCAS1B,MAT0B,yDAAH,qDCPXqqJ,EAAAA,SAAAA,GCRN,IAAwB/7G,EAAUC,E,kDAAAA,E,GAAVD,E,GAC5BhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,G,2BDQzB9mC,UAAA,WACE,MAAO,uCACR,E,EAED3iB,MAAA,WACE,OAAOqwD,IAAAA,WAAekH,MAAM,uCAC7B,E,EAEDne,OAAA,SAAOH,GAAO,WACZ,YAAMG,OAAN,UAAaH,GAEb,IAAMusH,EAAS,IAAIC,WAEnBD,EAAO/iJ,iBAAiB,QAAQ,WAC9B,EAAKkF,MAAQ69I,EAAOlgJ,OACpBzZ,EAAEwqC,QACH,IAEDmvH,EAAOE,cAAc7uK,KAAK0qB,MAAMkG,KACjC,E,EAEDwF,QAAA,WACE,OACE,SAAKtK,UAAU,cACb,SAAKA,UAAU,oBACX9rB,KAAKm1B,OAAS,EAAC,IAAD,CAAkBtf,KAAK,SACtC7V,KAAK8wB,OAAS,SAAK1O,IAAKpiB,KAAK8wB,MAAO,eAAc9wB,KAAKm1B,MAAOumB,OAAQ17C,KAAK8uK,WAAWp/H,KAAK1vC,SAG9F,aAECA,KAAKm1B,OAASn1B,KAAK+uK,SAClB,OAAGjjJ,UAAU,YACV0tC,IAAAA,WAAekH,MAAM,+CAAgD,CACpEsuG,cAAehvK,KAAKivK,SAAW,YAAQ,OAAG3sH,QAAStiD,KAAKgvK,cAAct/H,KAAK1vC,QAC3EkvK,YAAclvK,KAAK+uK,QAAkB,OAAGzsH,QAAStiD,KAAKkvK,YAAYx/H,KAAK1vC,QAA1C,eAKnC,SAAK8rB,UAAU,iBACb,EAAC,IAAD,CAAQA,UAAU,yBAAyB4yC,QAAS1+D,KAAK0+D,QAASpc,QAAStiD,KAAKwqF,OAAO96C,KAAK1vC,MAAOgpB,UAAWhpB,KAAKm1B,OAChHqkC,IAAAA,WAAekH,MAAf,uCAA2D1gE,KAAK+uK,QAAU,cAAgB,UAA1F,YAGH,EAAC,IAAD,CAAQjjJ,UAAU,qCAAqCo0C,KAAK,eAAe5d,QAAStiD,KAAK2M,KAAK+iC,KAAK1vC,SAI1G,E,EAEK8uK,WAAAA,W,kBAAN,WAAiBzyH,GAAjB,wFAGQ17C,EAAS07C,EAAI17C,QAAU07C,EAAIgE,KAAK,GAHxC,SAKwBmuH,IALxB,QAKQW,EALR,UAQInvK,KAAK8oE,WAAa,CAChB9jE,KAAM,QACNoxB,QAASojC,IAAAA,WAAekH,MAAM,qEAIlC59D,YAAW,WACT,EAAKqyB,OAAQ,EAETg6I,IACF,EAAKJ,QAAU,IAAII,EAAQxuK,EAAQ,CACjCyuK,YAAa,EACbC,SAAU,EACVC,QAAQ,EACRhjH,YAAY,EACZijH,YAAY,KAIhBv6J,EAAEwqC,QACH,GAAE,KA5BL,gD,mDAAMsvH,G,EA+BN5sH,eAAA,SAAeE,GACb,IAAMphB,EAAMohB,EAAM13B,MAAMrG,MAEpB2c,IACFhhC,KAAK0+D,SAAU,EAEV19B,EAAIqnC,aAMAroE,KAAK8oE,WALZ9oE,KAAK8oE,WAAa,CAChB9jE,KAAM,QACNoxB,SAAS,MAAA4K,EAAIu4F,oBAAJ,EAAAv4F,EAAIu4F,mBAAsBv4F,UAMhCohB,EAAM13B,MAAMrG,aACZm1C,IAAAA,MAAU0C,MAAMxxC,MAAMrG,OAG/B,YAAM69B,eAAN,UAAqBE,EACtB,E,EAED4sH,cAAA,WACEhvK,KAAKivK,UAAW,EAChBj6J,EAAEwqC,QACH,E,EAED0vH,YAAA,WACElvK,KAAK+uK,QAAQ98J,UACbjS,KAAK+uK,QAAU,KACf/5J,EAAEwqC,QACH,E,EAEKgrC,OAAAA,W,kBAAN,+FACMxqF,KAAK0+D,QADX,oDAGE1+D,KAAK0+D,SAAU,EAEV1+D,KAAK+uK,QALZ,yCAMW/uK,KAAKwvK,WAAWjC,EAAcvtK,KAAK8wB,SAN9C,UASQld,EAAS5T,KAAK+uK,QAAQU,oBAExBzvK,KAAKivK,SAXX,6BAYWjvK,KAZX,UAYiCA,KAAK0vK,aAAa97J,GAZnD,kDAYgB47J,WAZhB,0CAegCf,IAfhC,WAeQkB,EAfR,+BAmBI3vK,KAAK8nE,SACL9nE,KAAKgvK,gBApBT,kBAsBWhvK,KAAKwqF,UAtBhB,eAyBMolF,EAAgBh8J,EAzBtB,oBA4BuB5T,KAAK0vK,aAAa97J,GA5BzC,eA4BUi8J,EA5BV,iBA8B0BF,IAAkBG,SAASD,EAAM,CACrD3sK,IAAK,MA/BX,QA8BI0sK,EA9BJ,oEAkCIt1I,QAAQjW,MAAM,uEAAd,MAEArkB,KAAK8oE,WAAa,CAChB9jE,KAAM,QACNoxB,QACa,uBAAX,KAAErsB,KACEyvD,IAAAA,WAAekH,MAAM,2DACrBlH,IAAAA,WAAekH,MAAM,4DAG7B1gE,KAAK8nE,SACL9nE,KAAKkvK,cA7CT,uCAkDSlvK,KAlDT,UAkD+BA,KAAK0vK,aAAaE,GAlDjD,kDAkDcJ,WAlDd,4E,kDAAMhlF,G,EAqDAklF,aAAAA,W,kBAAN,WAAmB97J,GAAnB,2FACS,IAAI+rC,SAAQ,SAAChpB,GAAD,OAAa/iB,EAAOm8J,OAAOp5I,EAA3B,KADrB,2C,mDAAM+4I,G,EAIAF,WAAAA,W,kBAAN,WAAiBK,GAAjB,+EACQj/I,EAAO,IAAI6wI,KAAK,CAACoO,GAAO7vK,KAAK0qB,MAAMkG,KAAK/d,KAAM,CAAE7N,KAAMhF,KAAK0qB,MAAMkG,KAAK5rB,OAD9E,kBAGShF,KAAK0qB,MAAM8/D,OAAO55D,IAH3B,gD,mDAAM4+I,G,EA/Kad,CAA8B7lG,KAA9B6lG,EACZplG,eAAgB,EEHzB9P,IAAAA,aAAiB1gD,IAAI,0BAA0B,YAC7C6xF,EAAAA,EAAAA,UAAS/gB,IAAAA,UAAwB,UAAU,SAAU1hD,EAAUtX,GAC7D,IAAKA,IAAS7uB,OAAO6sK,WAAY,OAAO1mI,IACpCloC,KAAK0+D,SAETlF,IAAAA,MAAU9sD,KAAKgiK,EAAuB,CACpC99I,KAAAA,EACA45D,OAAQtiD,GAEX,KAEDznC,EAAAA,EAAAA,QAAOmpF,IAAAA,UAAwB,WAAW,WACxCpwB,IAAAA,MAAU2C,OACX,KAED17D,EAAAA,EAAAA,QAAOmpF,IAAAA,UAAwB,WAAW,SAACvpD,EAAShc,GAC9Cm1C,IAAAA,OAAaA,IAAAA,MAAU0C,OAAS1C,IAAAA,MAAU0C,MAAMgoB,iBAAmBwqF,IACrEl1G,IAAAA,MAAU0C,MAAMxxC,MAAMrG,MAAQA,EAC9BrP,EAAEwqC,SAEL,GACF,IAEM,IAAMmwE,EAAa,CACxB++C,sBAAAA,E;;;;;;;MC9BF,IAAIl2G,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,4WCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,c,aCmBxD,QATe,CACbu8D,KAAM,EACNC,MAAO,EACPC,KAAM,EAGNC,QAAS,kBAAM32G,IAAAA,MAAU4J,UAAU,gCAAkC,CAAC,GChBlE,EAA+Bm0C,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCApD28D,EAAsC,WAStC,OARAA,EAAW3uJ,OAAOs+B,QAAU,SAAS7nC,GACjC,IAAK,IAAIpN,EAAG7D,EAAI,EAAGgO,EAAIvB,UAAUjP,OAAQwC,EAAIgO,EAAGhO,IAE5C,IAAK,IAAI2D,KADTE,EAAI4I,UAAUzM,GACOwa,OAAO9hB,UAAU8M,eAAe1M,KAAK+K,EAAGF,KACzDsN,EAAEtN,GAAKE,EAAEF,IAEjB,OAAOsN,CACX,EACOk4J,EAAS38J,MAAMzT,KAAM0T,UAChC,EACA,SAAS28J,EAAmBx9J,EAAM9L,GAC9B,IAAKA,EACD,MAAO,GAEX,IAAIupK,EAAc,KAAOz9J,EACzB,OAAc,IAAV9L,EACOupK,EAEJA,EAAc,IAAMvpK,CAC/B,CAgDO,SAAS+U,EAAIjJ,EAAM9L,EAAOmB,GAC7BtH,SAASijF,OApCN,SAAgBhxE,EAAM9L,EAAOmB,GAChC,OAAO6sC,mBAAmBliC,GACrBlP,QAAQ,uBAAwBg+C,oBAChCh+C,QAAQ,MAAO,OAAOA,QAAQ,MAAO,OACpC,IAAMoxC,mBAAmBhuC,GAE1BpD,QAAQ,2CAA4Cg+C,oBAlB7D,SAA6Bz5C,GACzB,GAAkC,iBAAvBA,EAAW66H,QAAsB,CACxC,IAAIA,EAAU,IAAI9oH,KAClB8oH,EAAQwtC,gBAAgBxtC,EAAQ3nH,kBAAyC,MAArBlT,EAAW66H,SAC/D76H,EAAW66H,QAAUA,CACzB,CACA,OAAOstC,EAAmB,UAAWnoK,EAAW66H,QAAU76H,EAAW66H,QAAQ1kH,cAAgB,IACvFgyJ,EAAmB,SAAUnoK,EAAWsoK,QACxCH,EAAmB,OAAQnoK,EAAWm4C,MACtCgwH,EAAmB,SAAUnoK,EAAWuoK,QACxCJ,EAAmB,WAAYnoK,EAAWwoK,SACpD,CAQUC,CAAoBzoK,EAC9B,CA4BsB0oD,CAAO/9C,EAAM9L,EAAOqpK,EAAS,CAAE/vH,KAAM,KAAOn4C,GAClE,CCnEO,IAAM0oK,EAAM,mBAENr0J,EAAM,WACjB,ID2DkB1J,EC3DZ9L,GD2DY8L,EC3DQ+9J,EDoCrB,SAAeC,GAGlB,IAFA,IAAIpiJ,EAAS,CAAC,EAELnJ,EAAK,EAAGwrJ,EADHD,EAAeA,EAAa9kK,MAAM,MAAQ,GAClBuZ,EAAKwrJ,EAAUrsK,OAAQ6gB,IAAM,CAC/D,IACI6nB,EADS2jI,EAAUxrJ,GACJvZ,MAAM,KACrBhF,EAAQomC,EAAM53B,MAAM,GAAG6C,KAAK,KACf,MAAbrR,EAAM,KACNA,EAAQA,EAAMwO,MAAM,GAAI,IAE5B,IAEIkZ,EADakzB,mBAAmBxU,EAAM,KACrBpmC,EAAMpD,QAAQ,mBAAoBg+C,mBACvD,CACA,MAAOp+C,GACH,CAER,CACA,OAAOkrB,CACX,CAEW1U,CAAMnZ,SAASijF,QAGNhxE,IC1DlB,OAAK9L,GAAmB,MAAVA,EAIPyV,OAAOzV,GAHLgqK,EAAOZ,SAIlB,EAEar0J,EAAM,SAAC5b,GAAG,OACrB8wK,EAAYJ,EAAK1wK,EAAK,CACpBwwK,SAAU,MACVD,OAA8B,WAAtBxgJ,SAAS8mB,UACjB,EAESlyC,EAAS,WDmDlBiX,ECnDuC80J,EDmD7B,GAAIR,EAASA,EAAS,CAAC,EADRloK,WACwB,CAAE66H,SAAU,ICnDlB,ECThC,SAASkuC,IAEtB,IAAIC,EAAcxxK,MAAMigB,KAAK,IAAIkwF,IAAIpuF,OAAOmd,OAAOmyI,KAE7CI,EAAQ50J,IAEV9M,MAAM0hK,GACRC,EAAW,8CACDF,EAAYh3G,SAASi3G,IAE/BC,EAAW,uCAEf,CAEA,SAASA,EAAWpsH,GAClB1qB,QAAQC,KAAKyqB,GAEblpC,EAAIi1J,EAAOZ,UACb,CC1Be,SAASkB,IACtB,IAKItqK,EALE+lD,EAAO0M,IAAAA,QAAY1M,KAEnBwkH,GAA4BxkH,KAAUA,EAAK2kC,cAAc8/E,uBACzDC,EAAgB1kH,GAAQA,EAAK2kC,cAAcggF,aAcjD,OAVIH,EAEFvqK,EAAQwV,IAEqB,iBAAlBi1J,IAAiD,IAAnBA,IAEvCzqK,EAAQyqK,GAIY,iBAAVzqK,EAAqBA,EAAQgqK,EAAOZ,SACpD,CCdA,oBACE1vK,EAAAA,EAAAA,QAAOk7D,IAAAA,UAAgB,SAAU+1G,GAKF3vK,OAAOkoG,WAAW,gCAC1Br+E,iBAAiB,SAAU8lJ,EACnD,EAEM,SAASA,IAAW,IAAAlR,EACjB1zG,EAAS0M,IAAAA,QAAT1M,KAEF6kH,EAA4B,OAAnBnR,EAAGhnG,IAAAA,QAAY1M,WAAI,EAAhB0zG,EAAkB/uE,cAAc8/E,uBAE7CzkH,IAAQ6kH,GACXV,IAGEU,GACFV,IAKFW,EAFqBP,IAGvB,CAEO,SAASQ,IACd,MAAO,CACLnrC,IAAKltE,IAAAA,KAAS,4BACds4G,MAAOt4G,IAAAA,KAAS,8BAEpB,CAEO,SAASo4G,EAAevG,GACzBA,IAAU0F,EAAOb,KACnB6B,EAAS,SACA1G,IAAU0F,EAAOd,MAC1B8B,EAAS,OAITA,EAFmBhwK,OAAOkoG,WAAW,gCAAgCjlF,QAE/C,QAAU,MAEpC,CAEO,SAAS+sJ,EAAS/sK,GACvB,IAAMgtK,EAAQpxK,SAAS4wD,cAAc,wCAC/BygH,EAAOrxK,SAAS4wD,cAAc,uCAEpC0gH,EAAiB,GAAIF,GAASC,EAAM,CAClC,GAAIZ,MAAeN,EAAOf,KAAM,MAAMkC,EAEtC,IAAIC,EAAUvxK,SAAS0E,cAAc,QAKjC,WAAY6sK,EAIdA,EAAQz2H,OAAS,WACfs2H,EAAMntK,SACNotK,EAAKptK,QACP,GAGAmtK,EAAMntK,SACNotK,EAAKptK,UAGPstK,EAAQnZ,IAAM,aACdmZ,EAAQrmJ,UAAY,YACpBqmJ,EAAQ/hJ,KAAOyhJ,IAAU7sK,GAEzBpE,SAASiiB,KAAK4kB,OAAO0qI,EACvB,KAAO,CACL,IAAMtqK,EAAKmqK,GAASC,GAAQrxK,SAAS4wD,cAAc,kCAE7C3a,EAAMg7H,IAAU7sK,GAElB6xC,IAAQhvC,EAAGuoB,OACbvoB,EAAGuoB,KAAOymB,EACVhvC,EAAGikB,UAAY,YAEnB,CAEA,IAAMsmJ,EAAcxxK,SAAS4wD,cAAc,6BAEvC4gH,IACFA,EAAYh8I,QAAmB,UAATpxB,EAAmB,OAAS,SAKpD,IAAMiO,EAAQ,IAAIuxD,YAAY,qBAAsB,CAAElgC,OAAQt/B,IAC9DpE,SAAS2jE,cAActxD,EACzB,CC5GA,MAAM,EAA+BskG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCMjD,SAAS4+D,EAAWhH,GACzB,OAAOA,IAAU0F,EAAOd,OAAU5E,IAAU0F,EAAOf,OAASjuK,OAAOkoG,WAAW,gCAAgCjlF,OAChH,CAcO,SAASstJ,IACd,IAbqBj4H,EAafgxH,EAAQgG,IACRkB,EAAUF,EAAWhH,GACrBv+G,EAAO0M,IAAAA,QAAY1M,KAEzB,GAAIA,EAAM,CACR,IAAM5sD,EAAMqyK,EAAUxB,EAAOb,KAAOa,EAAOd,MAE3C,GAAMnjH,EAAK2kC,cAAc8/E,uBAGvB,OAFAiB,EAActyK,QACdwxK,IAIF5kH,EACG2lC,gBAAgB,CACfg/E,aAAcvxK,IAEf+2B,MAAK,WAGJy6I,GACF,GACJ,KAAO,CACL,IAAMe,GApCap4H,EAoCYgxH,KAnCjB0F,EAAOf,KACde,EAAOd,MAGZ51H,IAAY02H,EAAOd,MACdc,EAAOb,KAGTa,EAAOf,KA6BZwC,EAAcC,GACdf,GACF,CACF,CC/BA,IAAMhxG,EAAQ,SAAC5zD,GAAG,OAAK0sD,IAAAA,WAAekH,MAAM,qCAAqC5zD,EAAM,ECZvF0sD,IAAAA,aAAiB1gD,IAAI,iBAAiB,YDepCrY,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,iBAAiB,SAAUt0B,GACxD,IAAQ7Q,EAAS0M,IAAAA,QAAT1M,KAEF6kH,IAAc7kH,EAAK2kC,cAAc8/E,uBAEnCI,GACFV,IAGF,IAAMyB,GAAsB3wK,OAAOkoG,WAAW,8DAA8DjlF,QAExG2tJ,EAAetB,IAEb7wK,EAAU,CAAE,EAAGkgE,EAAM,gBAAiB,EAAGA,EAAM,eAAgB,EAAGA,EAAM,kBAE1EgyG,WACKlyK,EAAQ,GAEXmyK,IAAiB5B,EAAOf,OAC1B2C,EAAen5G,IAAAA,MAAU4J,UAAU,0CAIvCzF,EAAM7kD,IACJ,gBACAs4E,IAAAA,UACE,CACEtwB,MAAOJ,EAAM,WACb50C,UAAW,kBAEb,CACE9W,EAAA,KAAG8W,UAAU,eAAe40C,EAAM,gBAClC1rD,EAAA,KAAG8W,UAAU,eAAe40C,EAAM,iBAClCgyG,EAAqB19J,EAAA,KAAG69G,MAAM,yCAAyCnyD,EAAM,qBAA2B,KACxGywB,IAAAA,UACE,CACErlE,UAAW,gCACXuM,MAAOs5I,EACP54G,SAAU,SAACzoC,GACLA,EAEFkiJ,EAAcG,GAEdH,IAGF1lH,EACG2lC,gBAAgB,CACf8+E,uBAAwBjhJ,IAEzB2G,MAAK,WAGJy6I,GACF,GACJ,GAEFhxG,EAAM,qCAERmzC,IAAAA,UAAiB,CACf9sG,MAAO4rK,EACP7mJ,UAAW,wBACXitC,SAAU,SAACx1D,GACT,GAAIouK,EAIF,OAHAa,EAAcjvK,QAEdmuK,IAIF5kH,EACG2lC,gBAAgB,CACfg/E,aAAcluK,IAEf0zB,MAAK,WACJjiB,EAAEwqC,SAIFkyH,GACF,GACJ,EACAlxK,QAAAA,IAEFwU,EAAA,KAAG8W,UAAU,yCACV6mJ,IAAiB5B,EAAOf,KACrBtvG,EAAM,4BACNiyG,IAAiB5B,EAAOd,MACxBvvG,EAAM,2BACNiyG,IAAiB5B,EAAOb,KACxBxvG,EAAM,6BAENgC,IAAAA,eAKd,KAEAjiE,EAAAA,EAAAA,QAAOkjF,IAAAA,UAA2B,SAAS,SAAUhmB,GACnD,IAAInE,IAAAA,QAAY1M,MAAS0M,IAAAA,MAAU4J,UAAU,8CAA7C,CAEA,IAAMioG,EAAQgG,IACRkB,EAAUF,EAAWhH,GAE3B1tG,EAAM7kD,IACJ,YACA9D,EAACyuD,IAAM,CACL33C,UAAU,sBACVw2B,QAAS,WAKPgwH,GACF,EACApyG,KAAMmrG,IAAU0F,EAAOf,KAAO,gBAAkB,WAAUuC,EAAU,MAAQ,SAE3E/4G,IAAAA,WAAekH,MAAM,gDAExB,GApBgG,CAsBpG,KAEAjgE,EAAAA,EAAAA,QAAO66E,IAAAA,UAA2B,SAAS,SAAU3d,GACnD,GAAKnE,IAAAA,QAAY1M,KAAjB,CAEA,IAAMylH,EAAUF,EAAWhB,KAG3B1zG,EAAM7kD,IACJy5J,EAAU,YAAc,UACxB9uG,IAAAA,UACE,CACEvD,KAAM,WAAUqyG,EAAU,OAAS,OACnCjwH,QAAS,WACPgwH,GAkBF,GAEF94G,IAAAA,WAAekH,MAAM,wBAAuB6xG,EAAU,QAAU,UAEjE,EAjC0B,CAmC/B,IC7KAK,GACF,G;;;;;;;MCVA,IAAIp6G,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,kFCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,ICGnCpxD,EAAI,SAAAg0G,GAAA,SAAAh0G,IAAA,OAAAg0G,EAAA5iJ,MAAA,KAAAC,YAAA,YAAAmmD,EAAAxX,EAAAg0G,GAAAh0G,CAAA,E,MAASixE,GAAM53C,IAAO,CAC7CvyE,MAAOuyE,IAAAA,UAAgB,SACvBxb,KAAMwb,IAAAA,UAAgB,QACtB12E,KAAM02E,IAAAA,UAAgB,QACtB7kC,IAAK6kC,IAAAA,UAAgB,OACrBp5E,SAAUo5E,IAAAA,UAAgB,YAC1Bm3F,WAAYn3F,IAAAA,UAAgB,cAC5Bo3F,SAAUp3F,IAAAA,UAAgB,YAC1Bq3F,SAAUr3F,IAAAA,UAAgB,YAC1B09B,QAAS19B,IAAAA,UAAgB,WACzBh3E,OAAQg3E,IAAAA,OAAa,UACrBnwC,WAAYmwC,IAAAA,UAAgB,iBCd9B,SAASrpB,EAAkB1xD,EAAQiP,GACjC,IAAK,IAAI3I,EAAI,EAAGA,EAAI2I,EAAMnL,OAAQwC,IAAK,CACrC,IAAIqrD,EAAa1iD,EAAM3I,GACvBqrD,EAAW/uB,WAAa+uB,EAAW/uB,aAAc,EACjD+uB,EAAWn2B,cAAe,EACtB,UAAWm2B,IAAYA,EAAW7uB,UAAW,GACjDhiB,OAAOya,eAAev7B,EAAQ2xD,EAAWxlD,IAAKwlD,EAChD,CACF,CCRA,MAAM,EAA+BilD,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aC8BnCu/D,EAAQ,SAAAC,GAAA,SAAAD,IAAA,QAAA/rE,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAEtB,OAFsB2rE,EAAAgsE,EAAAlzK,KAAA0T,MAAAw/J,EAAA,OAAA9yK,OAAAmZ,KAAA,MAE3BoR,WAAK,EAAAu8E,CAAA,CAFsBptC,EAAAm5G,EAAAC,GAC3B,IPrBmCnvK,EAAayuD,EOqBhD65D,EAAA4mD,EAAArzK,UAkIC,OAlIDysH,EAGAznF,KAAA,SAAKyd,GACH,OAAIpiD,KAAKkzK,QAAgBlzK,KAAKmzK,UAAU/wH,GAEjCpiD,KAAKozK,SAAShxH,EACvB,EAACgqE,EAED+mD,UAAA,SAAU/wH,GAA0D,IAAAoqE,EAAA,KAC5DvuC,EAAOj+E,KAAK0qB,MAAMuzD,KAElBo1F,EAAgBrzK,KAAK0qB,MAAM4oJ,WAAa,OAAS7vG,IAEvD,OACEzuD,EAAAu+J,IAAA,KACGvzK,KAAK0qB,MAAM4oJ,YAAct+J,EAACooD,IAAS,MACpCpoD,EAACq+J,EAAa,CACZxgD,MAAO70D,IAAUh+D,KAAI,MAAQ,sBAC7BsiD,QAAS,SAAC/+C,GACJipH,EAAK9hG,MAAM4oJ,YAEb/vK,EAAEoC,iBAEN,EACA,cAAa3F,KAAK0qB,MAAM8oJ,iBAAmB,gBAAa1gK,GAEvD9S,KAAKkgE,KACNlrD,EAAA,QAAM8W,UAAU,qBAAqBmyD,EAAK90E,UAE3CnJ,KAAK0qB,MAAM4oJ,YAAct+J,EAACooD,IAAS,MAG1C,EAACgvD,EAEDgnD,SAAA,SAAShxH,GACP,IAAM67B,EAAOj+E,KAAK0qB,MAAMuzD,KAElBw1F,EAAY,CAChB3nJ,UAAW9rB,KAAI,MACfg5J,IAAKh5J,KAAKg5J,IACVr4J,OAAQX,KAAK0zK,WACbl1G,UAAUyf,EAAK60F,aAAsB70F,EAAK40F,aAC1CziJ,KAAMpwB,KAAK2zK,UAGb,OACE3+J,EAACqtC,IAASoxH,EACPzzK,KAAKkgE,KACNlrD,EAAA,QAAM8W,UAAU,qBAAqBmyD,EAAK90E,SAGhD,EPzEmCrF,EOyElCkvK,GPzE+CzgH,EOyE/C,EAAAzlD,IAAA,aAAAyP,IAED,WACE,IAAM0hE,EAAOj+E,KAAK0qB,MAAMuzD,KAExB,OAAOA,EAAK40F,eAAiB50F,EAAK60F,UACpC,GAAC,CAAAhmK,IAAA,UAAAyP,IAED,WACE,OAAwC,IAAjCvc,KAAK0qB,MAAMuzD,KAAKpnC,MAAMpyC,MAC/B,GAAC,CAAAqI,IAAA,WAAAyP,IAED,WACE,IAAM0hE,EAAOj+E,KAAK0qB,MAAMuzD,KAClBpnC,EAAMonC,EAAKpnC,MAEjB,OAAIA,EAAI2tD,WAAW,MAAQvmB,EAAK40F,aACvBr5G,IAAAA,MAAU4J,UAAU,WAAavsB,EAGnCA,CACT,GAAC,CAAA/pC,IAAA,OAAAyP,IAED,WACE,IACMq3J,EADO5zK,KAAK0qB,MAAMuzD,KACD/d,OAEvB,OAAI0zG,EACK1zG,IAAK0zG,EAAW,CAAE9nJ,UAAW,iCAG/B,IACT,GAAC,CAAAhf,IAAA,MAAAyP,IAED,WAQE,OAAOyhD,IAAUh+D,KAAK0qB,MAAMuzD,KAAK60F,YAAc,sBAAuB9yK,KAAK0qB,MAAMuzD,KAAK80F,YAAc,YAASjgK,CAC/G,GAAC,CAAAhG,IAAA,QAAAyP,IAED,WACE,OAAOyhD,IAAU,cAAeh+D,KAAK0qB,MAAMoB,WAAa,sBAAuB,CAC7E,0BAA2B9rB,KAAK0qB,MAAM4oJ,WACtC58H,OAAQ12C,KAAK6zK,mBAEjB,GAAC,CAAA/mK,IAAA,oBAAAyP,IAED,WAGE,IAFavc,KAAK0qB,MAAMuzD,KAEd40F,aAAc,OAAO,EAE/B,IAAM1hJ,EAAOqoC,IAAAA,MAAU4J,UAAkB,WAInC1iB,EADa,IAAIwuD,IAAIl6F,EAAEwrC,MAAMjkC,OAAS,IAAK4U,GAClBf,KAAKzsB,QAAQwtB,EAAM,IAI5C2iJ,EADU,IAAI5kE,IAAIlvG,KAAK2zK,SAAUxiJ,GACdf,KAAKzsB,QAAQwtB,EAAM,IAI5C,OAAyC,IAAlCuvB,EAAYx/B,QAAQ4yJ,KAAoC,MAAhBpzH,GAAoC,MAAbozH,EACxE,GAAC,CAAAhnK,IAAA,aAAAyP,IAED,WACE,IAAM0hE,EAAOj+E,KAAK0qB,MAAMuzD,KAExB,IAAIj+E,KAAK6yK,WAET,OAAO50F,EAAK60F,WAAa,cAAWhgK,CACtC,MPtJgBu/C,EAAkBvuD,EAAYnE,UAAW4yD,GOsJxDygH,CAAA,CAnI0B,CAAS33F,KC9BvB,SAASvhB,IAetB,OAdAA,EAAWr4C,OAAOs+B,QAAU,SAAUp/C,GACpC,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GAEvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CAEA,OAAOnM,CACT,EAEOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CChBA,MAAM,EAA+B6jG,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAzC,SAASsgE,EAAUvkF,GAChC,OAAOA,EAAMj6E,MAAM,GAAGG,MAAK,SAAChM,EAAGE,GAC7B,IAAM6vG,EAAO/vG,EAAEpH,WACTo3G,EAAO9vG,EAAEtH,WACf,OAAOm3G,EAAOC,EAAO,EAAID,EAAOC,GAAQ,EAAI,CAC9C,GACF,CCEqD,IAChCs6D,EAAY,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAxgK,MAAA,KAAAC,YAAA,KAAAmmD,EAAAm6G,EAAAC,GAAAD,EACxBz4G,UAAP,SAAiB7wC,GACfupJ,EAAM14G,UAASx7D,KAAC,KAAA2qB,GAEhBA,EAAMoB,WAAa,gBACnBpB,EAAMk2C,iBAAmB,eAC3B,EAAC,IAAAwrD,EAAA4nD,EAAAr0K,UA0CA,OA1CAysH,EAEDznF,KAAA,SAAKyd,GACH,IAAM9sB,EAAWt1B,KAAK29D,QAAQ16C,UAE9B,OAAAgxJ,EAAAt0K,UAAaglC,KAAI5kC,KAAC,KAAD+5D,EAAC,CAAC,EAAI1X,EAAO,CAAA9sB,SAAAA,IAChC,EAAC82F,EAEDjrD,UAAA,SAAU7rC,GAIR,IAAMxH,EAAa9tB,KAAKq4E,cAAc/iD,GAItC,OAHAxH,EAAWpD,MAAMoB,UAAYkyC,IAAUlwC,EAAWpD,MAAMoB,UAAW,8BAA+B9rB,KAAK0qB,MAAMk2C,iBAC7G9yC,EAAWpD,MAAM8oJ,kBAAmB,EAE7B,CACL1lJ,EACA9Y,EAAA,UAAQ8W,UAAWkyC,IAAU,kBAAmB,SAAU,eAAgBh+D,KAAK0qB,MAAMk2C,iBAAkB,cAAY,YAChHV,IAAK,oBAAqB,CAAEp0C,UAAW,kBAG9C,EAEAsgG,EAKAzuD,MAAA,WACE,IAAMA,EAAQ,IAAIlB,KACZ/3D,EAAS1E,KAAK0qB,MAAMuzD,KAU1B,OARAtgB,EAAM7kD,IAAI,OAAOpU,EAAOilB,KAAQqpJ,EAAStzH,UAAU,CAAEu+B,KAAMv5E,KAE3DqvK,EAAUv6G,IAAAA,MAAUvU,IAAI,UACrBn+C,QAAO,SAACm3E,GAAI,OAAKA,EAAKv5E,WAAaA,CAAM,IACzCiS,SAAQ,SAAC+rC,GACRib,EAAM7kD,IAAI,OAAOpU,EAAOilB,KAAI,IAAI+4B,EAAM/4B,KAAQqpJ,EAAStzH,UAAU,CAAEu+B,KAAMv7B,EAAO4wH,YAAY,IAC9F,IAEK31G,CACT,EAACq2G,CAAA,CAhD8B,CAAS57F,KCN7Bu3C,EAAa,CACxBqkD,aAAAA,EACAhB,SAAAA,GCHW7iD,EAAQ,CACnB4jD,UAAAA,GCDW/qE,EAAS,CACpB3mD,KAAAA,GCUFmX,IAAAA,aAAiB1gD,IAAI,aAAa,WAChC0gD,IAAAA,MAAUwvC,OAAOxZ,MAAQntC,GAEzB5hD,EAAAA,EAAAA,QAAO26E,IAAAA,UAAyB,SAAS,SAACzd,GAQxCo2G,EAPcv6G,IAAAA,MAAUvU,IAAI,SAASn+C,QAAO,SAACm3E,GAAI,OAAMA,EAAKm7B,SAAS,KAOpDxxG,KAND,SAAClD,GACf,IAAMwvK,EAAc16G,IAAAA,MAAUvU,IAAI,SAAS3D,MAAK,SAAC28B,GAAI,OAAKA,EAAKv5E,UAAYA,CAAM,IAEjFi5D,EAAM7kD,IAAI,OAAOpU,EAAOilB,KAAQuqJ,EAAcF,EAAat0H,UAAU,CAAEu+B,KAAMv5E,IAAYsuK,EAAStzH,UAAU,CAAEu+B,KAAMv5E,IACtH,GAGF,GACF,G;;;;;;;MCzBA,IAAI8zD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCPA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCSnCwhD,EAAW,SAAAC,GCRjB,IAAwBviG,EAAUC,EDQjB,SAAAqiG,IAAA,OAAAC,EAAAzhJ,MAAA,KAAAC,YAAA,KCRiBk/C,EDQjBsiG,GCROviG,EDQPsiG,GCPrBt1J,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDKK,IAAAw5D,EAAA6oC,EAAAt1J,UAwE7B,OAxE6BysH,EAC9B7pE,OAAA,SAAO+d,GACL40F,EAAAv1J,UAAM4iD,OAAMxiD,KAAC,KAAAugE,GAEbtgE,KAAK0+D,SAAU,EAEf1+D,KAAKm0K,aAAe36G,IAAAA,QAAY1M,KAAKqnH,eAErCn0K,KAAKqpF,SAAS7vB,IAAAA,QAAY1M,KAAKtR,YAE/Bx7C,KAAK0+D,SAAU,CACjB,EAAC0tD,EAEDh2F,QAAA,WAAU,IAAA6wE,EAAA,KACR,OAAIjnG,KAAK0+D,QAEL1pD,EAAA,OAAK8W,UAAU,kBACb9W,EAAC0tD,IAAgB,OAKU,IAA7B1iE,KAAKm0K,aAAa1vK,OAElBuQ,EAAA,OAAK8W,UAAU,kBACb9W,EAAC86D,IAAW,CAACv/D,KAAMipD,IAAAA,WAAekH,MAAM,qDAM5C1rD,EAAA,SAAO8W,UAAU,oBACd9rB,KAAKm0K,aAAavsK,KAAI,SAACklD,EAAM7lD,GAS5B,OACE+N,EAAA,UACEA,EAAA,UACEA,EAAA,KAAGob,KAAMopC,IAAAA,MAAU1M,KAAKA,GAAOG,OAAQj4C,EAAEwrC,OACvCxrC,EAAA,UACGypD,IAAO3R,EAAM,CAAEhhC,UAAW,sBAAuB,IAAE0vB,IAASsR,MAInE93C,EAAA,MAAI8W,UAAU,qBACX23C,IAAAA,UACC,CACEvD,KAAM,iBACNl7D,KAAM,SACN8mB,UAAW,yBACXw2B,QAvBK,WACTsqB,QAAQpT,IAAAA,WAAekH,MAAM,iEAC/B5T,EAAKob,KAAK,CAAE7nC,SAAS,IACrB4mE,EAAKktE,aAAapwJ,OAAO9c,EAAG,GAC5BuyD,IAAAA,QAAY1M,KAAKqnH,aAAe/mH,IAAO65C,EAAKktE,cAEhD,EAiB4BzkI,KAAKod,IAEzB0M,IAAAA,WAAekH,MAAM,0DAK/B,IAGN,EAAC0rD,EAED1/G,KAAA,SAAKogD,GACH9sD,KAAK8sD,KAAO0M,IAAAA,QAAY1M,KAExB93C,EAAEwqC,QACJ,EAACy1G,CAAA,CAxE6B,CAAShsE,KELzC,SACE,IAAIwvB,IAAAA,OAAaxN,KAAM7nC,UAAmB,WAAWsZ,QAAc,gBAAgBtZ,UAAmB,iBAEtG,IAAIq1C,IAAAA,SAAgB3/F,IAAI,oBAAqB,gBAAiBm8I,ICChEz7F,IAAAA,aAAiB1gD,IAAI,oBAAoB,YCFvCrY,EAAAA,EAAAA,QAAOoqF,IAAc,gBAAgB,SAAUltB,EAAO7Q,GAChD0M,IAAAA,QAAY1M,OAASA,GAAS0M,IAAAA,QAAY1M,MAASA,EAAKsnH,iBAgBxDtnH,EAAKzsB,UACPs9B,EAAM7kD,IACJ,WACA9D,EAACyuD,IAAM,CAACvD,KAAK,iBAAiB5d,QAflC,WACMsqB,QAAQpT,IAAAA,WAAekH,MAAM,gEAC/B1gE,KAAKkoE,KAAK,CAAE7nC,SAAS,GAEzB,EAWoDqP,KAAKod,IAClD0M,IAAAA,WAAekH,MAAM,0DAI1B/C,EAAM7kD,IACJ,SACA9D,EAACyuD,IAAM,CAACvD,KAAK,uBAAuB5d,QAhBxC,WACMsqB,QAAQpT,IAAAA,WAAekH,MAAM,8DAC/B1gE,KAAKkoE,KAAK,CAAE7nC,SAAS,GAEzB,EAYwDqP,KAAKod,IACtD0M,IAAAA,WAAekH,MAAM,wDAI9B,KChCAjgE,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,gBAAgB,SAAUje,GACtD,IAAMnhB,EAAO9sD,KAAK0qB,MAAMy9C,KAAKrb,OAK7B,OAJgBA,GAAQA,EAAKzsB,YAE3B4tC,EAAaniD,WAAa,iBAErBmiD,CACT,KAEAxtE,EAAAA,EAAAA,QAAOyrF,IAAAA,UAAuB,eAAe,SAAUvuB,GACrD,IAAMwK,EAAOnoE,KAAK0qB,MAAMy9C,MAEpBA,EAAK8D,YAAgB9D,EAAKrb,QAAUqb,EAAKrb,OAAOzsB,WAIpDs9B,EAAM7kD,IACJ,gBACA2qD,IAAAA,UAAiB,CACf33C,UAAW,sCACXo0C,KAAM,oBACN5d,QAAStiD,KAAK0sF,cAAch9C,KAAK1vC,QAGvC,KCxBAS,EAAAA,EAAAA,QAAOwoF,IAAAA,UAAoB,YAAY,SAAUtrB,GAC3CnE,IAAAA,QAAY1M,MAAQ0M,IAAAA,QAAY1M,OAAS9sD,KAAK8sD,MAChD6Q,EAAM7kD,IACJ,gBACA9D,EAACqmE,IAAU,CAACjrD,KAAMopC,IAAAA,MAAU,qBAAsB0G,KAAK,qBACpD1G,IAAAA,WAAekH,MAAM,wCAG9B,KCPAjgE,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAUtf,GAC/C,IAAIyqD,EAEA5oH,KAAK8sD,QAAU9sD,KAAK8sD,OAAOzsB,YAC7BuoF,EAAQvrC,IAAAA,UAAgB,CACtBvc,MAAOtH,IAAAA,WAAekH,MAAM,iDAC5BR,KAAM,oBACNl7D,KAAM,aAIN4jH,GACFzqD,EAAOrlD,IAAI,0BAA2B8vG,EAE1C,KAEAnoH,EAAAA,EAAAA,QAAOwqG,IAAAA,UAAgB,UAAU,SAAU9sC,GACzC,IAAIyqD,EAEA5oH,KAAKqgC,YACPuoF,EAAQvrC,IAAAA,UAAgB,CACtBvc,MAAOtH,IAAAA,WAAekH,MAAM,2CAC5BR,KAAM,oBACNl7D,KAAM,aAIN4jH,GACFzqD,EAAOrlD,IAAI,eAAgB8vG,EAE/B,GJxBF,G;;;;;;;MKZA,IAAIpwD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCOxDh2B,IAAAA,UAAqB42F,UAAY34F,IAAAA,UAAgB,aACjD+B,IAAAA,UAAqB62F,MAAQ54F,IAAAA,UAAgB,SCR7C,MAAM,EAA+B67B,OAAOC,KAAK/D,OAAO,2B,aCMxDh2B,IAAAA,UAAqB42F,UAAY34F,IAAAA,UAAgB,aCDjDliB,IAAAA,aAAiB1gD,IAAI,iBAAiB,YCDpCrY,EAAAA,EAAAA,QAAO0vF,IAAAA,UAA+B,iBAAiB,SAAUlzC,GACtC,UAArBj9C,KAAKi9C,OAAOvnC,OACVunC,EAAOn2C,OAAOkqD,EAChB/T,EAAOn2C,OAAOkqD,GAAK/T,EAAOn2C,OAAOkqD,GAAK,IAAM,eAE5C/T,EAAOn2C,OAAOutK,WAAY,EAGhC,KAEA5zK,EAAAA,EAAAA,QAAO0vF,IAAAA,UAA+B,WAAW,SAAUvoF,GACzDA,EAAI0sK,MAAQ,YACd,KJLA7zK,EAAAA,EAAAA,QAAO0tE,IAAoB,sBAAsB,SAAUxQ,EAAOO,GAChE,IAAIq2G,EAAUr2G,EAAWm2G,YAErBn2G,EAAWo2G,SACb32G,EAAM7kD,IACJ,YACA2qD,IAAAA,UACE,CACEvD,KAAM,cACN5d,QAAS,WACPiyH,GAAWA,EACXr2G,EAAWgK,KAAK,CAAEmsG,UAAWE,GAC/B,GAEF/6G,IAAAA,WAAekH,MACbxC,EAAWm2G,YAAc,kDAAoD,kDAKvF,KEtBA5zK,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAUtf,GAC3Cn+D,KAAKq0K,aACPl2G,EAAOrlD,IACL,YACAukE,IAAAA,UAAgB,CACdr4E,KAAM,YACN87D,MAAOtH,IAAAA,WAAekH,MAAM,sCAC5BR,KAAM,gBAER,GAGN,GCZF,G;;;;;;;6BEToExoD,EAAOC,QAAmI,WAAW,aAAa,IAAUpU,EAAE,IAAI0R,EAAE,KAAK2C,EAAE,cAAc3Q,EAAE,SAAS6D,EAAE,SAASM,EAAE,OAAO1B,EAAE,MAAM+H,EAAE,OAAOoD,EAAE,QAAQkB,EAAE,UAAUpB,EAAE,OAAOC,EAAE,OAAOvU,EAAE,eAAe6G,EAAE,6FAA6F2Q,EAAE,sFAAsFC,EAAE,CAACjF,KAAK,KAAKkF,SAAS,2DAA2DhM,MAAM,KAAKiM,OAAO,wFAAwFjM,MAAM,MAAMiJ,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEO,OAAOD,GAAG,OAAON,GAAGA,EAAEnT,QAAQlB,EAAE2U,EAAE,GAAGxY,MAAM6D,EAAE,EAAEqU,EAAEnT,QAAQ2T,KAAKnD,GAAGiD,CAAC,EAAEpD,EAAE,CAAChK,EAAEkK,EAAEsD,EAAE,SAASJ,GAAG,IAAI3U,GAAG2U,EAAEK,YAAYtD,EAAEhS,KAAKuV,IAAIjV,GAAGqU,EAAE3U,KAAKwV,MAAMxD,EAAE,IAAIhO,EAAEgO,EAAE,GAAG,OAAO1R,GAAG,EAAE,IAAI,KAAKyR,EAAE4C,EAAE,EAAE,KAAK,IAAI5C,EAAE/N,EAAE,EAAE,IAAI,EAAE+N,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,GAAG1R,EAAEmV,OAAOzD,EAAEyD,OAAO,OAAOR,EAAEjD,EAAE1R,GAAG,IAAIqU,EAAE,IAAI3C,EAAE0D,OAAOpV,EAAEoV,SAAS1D,EAAE2D,QAAQrV,EAAEqV,SAAS3R,EAAE1D,EAAEsV,QAAQC,IAAIlB,EAAE/C,GAAG/J,EAAEmK,EAAEhO,EAAE,EAAEmE,EAAE7H,EAAEsV,QAAQC,IAAIlB,GAAG9M,GAAG,EAAE,GAAG+J,GAAG,UAAU+C,GAAG3C,EAAEhO,IAAI6D,EAAE7D,EAAEmE,EAAEA,EAAEnE,KAAK,EAAE,EAAEyC,EAAE,SAASwO,GAAG,OAAOA,EAAE,EAAEjV,KAAK8V,KAAKb,IAAI,EAAEjV,KAAKwV,MAAMP,EAAE,EAAEtN,EAAE,SAASsN,GAAG,MAAM,CAACJ,EAAEjD,EAAEgD,EAAElD,EAAEqE,EAAEvH,EAAEmD,EAAElL,EAAEuP,EAAErE,EAAEmB,EAAE3K,EAAE4J,EAAElK,EAAEA,EAAE7D,EAAEiS,GAAGtB,EAAEuB,EAAEpD,GAAGmC,IAAIC,OAAOD,GAAG,IAAI1R,cAAc7C,QAAQ,KAAK,GAAG,EAAEyH,EAAE,SAAS8M,GAAG,YAAO,IAASA,CAAC,GAAGe,EAAE,KAAKZ,EAAE,CAAC,EAAEA,EAAEY,GAAGnB,EAAE,IAAIlN,EAAE,SAASsN,GAAG,OAAOA,aAAakB,CAAC,EAAEC,EAAE,SAASnB,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAE,IAAIM,EAAE,OAAOe,EAAE,GAAG,iBAAiBf,EAAEG,EAAEH,KAAKN,EAAEM,GAAG3U,IAAI8U,EAAEH,GAAG3U,EAAEqU,EAAEM,OAAO,CAAC,IAAIjR,EAAEiR,EAAErF,KAAKwF,EAAEpR,GAAGiR,EAAEN,EAAE3Q,CAAC,CAAC,OAAOgO,GAAG2C,IAAIqB,EAAErB,GAAGA,IAAI3C,GAAGgE,CAAC,EAAED,EAAE,SAASd,EAAE3U,GAAG,GAAGqH,EAAEsN,GAAG,OAAOA,EAAEW,QAAQ,IAAI5D,EAAE,iBAAiB1R,EAAEA,EAAE,CAAC,EAAE,OAAO0R,EAAEyD,KAAKR,EAAEjD,EAAEqE,KAAK5F,UAAU,IAAI0F,EAAEnE,EAAE,EAAEsE,EAAEzE,EAAEyE,EAAErS,EAAEmS,EAAEE,EAAEtS,EAAE2D,EAAE2O,EAAEP,EAAE,SAASd,EAAE3U,GAAG,OAAOyV,EAAEd,EAAE,CAACsB,OAAOjW,EAAEkW,GAAGC,IAAInW,EAAEoW,GAAGC,EAAErW,EAAEsW,GAAGC,QAAQvW,EAAEuW,SAAS,EAAE,IAAIV,EAAE,WAAW,SAAStB,EAAEI,GAAGlY,KAAKyZ,GAAGJ,EAAEnB,EAAEsB,OAAO,MAAK,GAAIxZ,KAAK+Z,MAAM7B,EAAE,CAAC,IAAIlD,EAAE8C,EAAEnY,UAAU,OAAOqV,EAAE+E,MAAM,SAAS7B,GAAGlY,KAAKga,GAAG,SAAS9B,GAAG,IAAI3U,EAAE2U,EAAEQ,KAAKzD,EAAEiD,EAAEwB,IAAI,GAAG,OAAOnW,EAAE,OAAO,IAAI0W,KAAKC,KAAK,GAAGX,EAAEnO,EAAE7H,GAAG,OAAO,IAAI0W,KAAK,GAAG1W,aAAa0W,KAAK,OAAO,IAAIA,KAAK1W,GAAG,GAAG,iBAAiBA,IAAI,MAAMgB,KAAKhB,GAAG,CAAC,IAAIqU,EAAErU,EAAEqD,MAAMM,GAAG,GAAG0Q,EAAE,CAAC,IAAI3Q,EAAE2Q,EAAE,GAAG,GAAG,EAAE9M,GAAG8M,EAAE,IAAI,KAAKuC,UAAU,EAAE,GAAG,OAAOlF,EAAE,IAAIgF,KAAKA,KAAKG,IAAIxC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,IAAI,IAAImP,KAAKrC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,EAAE,CAAC,CAAC,OAAO,IAAImP,KAAK1W,EAAE,CAA3X,CAA6X2U,GAAGlY,KAAK6Z,GAAG3B,EAAE0B,GAAG,CAAC,EAAE5Z,KAAK8I,MAAM,EAAEkM,EAAElM,KAAK,WAAW,IAAIoP,EAAElY,KAAKga,GAAGha,KAAKqa,GAAGnC,EAAEoC,cAActa,KAAKua,GAAGrC,EAAEsC,WAAWxa,KAAKya,GAAGvC,EAAEwC,UAAU1a,KAAK2a,GAAGzC,EAAE0C,SAAS5a,KAAK6a,GAAG3C,EAAE4C,WAAW9a,KAAK+a,GAAG7C,EAAE8C,aAAahb,KAAKib,GAAG/C,EAAEgD,aAAalb,KAAKmb,IAAIjD,EAAEkD,iBAAiB,EAAEpG,EAAEqG,OAAO,WAAW,OAAO9B,CAAC,EAAEvE,EAAEsG,QAAQ,WAAW,QAAQtb,KAAKga,GAAGuB,aAAalb,EAAE,EAAE2U,EAAEwG,OAAO,SAAStD,EAAE3U,GAAG,IAAI0R,EAAE+D,EAAEd,GAAG,OAAOlY,KAAKyb,QAAQlY,IAAI0R,GAAGA,GAAGjV,KAAK0b,MAAMnY,EAAE,EAAEyR,EAAE2G,QAAQ,SAASzD,EAAE3U,GAAG,OAAOyV,EAAEd,GAAGlY,KAAKyb,QAAQlY,EAAE,EAAEyR,EAAE4G,SAAS,SAAS1D,EAAE3U,GAAG,OAAOvD,KAAK0b,MAAMnY,GAAGyV,EAAEd,EAAE,EAAElD,EAAE6G,GAAG,SAAS3D,EAAE3U,EAAE0R,GAAG,OAAOsE,EAAEnO,EAAE8M,GAAGlY,KAAKuD,GAAGvD,KAAK8b,IAAI7G,EAAEiD,EAAE,EAAElD,EAAE+G,KAAK,WAAW,OAAO9Y,KAAKwV,MAAMzY,KAAKgc,UAAU,IAAI,EAAEhH,EAAEgH,QAAQ,WAAW,OAAOhc,KAAKga,GAAGiC,SAAS,EAAEjH,EAAEyG,QAAQ,SAASvD,EAAE3U,GAAG,IAAI0R,EAAEjV,KAAK4X,IAAI2B,EAAEnO,EAAE7H,IAAIA,EAAEwS,EAAEwD,EAAE3O,EAAEsN,GAAG7X,EAAE,SAAS6X,EAAE3U,GAAG,IAAI0D,EAAEsS,EAAEP,EAAE/D,EAAE0E,GAAGM,KAAKG,IAAInF,EAAEoF,GAAG9W,EAAE2U,GAAG,IAAI+B,KAAKhF,EAAEoF,GAAG9W,EAAE2U,GAAGjD,GAAG,OAAO2C,EAAE3Q,EAAEA,EAAEyU,MAAMhS,EAAE,EAAExC,EAAE,SAASgR,EAAE3U,GAAG,OAAOgW,EAAEP,EAAE/D,EAAEiH,SAAShE,GAAGzE,MAAMwB,EAAEiH,OAAO,MAAMtE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMrC,MAAMhS,IAAI0R,EAAE,EAAE4C,EAAE7X,KAAK2a,GAAG7C,EAAE9X,KAAKua,GAAGvF,EAAEhV,KAAKya,GAAG3F,EAAE,OAAO9U,KAAK2Z,GAAG,MAAM,IAAI,OAAO5D,GAAG,KAAKpB,EAAE,OAAOiD,EAAEvX,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAKwU,EAAE,OAAO+C,EAAEvX,EAAE,EAAEyX,GAAGzX,EAAE,EAAEyX,EAAE,GAAG,KAAKrG,EAAE,IAAIwH,EAAEjZ,KAAKmc,UAAUC,WAAW,EAAE/D,GAAGR,EAAEoB,EAAEpB,EAAE,EAAEA,GAAGoB,EAAE,OAAO5Y,EAAEuX,EAAE5C,EAAEqD,EAAErD,GAAG,EAAEqD,GAAGP,GAAG,KAAKpO,EAAE,KAAKkL,EAAE,OAAO1N,EAAE4N,EAAE,QAAQ,GAAG,KAAK1J,EAAE,OAAOlE,EAAE4N,EAAE,UAAU,GAAG,KAAKhK,EAAE,OAAO5D,EAAE4N,EAAE,UAAU,GAAG,KAAK7N,EAAE,OAAOC,EAAE4N,EAAE,eAAe,GAAG,QAAQ,OAAO9U,KAAK6Y,QAAQ,EAAE7D,EAAE0G,MAAM,SAASxD,GAAG,OAAOlY,KAAKyb,QAAQvD,GAAE,EAAG,EAAElD,EAAEqH,KAAK,SAASnE,EAAE3U,GAAG,IAAI0R,EAAExD,EAAE8H,EAAE3O,EAAEsN,GAAGnC,EAAE,OAAO/V,KAAK2Z,GAAG,MAAM,IAAItZ,GAAG4U,EAAE,CAAC,EAAEA,EAAEvL,GAAGqM,EAAE,OAAOd,EAAEL,GAAGmB,EAAE,OAAOd,EAAEJ,GAAGkB,EAAE,QAAQd,EAAEN,GAAGoB,EAAE,WAAWd,EAAE7J,GAAG2K,EAAE,QAAQd,EAAEnK,GAAGiL,EAAE,UAAUd,EAAEhO,GAAG8O,EAAE,UAAUd,EAAE2C,GAAG7B,EAAE,eAAed,GAAGxD,GAAGvK,EAAEuK,IAAI/H,EAAE1J,KAAKya,IAAIlX,EAAEvD,KAAK2a,IAAIpX,EAAE,GAAGkO,IAAIoD,GAAGpD,IAAIkD,EAAE,CAAC,IAAIkD,EAAE7X,KAAK6Y,QAAQiD,IAAIlH,EAAE,GAAGiD,EAAEmC,GAAG3Z,GAAG6G,GAAG2Q,EAAE/O,OAAO9I,KAAKga,GAAGnC,EAAEiE,IAAIlH,EAAE3R,KAAK4T,IAAI7W,KAAKya,GAAG5C,EAAEyE,gBAAgBtC,EAAE,MAAM3Z,GAAGL,KAAKga,GAAG3Z,GAAG6G,GAAG,OAAOlH,KAAK8I,OAAO9I,IAAI,EAAEgV,EAAE8G,IAAI,SAAS5D,EAAE3U,GAAG,OAAOvD,KAAK6Y,QAAQwD,KAAKnE,EAAE3U,EAAE,EAAEyR,EAAEuH,IAAI,SAASrE,GAAG,OAAOlY,KAAKuZ,EAAE3O,EAAEsN,KAAK,EAAElD,EAAE8D,IAAI,SAASlB,EAAE7B,GAAG,IAAInB,EAAEvU,EAAEL,KAAK4X,EAAE4E,OAAO5E,GAAG,IAAI1Q,EAAEqS,EAAE3O,EAAEmL,GAAG8B,EAAE,SAASK,GAAG,IAAI3U,EAAEyV,EAAE3Y,GAAG,OAAOkZ,EAAEP,EAAEzV,EAAEmV,KAAKnV,EAAEmV,OAAOzV,KAAK4M,MAAMqI,EAAEN,IAAIvX,EAAE,EAAE,GAAG6G,IAAI2N,EAAE,OAAO7U,KAAK8b,IAAIjH,EAAE7U,KAAKua,GAAG3C,GAAG,GAAG1Q,IAAIyN,EAAE,OAAO3U,KAAK8b,IAAInH,EAAE3U,KAAKqa,GAAGzC,GAAG,GAAG1Q,IAAIwC,EAAE,OAAOmO,EAAE,GAAG,GAAG3Q,IAAIuK,EAAE,OAAOoG,EAAE,GAAG,IAAIC,GAAGlD,EAAE,CAAC,EAAEA,EAAE9J,GAAGvH,EAAEqR,EAAExJ,GAAG6J,EAAEL,EAAE3N,GAAtmI,IAA2mI2N,GAAG1N,IAAI,EAAE8N,EAAEhV,KAAKga,GAAGiC,UAAUrE,EAAEE,EAAE,OAAOyB,EAAEP,EAAEhE,EAAEhV,KAAK,EAAEgV,EAAEyH,SAAS,SAASvE,EAAE3U,GAAG,OAAOvD,KAAK8Y,KAAK,EAAEZ,EAAE3U,EAAE,EAAEyR,EAAE0H,OAAO,SAASxE,GAAG,IAAI3U,EAAEvD,KAAK,IAAIA,KAAKsb,UAAU,OAAOjb,EAAE,IAAI4U,EAAEiD,GAAG,uBAAuBN,EAAE2B,EAAEjB,EAAEtY,MAAMiH,EAAEjH,KAAKmc,UAAUrR,EAAE9K,KAAK6a,GAAGzP,EAAEpL,KAAK+a,GAAGrR,EAAE1J,KAAKua,GAAG9I,EAAExK,EAAE8Q,SAASlD,EAAE5N,EAAE+Q,OAAOjC,EAAE,SAASmC,EAAEN,EAAE3Q,EAAE6D,GAAG,OAAOoN,IAAIA,EAAEN,IAAIM,EAAE3U,EAAE0R,KAAKhO,EAAE2Q,GAAG0nD,OAAO,EAAEx0D,EAAE,EAAE6J,EAAE,SAASuD,GAAG,OAAOqB,EAAEzO,EAAEA,EAAE,IAAI,GAAGoN,EAAE,IAAI,EAAEtD,EAAE3N,EAAE2V,UAAU,SAAS1E,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEM,EAAE,GAAG,KAAK,KAAK,OAAOjD,EAAE2C,EAAEpR,cAAcoR,CAAC,EAAE1Q,EAAE,CAAC2V,GAAG1E,OAAOnY,KAAKqa,IAAI9E,OAAO,GAAGuH,KAAK9c,KAAKqa,GAAGvC,EAAEpO,EAAE,EAAEqT,GAAGxD,EAAEzO,EAAEpB,EAAE,EAAE,EAAE,KAAKsT,IAAIjH,EAAE9O,EAAEgW,YAAYvT,EAAEmL,EAAE,GAAGqI,KAAKnH,EAAElB,EAAEnL,GAAGuP,EAAEjZ,KAAKya,GAAG0C,GAAG5D,EAAEzO,EAAE9K,KAAKya,GAAG,EAAE,KAAK7F,EAAEuD,OAAOnY,KAAK2a,IAAIyC,GAAGrH,EAAE9O,EAAEoW,YAAYrd,KAAK2a,GAAGlJ,EAAE,GAAG6L,IAAIvH,EAAE9O,EAAEsW,cAAcvd,KAAK2a,GAAGlJ,EAAE,GAAG+L,KAAK/L,EAAEzR,KAAK2a,IAAI8C,EAAEtF,OAAOrN,GAAG4S,GAAGnE,EAAEzO,EAAEA,EAAE,EAAE,KAAKiL,EAAEpB,EAAE,GAAGgJ,GAAGhJ,EAAE,GAAGjL,EAAEkL,EAAE9J,EAAEM,GAAE,GAAIwS,EAAEhJ,EAAE9J,EAAEM,GAAE,GAAI4J,EAAEmD,OAAO/M,GAAGyS,GAAGtE,EAAEzO,EAAEM,EAAE,EAAE,KAAKN,EAAEqN,OAAOnY,KAAKib,IAAI6C,GAAGvE,EAAEzO,EAAE9K,KAAKib,GAAG,EAAE,KAAK8C,IAAIxE,EAAEzO,EAAE9K,KAAKmb,IAAI,EAAE,KAAK6C,EAAEpG,GAAG,OAAO3C,EAAEtR,QAAQkU,GAAG,SAASK,EAAE3U,GAAG,OAAOA,GAAG2D,EAAEgR,IAAIN,EAAEjU,QAAQ,IAAI,GAAG,GAAG,EAAEqR,EAAEuD,UAAU,WAAW,OAAO,IAAItV,KAAK4M,MAAM7P,KAAKga,GAAGiE,oBAAoB,GAAG,EAAEjJ,EAAEkJ,KAAK,SAAStG,EAAEhD,EAAEvU,GAAG,IAAI6G,EAAE2Q,EAAE0B,EAAE3O,EAAEgK,GAAGkD,EAAEkB,EAAEpB,GAAG5C,GAAG8C,EAAES,YAAYvY,KAAKuY,aAAahV,EAAEuR,EAAE9U,KAAK8X,EAAEmB,EAAEM,EAAEvE,EAAEhV,KAAK8X,GAAG,OAAOmB,GAAG/R,EAAE,CAAC,EAAEA,EAAEyN,GAAGsE,EAAE,GAAG/R,EAAE2N,GAAGoE,EAAE/R,EAAE6O,GAAGkD,EAAE,EAAE/R,EAAEuK,IAAIqD,EAAEE,GAAG,OAAO9N,EAAEwC,IAAIoL,EAAEE,GAAG,MAAM9N,EAAEkE,GAAG0J,EAAEG,EAAE/N,EAAE4D,GAAGgK,EAAEvR,EAAE2D,EAAED,GAAG6N,EAAjzK,IAAqzK5N,GAAG2Q,IAAI/C,EAAEzU,EAAE4Y,EAAEM,EAAE7P,EAAEuP,EAAE,EAAEjE,EAAEsH,YAAY,WAAW,OAAOtc,KAAK0b,MAAM7G,GAAG4F,EAAE,EAAEzF,EAAEmH,QAAQ,WAAW,OAAO9D,EAAErY,KAAKyZ,GAAG,EAAEzE,EAAEwE,OAAO,SAAStB,EAAE3U,GAAG,IAAI2U,EAAE,OAAOlY,KAAKyZ,GAAG,IAAIxE,EAAEjV,KAAK6Y,QAAQjB,EAAEyB,EAAEnB,EAAE3U,GAAE,GAAI,OAAOqU,IAAI3C,EAAEwE,GAAG7B,GAAG3C,CAAC,EAAED,EAAE6D,MAAM,WAAW,OAAOU,EAAEP,EAAEhZ,KAAKga,GAAGha,KAAK,EAAEgV,EAAEkH,OAAO,WAAW,OAAO,IAAIjC,KAAKja,KAAKgc,UAAU,EAAEhH,EAAEmJ,OAAO,WAAW,OAAOne,KAAKsb,UAAUtb,KAAKoe,cAAc,IAAI,EAAEpJ,EAAEoJ,YAAY,WAAW,OAAOpe,KAAKga,GAAGoE,aAAa,EAAEpJ,EAAEuG,SAAS,WAAW,OAAOvb,KAAKga,GAAGqE,aAAa,EAAEvG,CAAC,CAAxvI,GAA4vIlO,EAAEwP,EAAEzZ,UAAU,OAAOqZ,EAAErZ,UAAUiK,EAAE,CAAC,CAAC,MAAMgO,GAAG,CAAC,KAAK3Q,GAAG,CAAC,KAAK6D,GAAG,CAAC,KAAKM,GAAG,CAAC,KAAK1B,GAAG,CAAC,KAAKmL,GAAG,CAAC,KAAKF,GAAG,CAAC,KAAKC,IAAI+B,SAAS,SAASuB,GAAGtO,EAAEsO,EAAE,IAAI,SAAS3U,GAAG,OAAOvD,KAAK6b,GAAGtY,EAAE2U,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAIc,EAAEvY,OAAO,SAASyX,EAAE3U,GAAG,OAAO2U,EAAEqG,KAAKrG,EAAE3U,EAAE6V,EAAEJ,GAAGd,EAAEqG,IAAG,GAAIvF,CAAC,EAAEA,EAAEQ,OAAOH,EAAEL,EAAEwF,QAAQ5T,EAAEoO,EAAE+C,KAAK,SAAS7D,GAAG,OAAOc,EAAE,IAAId,EAAE,EAAEc,EAAEyF,GAAGpG,EAAEY,GAAGD,EAAE0F,GAAGrG,EAAEW,EAAEpO,EAAE,CAAC,EAAEoO,CAAC,CAAxvMzV,E,uBCAnFmU,EAAOC,QAAU4/F,OAAOjK,WAAW,Y,GCC/B/0C,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAGpE9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,uGCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sBCAxD,WAAgB9xG,EAAMiG,GAAG,OAAMlI,MAAMU,QAAQuB,GAAQA,EAAKiG,IAAIA,GAAK8N,OAAS9N,EAAIjG,EAAM,ECe7B,IAEpC6yK,EAAK,SAAAne,GAAA,SAAAme,IAAA,OAAAne,EAAA5iJ,MAAA,KAAAC,YAAA,YAAAmmD,EAAA26G,EAAAne,GAAAme,CAAA,E,MAASlhD,GAAM53C,IAAO,CAC9C5uB,KAAM4uB,IAAAA,OAAa,QACnBtlD,QAASslD,IAAAA,UAAgB,WACzBvyE,MAAOuyE,IAAAA,UAAgB,SACvB+4F,yBAA0B/4F,IAAAA,UAAgB,4BAC1CzT,cAAeyT,IAAAA,UAAgB,iBAC/BzvC,MAAOyvC,IAAAA,UAAgB,SACvBg5F,aAAch5F,IAAAA,UAAgB,eAAgBA,IAAAA,eAC9Ci5F,UAAWj5F,IAAAA,UAAgB,YAAaA,IAAAA,eAExCk5F,oBAAqB,KAErB5vK,KAAI,WACF,IAAMijE,EAAgBjoE,KAAK60K,oBAC3B,OAAI5sG,EAAc/J,WACT,QAEPq5C,OAAOjK,WAAW,cAClBiK,OAAOjK,WAAW,aAAajvB,cAC9B,oBAAqBpW,GAAiB,mBAAoBA,GAEpD,oBAEA,YAEX,EAEA/H,KAAI,WACF,OAAQlgE,KAAKgF,QACX,IAAK,aACH,MAAO,cACT,IAAK,QACH,MAAO,eACT,IAAK,oBAEH,OADmBw0D,IAAAA,MAAAA,KAAAA,WAAAA,qBACc,mBAEvC,EAEAq7G,kBAAiB,SAAC3qH,GAAO,IAAA+8C,EAAA,KACvB,IACG/8C,GACDlqD,KAAK40K,sBACJnzJ,OAAOvB,KAAKlgB,KAAK40K,qBAAqBnwK,OAAS,GACI,IAAjDgd,OAAOvB,KAAKlgB,KAAK40K,qBAAqBnwK,QAA2D,IAA3Cgd,OAAOvB,KAAKlgB,KAAKioE,eAAexjE,QAEzF,OAAOzE,KAAK40K,oBAGd50K,KAAK40K,oBAAsB,CAAC,EAE5B,IAAM3sG,EAAgBjoE,KAAKioE,gBAY3B,GAVIA,GACFxmD,OAAOvB,KAAK+nD,GAAetxD,SAAQ,SAACm+J,GAClC,IAAMh5F,EAAe7T,EAAc6sG,GAE9Bh5F,GAAiBA,EAAan6E,OAEnCslG,EAAK2tE,oBAAoBE,GAAoBC,EAAiBj5F,EAAan6E,MAAM,SAACq6E,GAAK,OAAKxiB,IAAAA,MAAAA,QAAkBwiB,EAAMh3E,KAAMg3E,EAAMryD,GAAG,IACrI,IAGE,mBAAoB3pB,KAAK40K,qBAAuB,oBAAqB50K,KAAK40K,oBAAqB,CACjG,IAAMI,EAAa,IAAIv4G,MAEtBz8D,KAAK40K,oBAAoC,gBAAK,IAAIj+J,SAAQ,SAACm2C,GACtDA,GAAMkoH,EAAWl8J,IAAI,SAAWg0C,EAAKnjC,KAAMmjC,EACjD,KACC9sD,KAAK40K,oBAAqC,iBAAK,IAAIj+J,SAAQ,SAAC8nE,GACvDA,GAAOu2F,EAAWl8J,IAAI,UAAY2lE,EAAM90D,KAAM80D,EACpD,IAEAz+E,KAAK40K,oBAAgC,WAAII,CAC3C,CAEA,OAAOh1K,KAAK40K,mBACd,EAEAK,YAAW,WACT,IAAMtzK,EAAO,CACXgmE,gBAAiB3nE,KAAKo2B,UACtBjtB,MAAOnJ,KAAKmJ,QACZ2jD,KAAM0M,IAAAA,QAAAA,KACN+N,YAAa/N,IAAAA,WAAAA,MAAqB,wCAClC07G,MAAOl1K,KACP0nE,OAAQjmD,OAAOs+B,OAAO,CAAC,EAAG//C,KAAK60K,oBAAqB70K,KAAKisC,UAK3D,OAFAxqB,OAAOs+B,OAAOp+C,EAAMA,EAAK+lE,QAElB/lE,CACT,KC7GF,MAAM,EAA+B41G,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,+BCmBnC0hE,EAAc,SAAA1pD,GAAA,SAAA0pD,IAAA,QAAAluE,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAC+G,OAD/G2rE,EAAAwkB,EAAA1rH,KAAA0T,MAAAg4G,EAAA,OAAAtrH,OAAAmZ,KAAA,MACzB87J,YAAuB57G,IAAAA,MAAAA,UAA6B,sBAAwBA,IAAAA,MAAAA,UAA6B,gCAA+BytC,CAAA,CAD/GptC,EAAAs7G,EAAA1pD,GAC+G,IAAAW,EAAA+oD,EAAAx1K,UA6E/I,OA7E+IysH,EAEhJjqE,SAAA,SAASC,GACPqpE,EAAA9rH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,EACjB,EAACgqE,EAEDznF,KAAA,WACE,IAAA+mF,EAAyB1rH,KAAK0qB,MAAtBwqJ,EAAKxpD,EAALwpD,MAAO78I,EAAKqzF,EAALrzF,MAEXg9I,EAAqB,uBAIzB,OAHIH,EAAMT,2BAA4BY,EAAqB,wBAClDH,EAAMR,iBAAgBW,EAAqB,yBAGlDrgK,EAAA,UACEA,EAAA,KAAGstC,QAASjqB,EAAMi9I,aAAa5lI,KAAKrX,EAAO68I,GAAQppJ,UAAU,4BAE1D2yC,IAAOy2G,EAAMpoH,QAGboT,IAAKg1G,EAAMh1G,OAAQ,CAAEp0C,UAAW,sBAGjC9W,EAAA,QAAM69G,MAAM,sBACV79G,EAAA,QAAM8W,UAAU,wBACbopJ,EAAMR,gBACL1/J,EAACvM,IAAO,CACNy9D,aAAa,EACb31D,KAAMipD,IAAAA,WAAAA,MAAqB,mDAAoD,CAC7EsI,SAAUrI,IAAMy7G,EAAMR,gBAAgBh4J,OACpC88C,IAAAA,WAAAA,MAAqB,8DAA8D,OAItF0G,IAAK,eAAgB,CAAEp0C,UAAW,0BAGrB,UAAjBopJ,EAAMlwK,OAAqBkwK,EAAML,oBAAoB32G,WAAW/0D,QAAU+rK,EAAM/rK,SAEnF6L,EAAA,QAAM69G,MAAM,8BACXzyD,IAAU80G,EAAMP,cAGnB3/J,EAAA,OAAK69G,MAAM,uBAET79G,EAACvM,IAAO,CAACy9D,aAAa,EAAO31D,KAAMipD,IAAAA,WAAAA,MAAqB,4CACtDxkD,EAACyuD,IAAM,CACL,iBAAe,OACfvD,KAAK,mBACLp0C,UAAU,gEACVw2B,QAAS,SAAC/+C,GACR80B,EAAMk9I,YAAYL,GAClB3xK,EAAEoC,iBACJ,KAIH3F,KAAKo1K,YACJpgK,EAACvM,IAAO,CAACy9D,aAAa,EAAO31D,KAAMipD,IAAAA,WAAAA,MAAqB,8CACtDxkD,EAACyuD,IAAM,CACL,iBAAe,OACfvD,KAAMm1G,EACNvpJ,UAAU,kEACVw2B,QAAS,SAAC/+C,GACR80B,EAAMm9I,cAAcN,GACpB3xK,EAAEoC,iBACJ,KAGF,MAGNqP,EAAA,OAAK8W,UAAU,yBAAwB0I,EAAAA,EAAAA,UAAS0gJ,EAAM9+I,UAAW,MAChE8+I,EAAMT,2BAA6Bz/J,EAAA,KAAG8W,UAAU,4BAA4BopJ,EAAMT,4BAAkC,IAI7H,EAACU,CAAA,CA9EgC,CAAS95G,KCDvBo6G,EAAU,SAAAhqD,GAAA,SAAAgqD,IAAA,OAAAhqD,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA47G,EAAAhqD,GAAA,IAAAW,EAAAqpD,EAAA91K,UA6D5B,OA7D4BysH,EAC7BjqE,SAAA,SAASC,GACPqpE,EAAA9rH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,GAEf/hD,EAAE,kBAAkBU,GAAG,aAAa,SAAUkS,GAC5CA,EAAMtN,iBACR,GACF,EAACymH,EAEDhuC,UAAA,WACOxR,QAAQpT,IAAAA,WAAAA,MAAqB,gDAElCA,IAAAA,QACW,CACP1iC,OAAQ,SACR+f,IAAK2iB,IAAAA,MAAAA,UAAoB,UAAY,gBAEtCviC,MAAK,WACJuiC,IAAAA,MAAAA,KAAAA,OAAwB,GACxBxkD,EAAEwqC,QACJ,GACJ,EAAC4sE,EAEDznF,KAAA,WACE,IAAM+wI,EAASl8G,IAAAA,MAAAA,IAAc,UACvBnhC,EAAQr4B,KAAK0qB,MAAM2N,MAEzB,OACErjB,EAAA,OAAK8W,UAAU,+BACb9W,EAAA,OAAK8W,UAAU,2BACb9W,EAAA,MAAI8W,UAAU,2CAA2C0tC,IAAAA,WAAAA,MAAqB,oCAC9ExkD,EAAA,OAAK69G,MAAM,sBACT79G,EAACvM,IAAO,CAACy9D,aAAa,EAAO31D,KAAMipD,IAAAA,WAAAA,MAAqB,gDACtDxkD,EAACyuD,IAAM,CACL,iBAAe,OACfvD,KAAK,mBACLp0C,UAAU,iDACVw2B,QAAStiD,KAAKo+E,UAAU1uC,KAAK1vC,WAKrCgV,EAAA,OAAK8W,UAAU,4BACb9W,EAAA,MAAI8W,UAAU,6BACX4pJ,EAAOjxK,OACJixK,EACGhgK,MAAK,SAAChM,EAAGE,GAAC,OAAKA,EAAE+qK,YAAcjrK,EAAEirK,WAAW,IAC5C/sK,KAAI,SAACstK,GACJ,OAAOlgK,EAACmgK,EAAc,CAACD,MAAOA,EAAO78I,MAAOA,GAC9C,IACF,KAEHA,EAAMqmC,QACL1pD,EAAC0tD,IAAgB,CAACz0D,QAAQ,WAEzBynK,EAAOjxK,QAAUuQ,EAAA,OAAK8W,UAAU,0BAA0B0tC,IAAAA,WAAAA,MAAqB,2CAM5F,EAACi8G,CAAA,CA7D4B,CAASp6G,KCFnBs6G,EAAU,SAAA/mD,GAAA,SAAA+mD,IAAA,OAAA/mD,EAAAn7G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA87G,EAAA/mD,GAAA,IAAAxC,EAAAupD,EAAAh2K,UAiB5B,OAjB4BysH,EAC7B7pE,OAAA,SAAOH,GACLwsE,EAAAjvH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEboX,IAAAA,QAAAA,KAAiB,UAEjBA,IAAAA,OAAAA,OAEAx5D,KAAK47D,UAAY,aACnB,EAACwwD,EAEDznF,KAAA,WACE,OACE3vB,EAAA,OAAK8W,UAAU,cACb9W,EAACygK,EAAU,CAACp9I,MAAOmhC,IAAAA,SAGzB,EAACm8G,CAAA,CAjB4B,CAASh6G,KChBxC,MAAM,EAA+B47C,OAAOC,KAAK/D,OAAO,qC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2C,ICgBnCmiE,EAAc,SAAAje,GAAA,SAAAie,IAAA,OAAAje,EAAAlkJ,MAAA,KAAAC,YAAA,KAAAmmD,EAAA+7G,EAAAje,GAAAie,EAC1Br6G,UAAP,SAAiB7wC,GACfA,EAAMo2C,MAAQp2C,EAAMo2C,OAAStH,IAAAA,WAAAA,MAAqB,qCAClD9uC,EAAMw1C,KAAOx1C,EAAMw1C,MAAQ,cAE3By3F,EAAMp8F,UAASx7D,KAAC,KAAA2qB,EAClB,EAAC,IAAA0hG,EAAAwpD,EAAAj2K,UAwBA,OAxBAysH,EAEDhrD,QAAA,WACE,OACEpsD,EAAA,OAAK8W,UAAW,iBAAmB9rB,KAAK0qB,MAAMm2C,cAAeve,QAAStiD,KAAKu/E,UAAU7vC,KAAK1vC,OACvFA,KAAKg7D,QAAUy6G,EAAW/1H,UAAU,CAAErnB,MAAOr4B,KAAK0qB,MAAM2N,QAAW,GAG1E,EAAC+zF,EAED5sC,UAAA,WACExqE,EAAEwrC,MAAM1kC,IAAI09C,IAAAA,MAAU,UACxB,EAAC4yD,EAED9sC,eAAA,WACE,OAAI9lB,IAAAA,MAAAA,aACKA,IAAAA,MAAAA,IAAc,UAAU/0D,OAG1B+0D,IAAAA,MAAAA,IAAc,UAAU/0D,OAAS+0D,IAAAA,QAAAA,KAAAA,YAC1C,EAAC4yD,EAED/sC,YAAA,WACE,OAAOr/E,KAAKs/E,gBACd,EAACs2F,CAAA,CA9BgC,C,MAASz2F,IChB5C,MAAM,EAA+Bo4B,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,uC,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,kC,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,8B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,2B,eCAxD,MAAM,GAA+B8D,OAAOC,KAAK/D,OAAO,2B,eCMlDoiE,GAAcp8G,QAAQ/8C,OAAO,cAC7Bo5J,GAAcr8G,QAAQ/8C,OAAO,SAEdq5J,GAAkB,SAAA9/C,GAAA,SAAA8/C,IAAA,QAAA9uE,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAMlB,OANkB2rE,EAAAgvB,EAAAl2H,KAAA0T,MAAAwiH,EAAA,OAAA91H,OAAAmZ,KAAA,MACrColD,SAAU,EAAKuoC,EAEfvuF,UAAI,EAAAuuF,EACJt1D,UAAI,EAAAs1D,EAEJ+uE,yBAAmB,EAAA/uE,CAAA,CANkBptC,EAAAk8G,EAAA9/C,GAMlB,IAAA7J,EAAA2pD,EAAAp2K,UAmKlB,OAnKkBysH,EAEnB7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK0Y,KAAO1Y,KAAKi2K,cAAgBx8G,MAAMz5D,KAAK0qB,MAAMwqJ,MAAMR,gBAAgBh4J,OAAO,cAAgBm5J,GAC/F71K,KAAK2xC,KAAO3xC,KAAKi2K,cAAgBx8G,MAAMz5D,KAAK0qB,MAAMwqJ,MAAMR,gBAAgBh4J,OAAO,SAAWo5J,GAE1F91K,KAAKg2K,oBAAsBx8G,IAAAA,WAAAA,MAAqB,yEAAyE,EAC3H,EAAC4yD,EAEDtgG,UAAA,WACE,MAAO,oBACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,8CAC9B,EAAC4yD,EAEDh2F,QAAA,WAAU,IAAAo2F,EAAA,KACR,OAAIxsH,KAAK0+D,QACA1pD,EAAC0tD,IAAgB,MAGnB,CACL1iE,KAAK0qB,MAAMwqJ,MAAMR,eACf1/J,EAAA,OAAK8W,UAAU,eACb9W,EAACwzD,KAAK,CAACxjE,KAAK,UAAUyjE,aAAa,GAChCjP,IAAAA,WAAAA,MAAqB,uDAAwD,CAC5EsI,SAAU9hE,KAAKk2K,wBAKrB,GAEFl2K,KAAK0qB,MAAMwqJ,MAAMT,2BACfz/J,EAAA,OAAK8W,UAAU,eACb9W,EAACwzD,KAAK,CAACxjE,KAAK,QAAQyjE,aAAa,GAC9BjP,IAAAA,WAAAA,MAAqB,wDAAyD,CAC7En1C,MAAOrkB,KAAK0qB,MAAMwqJ,MAAMT,+BAK9B,GAGFz/J,EAAA,SAAOjC,MAAM,kBAEbiC,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,uBACb9W,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAAA,MAAqB,+CAC9CxkD,EAAA,OAAK8W,UAAU,+CACb9W,EAAA,SACEnC,KAAK,mBACLiZ,UAAU,cACV9mB,KAAK,OACL6R,IAAKg/J,GACL9uK,MAAO/G,KAAK0Y,KACZqgD,SAAU,SAACx1D,GAAC,OAAMipH,EAAK9zG,KAAOnV,EAAE5C,OAAOoG,KAAK,IAE9CiO,EAAA,SAAOnC,KAAK,mBAAmBiZ,UAAU,cAAc9mB,KAAK,OAAO+B,MAAO/G,KAAK2xC,KAAMonB,SAAU,SAACx1D,GAAC,OAAMipH,EAAK76E,KAAOpuC,EAAE5C,OAAOoG,KAAK,KAInIiO,EAAA,OAAK69G,MAAM,6CACRr5D,IAAAA,WAAAA,MAAqB,8DAA+D,CACnFsI,SAAU9hE,KAAKk2K,uBAInBlhK,EAAA,OAAK8W,UAAU,+CAEZ9rB,KAAKi2K,eACJjhK,EAACyuD,IAAM,CACL33C,UAAU,uEACV4yC,QAAS1+D,KAAK0+D,QACdpc,QAAStiD,KAAKm2K,WAAWzmI,KAAK1vC,OAE7Bw5D,IAAAA,WAAAA,MAAqB,4DAK1BxkD,EAACyuD,IAAM,CACL33C,UAAU,sEACV9mB,KAAK,SACL05D,QAAS1+D,KAAK0+D,QACd11C,UAAWhpB,KAAK4tD,WAEf5tD,KAAKi2K,cACFz8G,IAAAA,WAAAA,MAAqB,2DACrBA,IAAAA,WAAAA,MAAqB,6DAMrC,EAEA4yD,EAGAsoD,aAAA,WAGE,OAFa,IAAIz6J,KAAQja,KAAK0Y,KAAI,IAAI1Y,KAAK2xC,OAE5B,IACjB,EAEAy6E,EAGAx+D,QAAA,WACE,IAAMwoH,EAAgB,SAAC19J,GAAI,OAAMA,GAAOA,EAAKuD,WAAoB,IAAI,EAErE,OAAOm6J,EAAcp2K,KAAK00K,kBAAoB0B,EAAcp2K,KAAK0qB,MAAMwqJ,MAAMR,eAC/E,EAACtoD,EAED6pD,YAAA,WACE,QAASj2K,KAAK0qB,MAAMwqJ,MAAMR,cAC5B,EAACtoD,EAED8pD,kBAAA,WASE,OARaz8G,MAAMz5D,KAAK00K,gBAMDh4J,OAAO1c,KAAKg2K,oBAGrC,EAAC5pD,EAED+pD,WAAA,SAAW5yK,GAAG,IAAAkrH,EAAA,KACZlrH,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAGXkO,QAAQpT,IAAAA,WAAAA,MAAqB,8DAC/Bx5D,KAAK0qB,MAAMwqJ,MACRhtG,KAAK,CAAEwsG,aAAc,KAAM2B,sBAAsB,EAAM5B,yBAA0B,KACjFx9I,MAAK,WACJw3F,EAAKh1E,SAAU,EACfg1E,EAAK9hH,KAAK5M,KAAK0uH,EACjB,IAAE,OACK,WAAO,IACbx3F,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,MAE7B,EAACosH,EAEDlnD,SAAA,SAAS3hE,GAAG,IAAAmrH,EAAA,KACVnrH,EAAEmC,iBAEF1F,KAAK0+D,SAAU,EAEf1+D,KAAK0qB,MAAMwqJ,MACRhtG,KAAK,CAAEwsG,aAAc10K,KAAK00K,eAAgB2B,sBAAsB,EAAM5B,yBAA0B,KAChGx9I,MAAK,kBAAOy3F,EAAKj1E,SAAU,CAAI,IAAE,OAC3B,WAAO,IACbxiB,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,MAC3B,EAAC+1K,CAAA,CAzKoC,CAASltG,MCJ3BytG,GAAe,WAClC,SAAAA,IAMEt2K,KAAK0+D,SAAU,EAEf1+D,KAAKoqB,MAAQ,EACf,CAAC,IAAAgiG,EAAAkqD,EAAA32K,UAqEA,OArEAysH,EAEDmpD,YAAA,SAAYL,GAAO,IAAAjuE,EAAA,KACZllG,OAAO6qE,QAAQpT,IAAAA,WAAAA,MAAqB,sCAEzCx5D,KAAK0+D,SAAU,EAEfw2G,EAAK,SAAUj+I,MAAK,WACduiC,IAAAA,SAAAA,MAAqBA,IAAAA,SAAAA,OAAsBA,IAAAA,SAAAA,MAAAA,OAA4B07G,EAAMvrJ,OAAS6vC,IAAAA,SAAAA,WACxFA,IAAAA,SAAAA,OAGFytC,EAAKvoC,SAAU,EACf1pD,EAAEwqC,QACJ,IACF,EAAC4sE,EAEDopD,cAAA,SAAcN,GACP17G,IAAAA,MAAAA,UAAoB,sBAAyBA,IAAAA,MAAAA,UAAoB,iCAEtEA,IAAAA,MAAAA,KAAeu8G,GAAoB,CAAEb,MAAAA,GACvC,EAAC9oD,EAEDkpD,aAAA,SAAaJ,GACX,IAAIl1K,KAAK0+D,QAET,OAAO,IAAI/e,SAAQ,SAAChpB,GAClB,IAAIutD,EAEJ,OAAQgxF,EAAMlwK,QACZ,IAAK,oBACHk/E,EAAiBhlC,EAAAA,KAAAA,YAAAA,0BACjB,MACF,IAAK,QACHglC,EAAiBlc,KACjB,MACF,QACEkc,EAAiBmJ,KAGrB,IAAM1rF,EAAOuzK,EAAMD,cAOnB,OANAz7G,IAAAA,SAAAA,KAAkB0qB,EAAgBviF,GAElC63D,IAAAA,SAAAA,OAEA/3C,OAAOs+B,OAAOyZ,IAAAA,SAAAA,OAAqB73D,EAAK+lE,QAEjC/wC,EAAQ6iC,IAAAA,SACjB,GACF,EAAC4yD,EAED1oF,KAAA,WAAO,IAAA8oF,EAAA,KACDhzD,IAAAA,MAAAA,eAIJx5D,KAAK0+D,SAAU,EACf1pD,EAAEwqC,SAEFga,IAAAA,MAAAA,KACQ,UACLviC,MACC,kBAAOuiC,IAAAA,MAAAA,cAAyB,CAAI,IACpC,WAAO,IAERviC,MAAK,WACJu1F,EAAK9tD,SAAU,EACf1pD,EAAEwqC,QACJ,IACJ,EAAC82H,CAAA,CA/EiC,GCJrB,SAASC,GAAUC,EAAMC,GACtC,GAAID,IAASC,EACX,OAAO,EAET,GAAoB,iBAATD,GAAqC,iBAATC,GAA6B,MAARD,GAAwB,MAARC,EAC1E,OAAO,EAET,IAAIC,EAAQj1J,OAAOvB,KAAKs2J,GACpBG,EAAQl1J,OAAOvB,KAAKu2J,GACxB,GAAIC,EAAMjyK,SAAWkyK,EAAMlyK,OACzB,OAAO,EAET,IAAK,IAAL6gB,EAAA,EAAAsxJ,EAAgBF,EAAKpxJ,EAAAsxJ,EAAAnyK,OAAA6gB,IAAE,CAAlB,IAAIxY,EAAG8pK,EAAAtxJ,GACV,IAAKqxJ,EAAMz8G,SAASptD,KAASypK,GAAUC,EAAK1pK,GAAM2pK,EAAK3pK,IACrD,OAAO,CAEX,CACA,OAAO,CACT,CCFO,IAAM6iH,GAAa,CACxBimD,eAAgBA,EAChBH,WAAYA,EACZN,eAAgBA,EAChBQ,WAAYA,EACZI,mBAAoBA,ICTT/sE,GAAS,CACpBwrE,MAAOA,GCDI3rD,GAAS,CACpBytD,gBAAiBA,ICFNnmD,GAAQ,CACnB4kD,iBAAkBA,G,2GCqBpBv7G,IAAAA,aAAAA,IAAqB,cAAc,WA4LjC,SAASq9G,IAAmB,IAAAnoD,EAAA,KAC1BjtG,OAAOvB,KAAKlgB,KAAK0qB,OAAO/T,SAAQ,SAAC7J,GAC1B,CAAC,kBAAmB,QAAS,QAAQotD,SAASptD,GAEhC,UAARA,IACT4hH,EAAKvlH,MAAQikD,IAAOshE,EAAKhkG,MAAMvhB,QAF/BulH,EAAK5hH,GAAO4hH,EAAKhkG,MAAM5d,EAI3B,IAEI9M,KAAK2B,OACP3B,KAAK+mE,SAASplE,KAAO3B,KAAK2B,KAAK+tC,KAAK1vC,OAGlCA,KAAK0qB,MAAMwqJ,QACbl1K,KAAK+mE,SAASmuG,MAAQl1K,KAAK0qB,MAAMwqJ,MAErC,CAKA,SAAS4B,IACH92K,KAAK+mE,SAASmuG,OAChBl1K,KAAK+mE,SAASmuG,MAAK,QAEvB,CAKA,GAzNA17G,IAAAA,MAAAA,OAAAA,OAA0Bg7G,EAC1BvpE,IAAAA,UAAAA,OAAwBvvB,IAAAA,QAAc,UACtCuvB,IAAAA,UAAAA,WAA4BvvB,IAAAA,UAAgB,cAE5CliB,IAAAA,OAAAA,OAAoB,CAAEnZ,KAAM,UAAWX,UAAWi2H,GAElDn8G,IAAAA,OAAa,IAAI88G,GAAgB98G,KAEjCuqB,KAAAA,UAAAA,QAAqC,WAAY,IAAAkjB,EAAA,KAC/C,IAAKjnG,KAAKmD,OAASnD,KAAK2B,KAAM,OAAO,EAErC,IAAMA,EAAO3B,KAAK2B,OACZuzK,EAAQl1K,KAAKk1K,MAEbxtG,EAASjmD,OAAOvB,KAAKve,GAAMmF,QAAO,SAACvG,GAAO,MAAiB,kBAAZA,CAA2B,IAEhF,IAAKmnE,EACH,OAAO,EAKT,IAAK1nE,KAAK0nE,OAAOtxC,UACf,OAAO,EAKT,IAFA,IAE0BozI,EAFpB7sI,EAAU,SAAC0tC,GAAK,OAAgB,YAAVA,EAAsB48B,EAAKv/B,OAAOtxC,UAAYz0B,EAAK0oE,KAAW,EAAE,EAE5Fo/F,E,4sBAAAC,CAAoBhiG,KAAM8hG,EAAAC,KAAAjjJ,MAAE,KAAjB6jD,EAAKm/F,EAAAziK,MACRgwK,EAAap6I,EAAQ0tC,GACrB2sG,EAAkB9B,GAASA,EAAMvzK,KAAKuG,WAAWmiE,GAEvD,IAAM6qG,GAAS6B,GAAgB7B,IAAUqB,GAAUQ,EAAYC,GAC7D,OAAO,CAEX,CAEA,IAAKr1K,EAAKsmE,gBAAkBitG,EAAMjtG,gBAChC,OAAO,EA0BT,IAvBA,IAEMgvG,EAAqB,SAACt1K,EAAMuzK,EAAOp5F,GAAiB,IAAAo7F,EAAAC,EACxD,KACIx1K,EAAKsmE,cAAc6T,IAAkBn6E,EAAKsmE,cAAc6T,GAAcr3E,QACrEq3E,KAAgBo5F,EAAMjtG,iBAA6D,OAAzCivG,EAAChC,EAAMjtG,gBAAgB6T,GAAcn6E,OAApCu1K,EAA0CzyK,QAExF,OAAO,EACF,KACHq3E,KAAgBo5F,EAAMjtG,kBACxBtmE,EAAKsmE,cAAc6T,GAAcr3E,UAAmD,OAA7C0yK,EAAKjC,EAAMjtG,gBAAgB6T,GAAcn6E,WAAI,EAAxCw1K,EAA0C1yK,QAEtF,OAAO,EAGT,IAAM2yK,EAAQ,SAAC72K,GAAO,MAA2B,mBAAdA,EAAQopB,GAAmBppB,EAAQopB,KAAOppB,EAAQopB,EAAE,EAEjF0tJ,EAAUtC,EAAiBpzK,EAAKsmE,cAAc6T,GAAes7F,GAC7DE,EAAWvC,EAAiBG,EAAMjtG,gBAAgB6T,GAAcn6E,KAAMy1K,GAE5E,OAAQC,EAAQ/1H,MAAK,SAAC33B,EAAI1iB,GAAC,OAAK0iB,IAAO2tJ,EAASrwK,EAAE,GACpD,EAEAqe,EAAA,EAAAiyJ,EAvBsB91J,OAAOvB,KAAKve,EAAKsmE,eAuBC3iD,EAAAiyJ,EAAA9yK,OAAA6gB,IAAE,CAArC,IAAMw2D,EAAYy7F,EAAAjyJ,GACrB,GAAK4vJ,GAKH,IAAK+B,EAAmBt1K,EAAMuzK,EAAOp5F,GACnC,OAAO,OALT,GAAIn6E,EAAKsmE,cAAc6T,GACrB,OAAO,CAOb,CAEA,OAAO,CACT,EAEAiI,KAAAA,UAAAA,UAAuC,WAAY,IAAAyoC,EAAA,KACjDxsH,KAAKgzJ,QAAS,EACdh+I,EAAEwqC,SAEF,IAAMg4H,EAAY,WAChBhrD,EAAKwmC,QAAS,EACdxmC,EAAKirD,WAAY,EACjB30K,YAAW,WACT0pH,EAAKirD,WAAY,EACjBziK,EAAEwqC,QACJ,GAAG,KACHxqC,EAAEwqC,QACJ,EAEM01H,EAAQl1K,KAAKk1K,MAEfA,GAASA,EAAMvrJ,OAASurJ,EAAMt5F,SAK9Bs5F,UACKA,EAAMvzK,KAAKuG,WAAW+/D,cAE7BitG,EAAMhtG,KAAKzmD,OAAOs+B,OAAOm1H,EAAMvzK,KAAKuG,WAAYlI,KAAK2B,SAASs1B,MAAK,kBAAMugJ,GAAW,KAEpFh+G,IAAAA,MAAAA,aACgB,UACb0O,KAAKloE,KAAK2B,QACVs1B,MAAK,SAACi+I,GACLA,EAAML,mBAAkB,GACxBroD,EAAK0oD,MAAQA,EACbsC,GACF,IAEN,GAEA/2K,EAAAA,EAAAA,QAAOwkF,IAAAA,UAAoB,gBAAgB,SAAUtnB,GACnD,IACI39D,KAAKq4B,MAAMssD,YAAY0I,OAAuBrtF,KAAKq4B,MAAMssD,YAAY3c,QACtExO,IAAAA,MAAAA,UAAoB,kBACG,cAAxBx5D,KAAKq4B,MAAM/1B,SAHb,CAOA,IAAMwwC,EAAa,CAAC,SAAU,eAAgB,gBAE1C9yC,KAAKq4B,MAAM26H,QACblgH,EAAW59B,KAAK,UAGdlV,KAAKq4B,MAAMo/I,WACb3kI,EAAW59B,KAAK,aAGlByoD,EAAM7kD,IACJ,aACA2qD,IAAAA,UAAiB,CACfvD,KAAMlgE,KAAKq4B,MAAMo/I,UAAY,eAAiBz3K,KAAKq4B,MAAM26H,OAAS,yBAA2B,cAC7FlnI,UAAWgnB,EAAW16B,KAAK,KAC3B2lD,cAAe,kBACf50D,MAAOqwD,IAAAA,WAAAA,MAAqB,mCAC5BxwC,SAAUhpB,KAAKq4B,MAAM26H,QAAUhzJ,KAAKq4B,MAAMo/I,WAAaz3K,KAAK0+D,QAC5Dpc,QAAStiD,KAAKq4B,MAAMq/I,UAAUhoI,KAAK1vC,KAAKq4B,SAE1C,GAtBM,CAwBV,KAEA53B,EAAAA,EAAAA,QAAOsjF,KAAAA,UAAyB,QAAQ,WAAY,IAAA0qC,EAAA,KAC7Cj1D,IAAAA,MAAAA,UAAoB,kBAErBA,IAAAA,QAAAA,KAAAA,cAA+Bm+G,sBAAwB33K,KAAK2kF,YAAY0I,OAAuBrtF,KAAK2kF,YAAY3c,SAClHhoE,KAAK43K,iBAAmBzlG,aAAY,YAC9Bs8C,EAAK7gE,WAAc6gE,EAAKukC,QAAWvkC,EAAK/vD,SAC1C+vD,EAAKipD,WAET,GAAG,IAAOl+G,IAAAA,QAAAA,KAAAA,cAA+Bq+G,uBAE7C,KAEAp3K,EAAAA,EAAAA,QAAOsjF,KAAAA,UAAyB,SAAS,WACvC/jF,KAAKk1K,MAAQ,KACTl1K,KAAK43K,kBAAkBxlG,cAAcpyE,KAAK43K,iBAChD,KAEAjtE,EAAAA,EAAAA,UAAS5mB,KAAAA,UAAyB,eAAe,SAAU77C,GACrDloC,KAAKmD,MAAQnD,KAAKmD,KAAK+gF,gBAAkBlkF,KAAKk1K,QAChDl1K,KAAKmD,KAAKunB,MAAM68C,YAAc/N,IAAAA,WAAAA,MAAqB,yCAGrD,IAAIs+G,GAAY,EAKhB,GAJI93K,KAAK4tD,YACPkqH,EAAY5vI,KAGV4vI,EAAW,OAAOA,EAEtB,GAAK93K,KAAKmD,MAASnD,KAAKmD,KAAK+gF,eAA7B,CAEA,IAAMgxF,EAAQl1K,KAAKk1K,MAKnB,OAJIA,IAAUA,EAAM/rK,UAAY+rK,EAAM9+I,WAAaw2C,QAAQpT,IAAAA,WAAAA,MAAqB,yDAC9E07G,EAAK,SAGA4C,CAP4C,CAQrD,KAoBAr3K,EAAAA,EAAAA,QAAO4sF,KAAAA,UAA8B,SAAUwpF,IAC/Cp2K,EAAAA,EAAAA,QAAOunE,KAAAA,UAAyB,SAAU6uG,IAQ1Cp2K,EAAAA,EAAAA,QAAO4sF,KAAAA,UAA8B,WAAYypF,IACjDr2K,EAAAA,EAAAA,QAAOunE,KAAAA,UAAyB,WAAY8uG,GAExCt9G,IAAAA,aAAAA,IAAqB,aAAc,CACrC,IAAMu+G,EAA4BxgE,OAAOjK,WAAW,aAAajvB,YAAY05F,2BAC7Et3K,EAAAA,EAAAA,QAAOs3K,EAA0Bp4K,UAAW,WAAYm3K,EAC1D,EC9OAr2K,EAAAA,EAAAA,QAAOkjF,IAAAA,UAA2B,SAAS,SAAUhmB,GAC9CnE,IAAAA,QAAAA,MAAqBA,IAAAA,MAAAA,UAAoB,kBAE9CmE,EAAM7kD,IAAI,SAAU9D,EAAC4gK,EAAc,CAACv9I,MAAOmhC,IAAAA,SAAgB,GAC7D,KCXA/4D,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,UAAU,WACvCjyF,KAAK63K,sBAAwBzqH,IAAOptD,KAAK8sD,KAAK2kC,cAAcomF,sBAC9D,KAEAp3K,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,iBAAiB,SAAUt0B,GACpDnE,IAAAA,MAAAA,KAAAA,WAAAA,eACFmE,EAAM7kD,IACJ,SACAs4E,IAAAA,UACE,CACEtwB,MAAOtH,IAAAA,WAAAA,MAAqB,iDAC5B1tC,UAAW,mBAEb9rB,KAAKg4K,cAAc/0J,WAI3B,IAEAgvE,IAAAA,UAAAA,YAAwC,WAAY,IAAAgV,EAAA,KAC5CtpC,EAAQ,IAAIlB,KA2DlB,OAzDAkB,EAAM7kD,IACJ,wBACAq4E,IAAAA,UACE,CACE94D,MAAOr4B,KAAK8sD,KAAK2kC,cAAckmF,oBAC/B5+G,SAAU,SAAChyD,GACTkgG,EAAKgxE,4BAA6B,EAElChxE,EAAKn6C,KAAK2lC,gBAAgB,CAAEklF,oBAAqB5wK,IAASkwB,MAAK,WAC7DgwE,EAAKgxE,4BAA6B,EAClCjjK,EAAEwqC,QACJ,GACF,EACAkf,QAAS1+D,KAAKi4K,4BAEhBz+G,IAAAA,WAAAA,MAAqB,0DAIzBmE,EAAM7kD,IACJ,0BACA9Y,KAAK8sD,KAAK2kC,cAAckmF,oBACtB3iK,EAAA,aACEA,EAAA,SAAIwkD,IAAAA,WAAAA,MAAqB,iEACzBxkD,EAAA,SAAO8W,UAAU,cAAc9mB,KAAK,SAAS6R,IAAI,IAAIgiD,KAAM74D,KAAK63K,wBAC/Dp0G,IAAAA,UACC,CACE33C,UAAW,yBACXw2B,QAAS,WACP,IAAekd,EACXynC,EAAK4wE,wBAA0B,IADpBr4G,EACgCynC,EAAK4wE,0BADtB50K,KAAK4M,MAAM2vD,IAEvCynC,EAAKixE,8BAA+B,EACpCjxE,EAAK4wE,sBAAsB5wE,EAAKn6C,KAAK2kC,cAAcomF,uBACnD7iK,EAAEwqC,WAEFynD,EAAKixE,8BAA+B,EACpCjxE,EAAKn6C,KAAK2lC,gBAAgB,CAAEolF,sBAAuB5wE,EAAK4wE,0BAA2B5gJ,MAAK,WACtFjiB,EAAEwqC,QACJ,IAEJ,GAEFga,IAAAA,WAAAA,MAAqB,kEAEtBx5D,KAAKk4K,6BACJljK,EAAA,KAAG69G,MAAM,mBACP79G,EAAA,aAAQwkD,IAAAA,WAAAA,MAAqB,oEAG/B,IAIJxkD,EAAA,WAIG2oD,CACT,CFyKF,G;;;;;;;yCGjQA,IAAIw6G,EAAej5H,EAAQ,MAEvBk5H,EAAWl5H,EAAQ,MAEnBm5H,EAAWD,EAASD,EAAa,6BAErCzgK,EAAOC,QAAU,SAA4B9E,EAAMylK,GAClD,IAAIC,EAAYJ,EAAatlK,IAAQylK,GACrC,MAAyB,mBAAdC,GAA4BF,EAASxlK,EAAM,gBAAkB,EAChEulK,EAASG,GAEVA,CACR,C,8BCZA,IAAI7oI,EAAOwP,EAAQ,MACfi5H,EAAej5H,EAAQ,MAEvBs5H,EAASL,EAAa,8BACtBM,EAAQN,EAAa,6BACrBO,EAAgBP,EAAa,mBAAmB,IAASzoI,EAAK3vC,KAAK04K,EAAOD,GAE1EG,EAAQR,EAAa,qCAAqC,GAC1DS,EAAkBT,EAAa,2BAA2B,GAC1DU,EAAOV,EAAa,cAExB,GAAIS,EACH,IACCA,EAAgB,CAAC,EAAG,IAAK,CAAE7xK,MAAO,GACnC,CAAE,MAAOxD,GAERq1K,EAAkB,IACnB,CAGDlhK,EAAOC,QAAU,SAAkBmhK,GAClC,IAAI3gJ,EAAOugJ,EAAchpI,EAAM+oI,EAAO/kK,WAYtC,OAXIilK,GAASC,GACDD,EAAMxgJ,EAAM,UACdgE,cAERy8I,EACCzgJ,EACA,SACA,CAAEpxB,MAAO,EAAI8xK,EAAK,EAAGC,EAAiBr0K,QAAUiP,UAAUjP,OAAS,MAI/D0zB,CACR,EAEA,IAAI4gJ,EAAY,WACf,OAAOL,EAAchpI,EAAM8oI,EAAQ9kK,UACpC,EAEIklK,EACHA,EAAgBlhK,EAAOC,QAAS,QAAS,CAAE5Q,MAAOgyK,IAElDrhK,EAAOC,QAAQlE,MAAQslK,C,8BC3CxB,IAAI74J,EAAOg/B,EAAQ,MACf85H,EAA+B,mBAAX5zJ,QAAkD,iBAAlBA,OAAO,OAE3D6zJ,EAAQx3J,OAAO9hB,UAAU4b,SACzBpb,EAAST,MAAMC,UAAUQ,OACzB+4K,EAAqBz3J,OAAOya,eAmB5Bi9I,EAAsBD,GAbY,WACrC,IAAInsK,EAAM,CAAC,EACX,IAGC,IAAK,IAAIqM,KAFT8/J,EAAmBnsK,EAAK,IAAK,CAAEw2B,YAAY,EAAOx8B,MAAOgG,IAE3CA,EACb,OAAO,EAER,OAAOA,EAAI6M,IAAM7M,CAClB,CAAE,MAAOxJ,GACR,OAAO,CACR,CACD,CACgD61K,GAE5Cl9I,EAAiB,SAAU/E,EAAQtkB,EAAM9L,EAAOsyK,GAnBnC,IAAUx1K,KAoBtBgP,KAAQskB,IAnBS,mBADKtzB,EAoBSw1K,IAnBmB,sBAAnBJ,EAAMl5K,KAAK8D,IAmBIw1K,OAG9CF,EACHD,EAAmB/hJ,EAAQtkB,EAAM,CAChCspB,cAAc,EACdoH,YAAY,EACZx8B,MAAOA,EACP08B,UAAU,IAGXtM,EAAOtkB,GAAQ9L,EAEjB,EAEIuyK,EAAmB,SAAUniJ,EAAQvvB,GACxC,IAAI2xK,EAAa7lK,UAAUjP,OAAS,EAAIiP,UAAU,GAAK,CAAC,EACpD9D,EAAQsQ,EAAKtY,GACboxK,IACHppK,EAAQzP,EAAOJ,KAAK6P,EAAO6R,OAAO+3J,sBAAsB5xK,KAEzD,IAAK,IAAIX,EAAI,EAAGA,EAAI2I,EAAMnL,OAAQwC,GAAK,EACtCi1B,EAAe/E,EAAQvnB,EAAM3I,GAAIW,EAAIgI,EAAM3I,IAAKsyK,EAAW3pK,EAAM3I,IAEnE,EAEAqyK,EAAiBH,sBAAwBA,EAEzCzhK,EAAOC,QAAU2hK,C,wBCrDjB,IACI/jK,EAAQ7V,MAAMC,UAAU4V,MACxB0jK,EAAQx3J,OAAO9hB,UAAU4b,SAG7B7D,EAAOC,QAAU,SAAcnK,GAC3B,IAAI7M,EAASX,KACb,GAAsB,mBAAXW,GAJA,sBAIyBs4K,EAAMl5K,KAAKY,GAC3C,MAAM,IAAIy4B,UARE,kDAQwBz4B,GAyBxC,IAvBA,IAEI84K,EAFAngK,EAAO/D,EAAMxV,KAAK2T,UAAW,GAqB7BgmK,EAAcz2K,KAAKC,IAAI,EAAGvC,EAAO8D,OAAS6U,EAAK7U,QAC/Ck1K,EAAY,GACP1yK,EAAI,EAAGA,EAAIyyK,EAAazyK,IAC7B0yK,EAAUzkK,KAAK,IAAMjO,GAKzB,GAFAwyK,EAAQ15J,SAAS,SAAU,oBAAsB45J,EAAUvhK,KAAK,KAAO,4CAA/D2H,EAxBK,WACT,GAAI/f,gBAAgBy5K,EAAO,CACvB,IAAIhrJ,EAAS9tB,EAAO8S,MAChBzT,KACAsZ,EAAKnZ,OAAOoV,EAAMxV,KAAK2T,aAE3B,OAAI+N,OAAOgN,KAAYA,EACZA,EAEJzuB,IACX,CACI,OAAOW,EAAO8S,MACVjG,EACA8L,EAAKnZ,OAAOoV,EAAMxV,KAAK2T,YAGnC,IAUI/S,EAAOhB,UAAW,CAClB,IAAIi6K,EAAQ,WAAkB,EAC9BA,EAAMj6K,UAAYgB,EAAOhB,UACzB85K,EAAM95K,UAAY,IAAIi6K,EACtBA,EAAMj6K,UAAY,IACtB,CAEA,OAAO85K,CACX,C,8BCjDA,IAAIlyK,EAAiB23C,EAAQ,MAE7BxnC,EAAOC,QAAUoI,SAASpgB,UAAU+vC,MAAQnoC,C,8BCF5C,IAAIuL,EAEA+mK,EAAe54H,YACf64H,EAAY/5J,SACZg6J,EAAa3gJ,UAGb4gJ,EAAwB,SAAUC,GACrC,IACC,OAAOH,EAAU,yBAA2BG,EAAmB,iBAAxDH,EACR,CAAE,MAAOv2K,GAAI,CACd,EAEIo1K,EAAQl3J,OAAOukC,yBACnB,GAAI2yH,EACH,IACCA,EAAM,CAAC,EAAG,GACX,CAAE,MAAOp1K,GACRo1K,EAAQ,IACT,CAGD,IAAIuB,EAAiB,WACpB,MAAM,IAAIH,CACX,EACII,EAAiBxB,EACjB,WACF,IAGC,OAAOuB,CACR,CAAE,MAAOE,GACR,IAEC,OAAOzB,EAAMjlK,UAAW,UAAU6I,GACnC,CAAE,MAAO89J,GACR,OAAOH,CACR,CACD,CACD,CAbG,GAcDA,EAEClB,EAAa95H,EAAQ,KAARA,GAEb19B,EAAWC,OAAOC,gBAAkB,SAAU9H,GAAK,OAAOA,EAAE4yC,SAAW,EAEvE8tH,EAAY,CAAC,EAEbC,EAAmC,oBAAf76G,WAA6B5sD,EAAY0O,EAASk+C,YAEtE86G,EAAa,CAChB,mBAA8C,oBAAnBC,eAAiC3nK,EAAY2nK,eACxE,UAAW/6K,MACX,gBAAwC,oBAAhB2uK,YAA8Bv7J,EAAYu7J,YAClE,2BAA4B2K,EAAax3J,EAAS,GAAG4D,OAAOC,aAAevS,EAC3E,mCAAoCA,EACpC,kBAAmBwnK,EACnB,mBAAoBA,EACpB,2BAA4BA,EAC5B,2BAA4BA,EAC5B,YAAgC,oBAAZI,QAA0B5nK,EAAY4nK,QAC1D,WAA8B,oBAAXC,OAAyB7nK,EAAY6nK,OACxD,YAAaj0K,QACb,aAAkC,oBAAbk0K,SAA2B9nK,EAAY8nK,SAC5D,SAAU3gK,KACV,cAAe40F,UACf,uBAAwBltD,mBACxB,cAAek5H,UACf,uBAAwB9lI,mBACxB,UAAWlpC,MACX,SAAUivK,KACV,cAAeC,UACf,iBAA0C,oBAAjBC,aAA+BloK,EAAYkoK,aACpE,iBAA0C,oBAAjBC,aAA+BnoK,EAAYmoK,aACpE,yBAA0D,oBAAzBC,qBAAuCpoK,EAAYooK,qBACpF,aAAcpB,EACd,sBAAuBQ,EACvB,cAAoC,oBAAda,UAA4BroK,EAAYqoK,UAC9D,eAAsC,oBAAfC,WAA6BtoK,EAAYsoK,WAChE,eAAsC,oBAAfC,WAA6BvoK,EAAYuoK,WAChE,aAAczuI,SACd,UAAWn9B,MACX,sBAAuBupK,EAAax3J,EAASA,EAAS,GAAG4D,OAAOC,cAAgBvS,EAChF,SAA0B,iBAAT4pB,KAAoBA,KAAO5pB,EAC5C,QAAwB,oBAAR4sE,IAAsB5sE,EAAY4sE,IAClD,yBAAyC,oBAARA,KAAwBs5F,EAAyBx3J,GAAS,IAAIk+D,KAAMt6D,OAAOC,aAAtCvS,EACtE,SAAU7P,KACV,WAAYuZ,OACZ,WAAYiF,OACZ,eAAgBuoB,WAChB,aAAcz6B,SACd,YAAgC,oBAAZowC,QAA0B7sC,EAAY6sC,QAC1D,UAA4B,oBAAV2Z,MAAwBxmD,EAAYwmD,MACtD,eAAgBjK,WAChB,mBAAoB9N,eACpB,YAAgC,oBAAZgY,QAA0BzmD,EAAYymD,QAC1D,WAAYvyD,OACZ,QAAwB,oBAAR6oG,IAAsB/8F,EAAY+8F,IAClD,yBAAyC,oBAARA,KAAwBmpE,EAAyBx3J,GAAS,IAAIquF,KAAMzqF,OAAOC,aAAtCvS,EACtE,sBAAoD,oBAAtBwoK,kBAAoCxoK,EAAYwoK,kBAC9E,WAAYnjK,OACZ,4BAA6B6gK,EAAax3J,EAAS,GAAG4D,OAAOC,aAAevS,EAC5E,WAAYkmK,EAAa5zJ,OAAStS,EAClC,gBAAiB+mK,EACjB,mBAAoBM,EACpB,eAAgBI,EAChB,cAAeR,EACf,eAAsC,oBAAfr6G,WAA6B5sD,EAAY4sD,WAChE,sBAAoD,oBAAtB67G,kBAAoCzoK,EAAYyoK,kBAC9E,gBAAwC,oBAAhBC,YAA8B1oK,EAAY0oK,YAClE,gBAAwC,oBAAhB1pD,YAA8Bh/G,EAAYg/G,YAClE,aAAc2pD,SACd,YAAgC,oBAAZC,QAA0B5oK,EAAY4oK,QAC1D,YAAgC,oBAAZC,QAA0B7oK,EAAY6oK,QAC1D,YAAgC,oBAAZC,QAA0B9oK,EAAY8oK,SAGvDC,EAAS,SAASA,EAAOhpK,GAC5B,IAAI9L,EACJ,GAAa,oBAAT8L,EACH9L,EAAQizK,EAAsB,6BACxB,GAAa,wBAATnnK,EACV9L,EAAQizK,EAAsB,wBACxB,GAAa,6BAATnnK,EACV9L,EAAQizK,EAAsB,8BACxB,GAAa,qBAATnnK,EAA6B,CACvC,IAAIhP,EAAKg4K,EAAO,4BACZh4K,IACHkD,EAAQlD,EAAGlE,UAEb,MAAO,GAAa,6BAATkT,EAAqC,CAC/C,IAAIkuE,EAAM86F,EAAO,oBACb96F,IACHh6E,EAAQya,EAASu/D,EAAIphF,WAEvB,CAIA,OAFA66K,EAAW3nK,GAAQ9L,EAEZA,CACR,EAEI+0K,EAAiB,CACpB,yBAA0B,CAAC,cAAe,aAC1C,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,QAAS,YAAa,WAC/C,uBAAwB,CAAC,QAAS,YAAa,WAC/C,oBAAqB,CAAC,QAAS,YAAa,QAC5C,sBAAuB,CAAC,QAAS,YAAa,UAC9C,2BAA4B,CAAC,gBAAiB,aAC9C,mBAAoB,CAAC,yBAA0B,aAC/C,4BAA6B,CAAC,yBAA0B,YAAa,aACrE,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,WAAY,aACpC,kBAAmB,CAAC,OAAQ,aAC5B,mBAAoB,CAAC,QAAS,aAC9B,uBAAwB,CAAC,YAAa,aACtC,0BAA2B,CAAC,eAAgB,aAC5C,0BAA2B,CAAC,eAAgB,aAC5C,sBAAuB,CAAC,WAAY,aACpC,cAAe,CAAC,oBAAqB,aACrC,uBAAwB,CAAC,oBAAqB,YAAa,aAC3D,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,wBAAyB,CAAC,aAAc,aACxC,cAAe,CAAC,OAAQ,SACxB,kBAAmB,CAAC,OAAQ,aAC5B,iBAAkB,CAAC,MAAO,aAC1B,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,sBAAuB,CAAC,SAAU,YAAa,YAC/C,qBAAsB,CAAC,SAAU,YAAa,WAC9C,qBAAsB,CAAC,UAAW,aAClC,sBAAuB,CAAC,UAAW,YAAa,QAChD,gBAAiB,CAAC,UAAW,OAC7B,mBAAoB,CAAC,UAAW,UAChC,oBAAqB,CAAC,UAAW,WACjC,wBAAyB,CAAC,aAAc,aACxC,4BAA6B,CAAC,iBAAkB,aAChD,oBAAqB,CAAC,SAAU,aAChC,iBAAkB,CAAC,MAAO,aAC1B,+BAAgC,CAAC,oBAAqB,aACtD,oBAAqB,CAAC,SAAU,aAChC,oBAAqB,CAAC,SAAU,aAChC,yBAA0B,CAAC,cAAe,aAC1C,wBAAyB,CAAC,aAAc,aACxC,uBAAwB,CAAC,YAAa,aACtC,wBAAyB,CAAC,aAAc,aACxC,+BAAgC,CAAC,oBAAqB,aACtD,yBAA0B,CAAC,cAAe,aAC1C,yBAA0B,CAAC,cAAe,aAC1C,sBAAuB,CAAC,WAAY,aACpC,qBAAsB,CAAC,UAAW,aAClC,qBAAsB,CAAC,UAAW,cAG/BpsI,EAAOwP,EAAQ,MACfr9B,EAASq9B,EAAQ,MACjB68H,EAAUrsI,EAAK3vC,KAAKggB,SAAShgB,KAAML,MAAMC,UAAUQ,QACnD67K,EAAetsI,EAAK3vC,KAAKggB,SAAStM,MAAO/T,MAAMC,UAAUokB,QACzDk4J,EAAWvsI,EAAK3vC,KAAKggB,SAAShgB,KAAMoY,OAAOxY,UAAUgE,SACrDu4K,EAAYxsI,EAAK3vC,KAAKggB,SAAShgB,KAAMoY,OAAOxY,UAAU4V,OAGtD4mK,EAAa,qGACbC,EAAe,WAiBfC,EAAmB,SAA0BxpK,EAAMylK,GACtD,IACI7tB,EADA6xB,EAAgBzpK,EAOpB,GALIgP,EAAOi6J,EAAgBQ,KAE1BA,EAAgB,KADhB7xB,EAAQqxB,EAAeQ,IACK,GAAK,KAG9Bz6J,EAAO24J,EAAY8B,GAAgB,CACtC,IAAIv1K,EAAQyzK,EAAW8B,GAIvB,GAHIv1K,IAAUuzK,IACbvzK,EAAQ80K,EAAOS,SAEK,IAAVv1K,IAA0BuxK,EACpC,MAAM,IAAIyB,EAAW,aAAelnK,EAAO,wDAG5C,MAAO,CACN43I,MAAOA,EACP53I,KAAMypK,EACNv1K,MAAOA,EAET,CAEA,MAAM,IAAI8yK,EAAa,aAAehnK,EAAO,mBAC9C,EAEA6E,EAAOC,QAAU,SAAsB9E,EAAMylK,GAC5C,GAAoB,iBAATzlK,GAAqC,IAAhBA,EAAKpO,OACpC,MAAM,IAAIs1K,EAAW,6CAEtB,GAAIrmK,UAAUjP,OAAS,GAA6B,kBAAjB6zK,EAClC,MAAM,IAAIyB,EAAW,6CAGtB,IAAI5sI,EAnDc,SAAsBtR,GACxC,IAAIpY,EAAQy4J,EAAUrgJ,EAAQ,EAAG,GAC7BnY,EAAOw4J,EAAUrgJ,GAAS,GAC9B,GAAc,MAAVpY,GAA0B,MAATC,EACpB,MAAM,IAAIm2J,EAAa,kDACjB,GAAa,MAATn2J,GAA0B,MAAVD,EAC1B,MAAM,IAAIo2J,EAAa,kDAExB,IAAIprJ,EAAS,GAIb,OAHAwtJ,EAASpgJ,EAAQsgJ,GAAY,SAAUv1K,EAAO45D,EAAQygD,EAAOs7D,GAC5D9tJ,EAAOA,EAAOhqB,QAAUw8G,EAAQg7D,EAASM,EAAWH,EAAc,MAAQ57G,GAAU55D,CACrF,IACO6nB,CACR,CAsCa+tJ,CAAa3pK,GACrB4pK,EAAoBtvI,EAAM1oC,OAAS,EAAI0oC,EAAM,GAAK,GAElDorI,EAAY8D,EAAiB,IAAMI,EAAoB,IAAKnE,GAC5DoE,EAAoBnE,EAAU1lK,KAC9B9L,EAAQwxK,EAAUxxK,MAClB41K,GAAqB,EAErBlyB,EAAQ8tB,EAAU9tB,MAClBA,IACHgyB,EAAoBhyB,EAAM,GAC1BuxB,EAAa7uI,EAAO4uI,EAAQ,CAAC,EAAG,GAAItxB,KAGrC,IAAK,IAAIxjJ,EAAI,EAAG21K,GAAQ,EAAM31K,EAAIkmC,EAAM1oC,OAAQwC,GAAK,EAAG,CACvD,IAAIswE,EAAOpqC,EAAMlmC,GACbwc,EAAQy4J,EAAU3kG,EAAM,EAAG,GAC3B7zD,EAAOw4J,EAAU3kG,GAAO,GAC5B,IAEa,MAAV9zD,GAA2B,MAAVA,GAA2B,MAAVA,GACtB,MAATC,GAAyB,MAATA,GAAyB,MAATA,IAElCD,IAAUC,EAEb,MAAM,IAAIm2J,EAAa,wDASxB,GAPa,gBAATtiG,GAA2BqlG,IAC9BD,GAAqB,GAMlB96J,EAAO24J,EAFXkC,EAAoB,KADpBD,GAAqB,IAAMllG,GACmB,KAG7CxwE,EAAQyzK,EAAWkC,QACb,GAAa,MAAT31K,EAAe,CACzB,KAAMwwE,KAAQxwE,GAAQ,CACrB,IAAKuxK,EACJ,MAAM,IAAIyB,EAAW,sBAAwBlnK,EAAO,+CAErD,MACD,CACA,GAAI8lK,GAAU1xK,EAAI,GAAMkmC,EAAM1oC,OAAQ,CACrC,IAAIshD,EAAO4yH,EAAM5xK,EAAOwwE,GAWvBxwE,GAVD61K,IAAU72H,IASG,QAASA,KAAU,kBAAmBA,EAAKxpC,KAC/CwpC,EAAKxpC,IAELxV,EAAMwwE,EAEhB,MACCqlG,EAAQ/6J,EAAO9a,EAAOwwE,GACtBxwE,EAAQA,EAAMwwE,GAGXqlG,IAAUD,IACbnC,EAAWkC,GAAqB31K,EAElC,CACD,CACA,OAAOA,CACR,C,8BCvUA,IAAI81K,EAAa78J,EAAAA,EAAOoF,OACpB03J,EAAgB59H,EAAQ,MAE5BxnC,EAAOC,QAAU,WAChB,MAA0B,mBAAfklK,GACW,mBAAXz3J,QACsB,iBAAtBy3J,EAAW,QACO,iBAAlBz3J,OAAO,QAEX03J,GACR,C,wBCTAplK,EAAOC,QAAU,WAChB,GAAsB,mBAAXyN,QAAiE,mBAAjC3D,OAAO+3J,sBAAwC,OAAO,EACjG,GAA+B,iBAApBp0J,OAAOC,SAAyB,OAAO,EAElD,IAAItY,EAAM,CAAC,EACPq6F,EAAMhiF,OAAO,QACb23J,EAASt7J,OAAO2lF,GACpB,GAAmB,iBAARA,EAAoB,OAAO,EAEtC,GAA4C,oBAAxC3lF,OAAO9hB,UAAU4b,SAASxb,KAAKqnG,GAA8B,OAAO,EACxE,GAA+C,oBAA3C3lF,OAAO9hB,UAAU4b,SAASxb,KAAKg9K,GAAiC,OAAO,EAY3E,IAAK31E,KADLr6F,EAAIq6F,GADS,GAEDr6F,EAAO,OAAO,EAC1B,GAA2B,mBAAhB0U,OAAOvB,MAAmD,IAA5BuB,OAAOvB,KAAKnT,GAAKtI,OAAgB,OAAO,EAEjF,GAA0C,mBAA/Bgd,OAAO4pH,qBAAiF,IAA3C5pH,OAAO4pH,oBAAoBt+H,GAAKtI,OAAgB,OAAO,EAE/G,IAAIu4K,EAAOv7J,OAAO+3J,sBAAsBzsK,GACxC,GAAoB,IAAhBiwK,EAAKv4K,QAAgBu4K,EAAK,KAAO51E,EAAO,OAAO,EAEnD,IAAK3lF,OAAO9hB,UAAUs9K,qBAAqBl9K,KAAKgN,EAAKq6F,GAAQ,OAAO,EAEpE,GAA+C,mBAApC3lF,OAAOukC,yBAAyC,CAC1D,IAAIsM,EAAa7wC,OAAOukC,yBAAyBj5C,EAAKq6F,GACtD,GAdY,KAcR90C,EAAWvrD,QAA8C,IAA1BurD,EAAW/uB,WAAuB,OAAO,CAC7E,CAEA,OAAO,CACR,C,8BCvCA,IAAImM,EAAOwP,EAAQ,MAEnBxnC,EAAOC,QAAU+3B,EAAK3vC,KAAKggB,SAAShgB,KAAM0hB,OAAO9hB,UAAU8M,e,aCI1D,WACD,aAGA,GAAsB,iBAAX1K,OAMX,GAAI,yBAA0BA,QAC1B,8BAA+BA,QAC/B,sBAAuBA,OAAOm7K,0BAA0Bv9K,UAIpD,mBAAoBoC,OAAOm7K,0BAA0Bv9K,WACzD8hB,OAAOya,eAAen6B,OAAOm7K,0BAA0Bv9K,UACrD,iBAAkB,CAClB4c,IAAK,WACH,OAAOvc,KAAKm9K,kBAAoB,CAClC,QAXN,CAkCA,IAAIv8K,EAAY,SAASw8K,GAGvB,IAFA,IAAI36J,EAOH1gB,OAAOnB,SANJy8K,EAAQC,EAAgB76J,GACrB46J,GAELA,EAAQC,EADR76J,EAAM46J,EAAM9vK,eAGd,OAAOkV,CACT,CARgB,GAgBZ86J,EAAW,GAOXC,EAAqB,KAMrBC,EAAkB,KAwFtBC,EAAqB/9K,UAAUg+K,iBAAmB,IAQlDD,EAAqB/9K,UAAUi+K,cAAgB,KAM/CF,EAAqB/9K,UAAUk+K,uBAAwB,EAYvDH,EAAqBI,yBAA2B,WAiB9C,OAhBKN,IAKHA,EAAqB,SAASO,EAAoBC,GAI9CP,EAHGM,GAAuBC,EAGRC,EAAsBF,EAAoBC,GAgrB3D,CACLx7K,IAAK,EACLQ,OAAQ,EACRgL,KAAM,EACNW,MAAO,EACPC,MAAO,EACP1M,OAAQ,GAprBNq7K,EAAS5mK,SAAQ,SAASunK,GACxBA,EAASC,wBACX,GACF,GAEKX,CACT,EAMAE,EAAqBU,yBAA2B,WAC9CZ,EAAqB,KACrBC,EAAkB,IACpB,EAQAC,EAAqB/9K,UAAU0+K,QAAU,SAAS19K,GAKhD,IAJ8BX,KAAKs+K,oBAAoBh9H,MAAK,SAASr/B,GACnE,OAAOA,EAAK1hB,SAAWI,CACzB,IAEA,CAIA,IAAMA,GAA6B,GAAnBA,EAAOqhB,SACrB,MAAM,IAAInW,MAAM,6BAGlB7L,KAAKu+K,oBACLv+K,KAAKs+K,oBAAoBppK,KAAK,CAAC3U,QAASI,EAAQ8kD,MAAO,OACvDzlD,KAAKw+K,sBAAsB79K,EAAO4M,eAClCvN,KAAKm+K,wBATL,CAUF,EAOAT,EAAqB/9K,UAAU8+K,UAAY,SAAS99K,GAClDX,KAAKs+K,oBACDt+K,KAAKs+K,oBAAoBx3K,QAAO,SAASmb,GACvC,OAAOA,EAAK1hB,SAAWI,CACzB,IACJX,KAAK0+K,wBAAwB/9K,EAAO4M,eACG,GAAnCvN,KAAKs+K,oBAAoB75K,QAC3BzE,KAAK2+K,qBAET,EAMAjB,EAAqB/9K,UAAUi/K,WAAa,WAC1C5+K,KAAKs+K,oBAAsB,GAC3Bt+K,KAAK6+K,6BACL7+K,KAAK2+K,qBACP,EASAjB,EAAqB/9K,UAAUm/K,YAAc,WAC3C,IAAIv1E,EAAUvpG,KAAK++K,eAAexpK,QAElC,OADAvV,KAAK++K,eAAiB,GACfx1E,CACT,EAYAm0E,EAAqB/9K,UAAUq/K,gBAAkB,SAASC,GACxD,IAAIxyB,EAAYwyB,GAAiB,CAAC,GAGlC,OAFKv/K,MAAMU,QAAQqsJ,KAAYA,EAAY,CAACA,IAErCA,EAAU/2I,OAAO5O,QAAO,SAASoR,EAAGjR,EAAGyC,GAC5C,GAAgB,iBAALwO,GAAiBzI,MAAMyI,IAAMA,EAAI,GAAKA,EAAI,EACnD,MAAM,IAAIrM,MAAM,0DAElB,OAAOqM,IAAMxO,EAAEzC,EAAI,EACrB,GACF,EAcAy2K,EAAqB/9K,UAAUu/K,iBAAmB,SAASC,GACzD,IACIC,GADeD,GAAkB,OACVpzK,MAAM,OAAOnE,KAAI,SAASklC,GACnD,IAAIK,EAAQ,wBAAwBzjB,KAAKojB,GACzC,IAAKK,EACH,MAAM,IAAIthC,MAAM,qDAElB,MAAO,CAAC9E,MAAOijC,WAAWmD,EAAM,IAAK7O,KAAM6O,EAAM,GACnD,IAOA,OAJAiyI,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GACnCA,EAAQ,GAAKA,EAAQ,IAAMA,EAAQ,GAE5BA,CACT,EASA1B,EAAqB/9K,UAAU6+K,sBAAwB,SAAS/7J,GAC9D,IAAIk7B,EAAMl7B,EAAIkJ,YACd,GAAKgyB,IAI0C,GAA3C39C,KAAKq/K,qBAAqBn+J,QAAQuB,GAAtC,CAMA,IAAIjS,EAAWxQ,KAAKm+K,uBAChBmB,EAAqB,KACrBC,EAAc,KAIdv/K,KAAK49K,cACP0B,EAAqB3hI,EAAIw0B,YAAY3hE,EAAUxQ,KAAK49K,gBAEpD4B,EAAS7hI,EAAK,SAAUntC,GAAU,GAClCgvK,EAAS/8J,EAAK,SAAUjS,GAAU,GAC9BxQ,KAAK69K,uBAAyB,qBAAsBlgI,IACtD4hI,EAAc,IAAI5hI,EAAI8hI,iBAAiBjvK,IAC3B6tK,QAAQ57J,EAAK,CACvBva,YAAY,EACZw3K,WAAW,EACXC,eAAe,EACf7xG,SAAS,KAKf9tE,KAAKq/K,qBAAqBnqK,KAAKuN,GAC/BziB,KAAK4/K,wBAAwB1qK,MAAK,WAGhC,IAAIyoC,EAAMl7B,EAAIkJ,YAEVgyB,IACE2hI,GACF3hI,EAAIy0B,cAAcktG,GAEpB98I,EAAYmb,EAAK,SAAUntC,GAAU,IAGvCgyB,EAAY/f,EAAK,SAAUjS,GAAU,GACjC+uK,GACFA,EAAYX,YAEhB,IAGA,IAAIiB,EACD7/K,KAAKi1B,OAASj1B,KAAKi1B,KAAK1nB,eAAiBvN,KAAKi1B,OAAUr0B,EAC3D,GAAI6hB,GAAOo9J,EAAS,CAClB,IAAIxC,EAAQC,EAAgB76J,GACxB46J,GACFr9K,KAAKw+K,sBAAsBnB,EAAM9vK,cAErC,CApDA,CAqDF,EAQAmwK,EAAqB/9K,UAAU++K,wBAA0B,SAASj8J,GAChE,IAAI5c,EAAQ7F,KAAKq/K,qBAAqBn+J,QAAQuB,GAC9C,IAAc,GAAV5c,EAAJ,CAIA,IAAIg6K,EACD7/K,KAAKi1B,OAASj1B,KAAKi1B,KAAK1nB,eAAiBvN,KAAKi1B,OAAUr0B,EAGvDk/K,EACA9/K,KAAKs+K,oBAAoBh9H,MAAK,SAASr/B,GACrC,IAAI89J,EAAU99J,EAAK1hB,QAAQgN,cAE3B,GAAIwyK,GAAWt9J,EACb,OAAO,EAGT,KAAOs9J,GAAWA,GAAWF,GAAS,CACpC,IAAIxC,EAAQC,EAAgByC,GAE5B,IADAA,EAAU1C,GAASA,EAAM9vK,gBACVkV,EACb,OAAO,CAEX,CACA,OAAO,CACT,IACJ,IAAIq9J,EAAJ,CAKA,IAAIE,EAAchgL,KAAK4/K,wBAAwB/5K,GAM/C,GALA7F,KAAKq/K,qBAAqBt7J,OAAOle,EAAO,GACxC7F,KAAK4/K,wBAAwB77J,OAAOle,EAAO,GAC3Cm6K,IAGIv9J,GAAOo9J,EAAS,CAClB,IAAIxC,EAAQC,EAAgB76J,GACxB46J,GACFr9K,KAAK0+K,wBAAwBrB,EAAM9vK,cAEvC,CAdA,CAzBA,CAwCF,EAQAmwK,EAAqB/9K,UAAUk/K,2BAA6B,WAC1D,IAAIoB,EAAejgL,KAAK4/K,wBAAwBrqK,MAAM,GACtDvV,KAAKq/K,qBAAqB56K,OAAS,EACnCzE,KAAK4/K,wBAAwBn7K,OAAS,EACtC,IAAK,IAAIwC,EAAI,EAAGA,EAAIg5K,EAAax7K,OAAQwC,IACvCg5K,EAAah5K,IAEjB,EASAy2K,EAAqB/9K,UAAUw+K,uBAAyB,WACtD,GAAKn+K,KAAKi1B,OAAQuoJ,GAAuBC,EAAzC,CAKA,IAAIyC,EAAclgL,KAAKmgL,eACnBC,EAAWF,EAAclgL,KAAKqgL,eAiZ3B,CACL79K,IAAK,EACLQ,OAAQ,EACRgL,KAAM,EACNW,MAAO,EACPC,MAAO,EACP1M,OAAQ,GArZVlC,KAAKs+K,oBAAoB3nK,SAAQ,SAASsL,GACxC,IAAIthB,EAASshB,EAAK1hB,QACd+/K,EAAazvK,EAAsBlQ,GACnC4/K,EAAqBvgL,KAAKwgL,oBAAoB7/K,GAC9C8/K,EAAWx+J,EAAKwjC,MAChBu4H,EAAmBkC,GAAeK,GAClCvgL,KAAK0gL,kCAAkC//K,EAAQ2/K,EAAYF,GAE3DO,EAAa,KACZ3gL,KAAKwgL,oBAAoB7/K,GAElB68K,IAAsBx9K,KAAKi1B,OACrC0rJ,EAAaP,GAFbO,EAqYG,CACLn+K,IAAK,EACLQ,OAAQ,EACRgL,KAAM,EACNW,MAAO,EACPC,MAAO,EACP1M,OAAQ,GAtYR,IAAI0+K,EAAW3+J,EAAKwjC,MAAQ,IAAIy3H,EAA0B,CACxDvrI,KAkQG5vC,OAAO8+K,aAAeA,YAAY78I,KAAO68I,YAAY78I,MAjQxDrjC,OAAQA,EACRo9K,mBAAoBuC,EACpBK,WAAYA,EACZ3C,iBAAkBA,IAGfyC,EAEMP,GAAeK,EAGpBvgL,KAAK8gL,qBAAqBL,EAAUG,IACtC5gL,KAAK++K,eAAe7pK,KAAK0rK,GAMvBH,GAAYA,EAASM,gBACvB/gL,KAAK++K,eAAe7pK,KAAK0rK,GAZ3B5gL,KAAK++K,eAAe7pK,KAAK0rK,EAe7B,GAAG5gL,MAECA,KAAK++K,eAAet6K,QACtBzE,KAAKghL,UAAUhhL,KAAK8+K,cAAe9+K,KA/CrC,CAiDF,EAgBA09K,EAAqB/9K,UAAU+gL,kCAC3B,SAAS//K,EAAQ2/K,EAAYF,GAE/B,GAA+C,QAA3Cr+K,OAAOymC,iBAAiB7nC,GAAQsN,QAApC,CAMA,IAJA,IAqR+BgzK,EAAOC,EAClC1+K,EACAQ,EACAgL,EACAW,EACAC,EACA1M,EA3RA87K,EAAmBsC,EACnB57K,EAASy8K,EAAcxgL,GACvBygL,GAAS,GAELA,GAAU18K,GAAQ,CACxB,IAAI28K,EAAa,KACbC,EAAyC,GAAnB58K,EAAOsd,SAC7BjgB,OAAOymC,iBAAiB9jC,GAAU,CAAC,EAGvC,GAAmC,QAA/B48K,EAAoBrzK,QAAmB,OAAO,KAElD,GAAIvJ,GAAU1E,KAAKi1B,MAA0C,GAAlCvwB,EAAOsd,SAEhC,GADAo/J,GAAS,EACL18K,GAAU1E,KAAKi1B,MAAQvwB,GAAU9D,EAC/B48K,IAAuBx9K,KAAKi1B,MACzBwoJ,GACwB,GAAzBA,EAAgB7uK,OAAwC,GAA1B6uK,EAAgBv7K,QAEhDwC,EAAS,KACT28K,EAAa,KACbrD,EAAmB,MAEnBqD,EAAa5D,EAGf4D,EAAajB,MAEV,CAEL,IAAI/C,EAAQ8D,EAAcz8K,GACtB68K,EAAYlE,GAASxsK,EAAsBwsK,GAC3CmE,EACAnE,GACAr9K,KAAK0gL,kCAAkCrD,EAAOkE,EAAWnB,GACzDmB,GAAaC,GACf98K,EAAS24K,EACTgE,EAAapD,EAAsBsD,EAAWC,KAE9C98K,EAAS,KACTs5K,EAAmB,KAEvB,KACK,CAKL,IAAIv7J,EAAM/d,EAAO6I,cACb7I,GAAU+d,EAAItf,MACduB,GAAU+d,EAAIrd,iBACkB,WAAhCk8K,EAAoBlxI,WACtBixI,EAAaxwK,EAAsBnM,GAEvC,CAOA,GAHI28K,IA2NyBJ,EA1NgBI,EA0NTH,EA1NqBlD,OA2NvDx7K,OACAQ,OACAgL,OACAW,OACAC,OACA1M,EALAM,EAAMS,KAAKC,IAAI+9K,EAAMz+K,IAAK0+K,EAAM1+K,KAChCQ,EAASC,KAAK4T,IAAIoqK,EAAMj+K,OAAQk+K,EAAMl+K,QACtCgL,EAAO/K,KAAKC,IAAI+9K,EAAMjzK,KAAMkzK,EAAMlzK,MAGlC9L,EAASc,EAASR,EAhOlBw7K,GA+NApvK,GADAD,EAAQ1L,KAAK4T,IAAIoqK,EAAMtyK,MAAOuyK,EAAMvyK,QACpBX,IAGH,GAAK9L,GAAU,GAAM,CACpCM,IAAKA,EACLQ,OAAQA,EACRgL,KAAMA,EACNW,MAAOA,EACPC,MAAOA,EACP1M,OAAQA,IACL,OAvOE87K,EAAkB,MACvBt5K,EAASA,GAAUy8K,EAAcz8K,EACnC,CACA,OAAOs5K,CAlEsD,CAmE/D,EAQAN,EAAqB/9K,UAAU0gL,aAAe,WAC5C,IAAID,EACJ,GAAIpgL,KAAKi1B,OAASwsJ,EAAMzhL,KAAKi1B,MAC3BmrJ,EAAWvvK,EAAsB7Q,KAAKi1B,UACjC,CAEL,IAAIxS,EAAMg/J,EAAMzhL,KAAKi1B,MAAQj1B,KAAKi1B,KAAOr0B,EACrCyI,EAAOoZ,EAAIrd,gBACXjC,EAAOsf,EAAItf,KACfi9K,EAAW,CACT59K,IAAK,EACLwL,KAAM,EACNW,MAAOtF,EAAKu4F,aAAez+F,EAAKy+F,YAChChzF,MAAOvF,EAAKu4F,aAAez+F,EAAKy+F,YAChC5+F,OAAQqG,EAAK61E,cAAgB/7E,EAAK+7E,aAClCh9E,OAAQmH,EAAK61E,cAAgB/7E,EAAK+7E,aAEtC,CACA,OAAOl/E,KAAK0hL,wBAAwBtB,EACtC,EASA1C,EAAqB/9K,UAAU+hL,wBAA0B,SAAShkI,GAChE,IAAI0hI,EAAUp/K,KAAK2hL,kBAAkB/5K,KAAI,SAASklC,EAAQ7lC,GACxD,MAAsB,MAAf6lC,EAAOxO,KAAewO,EAAO/lC,MAChC+lC,EAAO/lC,OAASE,EAAI,EAAIy2C,EAAK9uC,MAAQ8uC,EAAKx7C,QAAU,GAC1D,IACI0/K,EAAU,CACZp/K,IAAKk7C,EAAKl7C,IAAM48K,EAAQ,GACxBzwK,MAAO+uC,EAAK/uC,MAAQywK,EAAQ,GAC5Bp8K,OAAQ06C,EAAK16C,OAASo8K,EAAQ,GAC9BpxK,KAAM0vC,EAAK1vC,KAAOoxK,EAAQ,IAK5B,OAHAwC,EAAQhzK,MAAQgzK,EAAQjzK,MAAQizK,EAAQ5zK,KACxC4zK,EAAQ1/K,OAAS0/K,EAAQ5+K,OAAS4+K,EAAQp/K,IAEnCo/K,CACT,EAaAlE,EAAqB/9K,UAAUmhL,qBAC3B,SAASL,EAAUG,GAIrB,IAAIiB,EAAWpB,GAAYA,EAASM,eAChCN,EAAStD,mBAAqB,GAAK,EACnC2E,EAAWlB,EAASG,eACpBH,EAASzD,mBAAqB,GAAK,EAGvC,GAAI0E,IAAaC,EAEjB,IAAK,IAAI76K,EAAI,EAAGA,EAAIjH,KAAKwf,WAAW/a,OAAQwC,IAAK,CAC/C,IAAIwlJ,EAAYzsJ,KAAKwf,WAAWvY,GAIhC,GAAIwlJ,GAAao1B,GAAYp1B,GAAaq1B,GACtCr1B,EAAYo1B,GAAap1B,EAAYq1B,EACvC,OAAO,CAEX,CACF,EAQApE,EAAqB/9K,UAAUwgL,aAAe,WAC5C,OAAQngL,KAAKi1B,MAAQ8sJ,EAAanhL,EAAUZ,KAAKi1B,KACnD,EASAyoJ,EAAqB/9K,UAAU6gL,oBAAsB,SAAS7/K,GAC5D,IAAIk/K,EACD7/K,KAAKi1B,OAASj1B,KAAKi1B,KAAK1nB,eAAiBvN,KAAKi1B,OAAUr0B,EAC3D,OACEmhL,EAAalC,EAASl/K,MACpBX,KAAKi1B,MAAQ4qJ,GAAWl/K,EAAO4M,cAErC,EAQAmwK,EAAqB/9K,UAAU4+K,kBAAoB,WAC7ChB,EAASr8J,QAAQlhB,MAAQ,GAC3Bu9K,EAASroK,KAAKlV,KAElB,EAOA09K,EAAqB/9K,UAAUg/K,oBAAsB,WACnD,IAAI94K,EAAQ03K,EAASr8J,QAAQlhB,OACf,GAAV6F,GAAa03K,EAASx5J,OAAOle,EAAO,EAC1C,EA2PA9D,OAAO27K,qBAAuBA,EAC9B37K,OAAOm7K,0BAA4BA,CAl9BnC,CAOA,SAASI,EAAgB76J,GACvB,IACE,OAAOA,EAAIkJ,aAAelJ,EAAIkJ,YAAYq2J,cAAgB,IAC5D,CAAE,MAAOz+K,GAEP,OAAO,IACT,CACF,CA2CA,SAAS25K,EAA0Bz3H,GACjCzlD,KAAK2xC,KAAO8T,EAAM9T,KAClB3xC,KAAKW,OAAS8kD,EAAM9kD,OACpBX,KAAK2gL,WAAasB,EAAcx8H,EAAMk7H,YACtC3gL,KAAK+9K,mBAAqBkE,EAAcx8H,EAAMs4H,oBAC9C/9K,KAAKg+K,iBAAmBiE,EAAcx8H,EAAMu4H,kBA8xBrC,CACLx7K,IAAK,EACLQ,OAAQ,EACRgL,KAAM,EACNW,MAAO,EACPC,MAAO,EACP1M,OAAQ,IAnyBVlC,KAAK+gL,iBAAmBt7H,EAAMu4H,iBAG9B,IAAIsC,EAAatgL,KAAK+9K,mBAClBmE,EAAa5B,EAAW1xK,MAAQ0xK,EAAWp+K,OAC3C87K,EAAmBh+K,KAAKg+K,iBACxBmE,EAAmBnE,EAAiBpvK,MAAQovK,EAAiB97K,OAM/DlC,KAAKm9K,kBAHH+E,EAGuB1lK,QAAQ2lK,EAAmBD,GAAYvhH,QAAQ,IAG/C3gE,KAAK+gL,eAAiB,EAAI,CAEvD,CAYA,SAASrD,EAAqBltK,EAAU4xK,GAEtC,IA6oBgBv+K,EAAI8E,EAChBgnC,EA9oBAnvC,EAAU4hL,GAAe,CAAC,EAE9B,GAAuB,mBAAZ5xK,EACT,MAAM,IAAI3E,MAAM,+BAGlB,GACErL,EAAQy0B,MACiB,GAAzBz0B,EAAQy0B,KAAKjT,UACY,GAAzBxhB,EAAQy0B,KAAKjT,SAEb,MAAM,IAAInW,MAAM,sCAIlB7L,KAAKm+K,wBA8nBWt6K,EA7nBZ7D,KAAKm+K,uBAAuBzuI,KAAK1vC,MA6nBjB2I,EA7nBwB3I,KAAK29K,iBA8nB7ChuI,EAAQ,KACL,WACAA,IACHA,EAAQ7sC,YAAW,WACjBe,IACA8rC,EAAQ,IACV,GAAGhnC,GAEP,GAnoBA3I,KAAKghL,UAAYxwK,EACjBxQ,KAAKs+K,oBAAsB,GAC3Bt+K,KAAK++K,eAAiB,GACtB/+K,KAAK2hL,kBAAoB3hL,KAAKk/K,iBAAiB1+K,EAAQ6hL,YAGvDriL,KAAKwf,WAAaxf,KAAKg/K,gBAAgBx+K,EAAQisJ,WAC/CzsJ,KAAKi1B,KAAOz0B,EAAQy0B,MAAQ,KAC5Bj1B,KAAKqiL,WAAariL,KAAK2hL,kBAAkB/5K,KAAI,SAASklC,GACpD,OAAOA,EAAO/lC,MAAQ+lC,EAAOxO,IAC/B,IAAGlmB,KAAK,KAGRpY,KAAKq/K,qBAAuB,GAE5Br/K,KAAK4/K,wBAA0B,EACjC,CA+nBA,SAASJ,EAASh9J,EAAMvP,EAAOpP,EAAIy+K,GACG,mBAAzB9/J,EAAKoJ,iBACdpJ,EAAKoJ,iBAAiB3Y,EAAOpP,EAAIy+K,IAAkB,GAEjB,mBAApB9/J,EAAKqJ,aACnBrJ,EAAKqJ,YAAY,KAAO5Y,EAAOpP,EAEnC,CAWA,SAAS2+B,EAAYhgB,EAAMvP,EAAOpP,EAAIy+K,GACG,mBAA5B9/J,EAAKoY,oBACdpY,EAAKoY,oBAAoB3nB,EAAOpP,EAAIy+K,IAAkB,GAEnB,mBAArB9/J,EAAK+/J,cACnB//J,EAAK+/J,aAAa,KAAOtvK,EAAOpP,EAEpC,CAkCA,SAASgN,EAAsBhJ,GAC7B,IAAI61C,EAEJ,IACEA,EAAO71C,EAAGgJ,uBACZ,CAAE,MAAOmwB,GAEP,CAGF,OAAK0c,GAGCA,EAAK9uC,OAAS8uC,EAAKx7C,SACvBw7C,EAAO,CACLl7C,IAAKk7C,EAAKl7C,IACVmM,MAAO+uC,EAAK/uC,MACZ3L,OAAQ06C,EAAK16C,OACbgL,KAAM0vC,EAAK1vC,KACXY,MAAO8uC,EAAK/uC,MAAQ+uC,EAAK1vC,KACzB9L,OAAQw7C,EAAK16C,OAAS06C,EAAKl7C,MAGxBk7C,GAUA,CACLl7C,IAAK,EACLQ,OAAQ,EACRgL,KAAM,EACNW,MAAO,EACPC,MAAO,EACP1M,OAAQ,EAfZ,CA2BA,SAAS+/K,EAAcvkI,GAErB,OAAKA,GAAQ,MAAOA,EACXA,EAMF,CACLl7C,IAAKk7C,EAAKl7C,IACVqV,EAAG6lC,EAAKl7C,IACRQ,OAAQ06C,EAAK16C,OACbgL,KAAM0vC,EAAK1vC,KACX4L,EAAG8jC,EAAK1vC,KACRW,MAAO+uC,EAAK/uC,MACZC,MAAO8uC,EAAK9uC,MACZ1M,OAAQw7C,EAAKx7C,OAEjB,CAUA,SAAS+7K,EAAsBuE,EAAoBC,GACjD,IAAIjgL,EAAMigL,EAAuBjgL,IAAMggL,EAAmBhgL,IACtDwL,EAAOy0K,EAAuBz0K,KAAOw0K,EAAmBx0K,KAC5D,MAAO,CACLxL,IAAKA,EACLwL,KAAMA,EACN9L,OAAQugL,EAAuBvgL,OAC/B0M,MAAO6zK,EAAuB7zK,MAC9B5L,OAAQR,EAAMigL,EAAuBvgL,OACrCyM,MAAOX,EAAOy0K,EAAuB7zK,MAEzC,CAUA,SAASmzK,EAAar9K,EAAQg+C,GAE5B,IADA,IAAIlgC,EAAOkgC,EACJlgC,GAAM,CACX,GAAIA,GAAQ9d,EAAQ,OAAO,EAE3B8d,EAAO2+J,EAAc3+J,EACvB,CACA,OAAO,CACT,CASA,SAAS2+J,EAAc3+J,GACrB,IAAI9d,EAAS8d,EAAKja,WAElB,OAAoC,GAAhCia,EAAKR,UAAgCQ,GAAQ5hB,EAExC08K,EAAgB96J,IAIrB9d,GAAUA,EAAO6zF,eACnB7zF,EAASA,EAAO6zF,aAAahwF,YAG3B7D,GAA6B,IAAnBA,EAAOsd,UAAkBtd,EAAO20C,KAErC30C,EAAO20C,KAGT30C,EACT,CAOA,SAAS+8K,EAAMj/J,GACb,OAAOA,GAA0B,IAAlBA,EAAKR,QACtB,CAOC,CA7+BA,E,iBCRD,IAAI0gK,EAAYxjI,EAAQ,MACpByjI,EAAazjI,EAAQ,MACrB0jI,EAAU1jI,EAAQ,KAClB2jI,EAAU3jI,EAAQ,MAClB4jI,EAAU5jI,EAAQ,MAStB,SAAS6jI,EAAKx9H,GACZ,IAAI1/C,GAAS,EACTpB,EAAoB,MAAX8gD,EAAkB,EAAIA,EAAQ9gD,OAG3C,IADAzE,KAAKiU,UACIpO,EAAQpB,GAAQ,CACvB,IAAIghD,EAAQF,EAAQ1/C,GACpB7F,KAAK8b,IAAI2pC,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAs9H,EAAKpjL,UAAUsU,MAAQyuK,EACvBK,EAAKpjL,UAAkB,OAAIgjL,EAC3BI,EAAKpjL,UAAU4c,IAAMqmK,EACrBG,EAAKpjL,UAAU+1B,IAAMmtJ,EACrBE,EAAKpjL,UAAUmc,IAAMgnK,EAErBprK,EAAOC,QAAUorK,C,iBC/BjB,IAAIC,EAAiB9jI,EAAQ,MACzB+jI,EAAkB/jI,EAAQ,MAC1BgkI,EAAehkI,EAAQ,MACvBikI,EAAejkI,EAAQ,MACvBkkI,EAAelkI,EAAQ,MAS3B,SAASmkI,EAAU99H,GACjB,IAAI1/C,GAAS,EACTpB,EAAoB,MAAX8gD,EAAkB,EAAIA,EAAQ9gD,OAG3C,IADAzE,KAAKiU,UACIpO,EAAQpB,GAAQ,CACvB,IAAIghD,EAAQF,EAAQ1/C,GACpB7F,KAAK8b,IAAI2pC,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGA49H,EAAU1jL,UAAUsU,MAAQ+uK,EAC5BK,EAAU1jL,UAAkB,OAAIsjL,EAChCI,EAAU1jL,UAAU4c,IAAM2mK,EAC1BG,EAAU1jL,UAAU+1B,IAAMytJ,EAC1BE,EAAU1jL,UAAUmc,IAAMsnK,EAE1B1rK,EAAOC,QAAU0rK,C,iBC/BjB,IAII3jG,EAJYxgC,EAAQ,KAIdokI,CAHCpkI,EAAQ,MAGO,OAE1BxnC,EAAOC,QAAU+nE,C,gBCNjB,IAAI6jG,EAAgBrkI,EAAQ,MACxBskI,EAAiBtkI,EAAQ,MACzBukI,EAAcvkI,EAAQ,MACtBwkI,EAAcxkI,EAAQ,MACtBykI,EAAczkI,EAAQ,MAS1B,SAAS0kI,EAASr+H,GAChB,IAAI1/C,GAAS,EACTpB,EAAoB,MAAX8gD,EAAkB,EAAIA,EAAQ9gD,OAG3C,IADAzE,KAAKiU,UACIpO,EAAQpB,GAAQ,CACvB,IAAIghD,EAAQF,EAAQ1/C,GACpB7F,KAAK8b,IAAI2pC,EAAM,GAAIA,EAAM,GAC3B,CACF,CAGAm+H,EAASjkL,UAAUsU,MAAQsvK,EAC3BK,EAASjkL,UAAkB,OAAI6jL,EAC/BI,EAASjkL,UAAU4c,IAAMknK,EACzBG,EAASjkL,UAAU+1B,IAAMguJ,EACzBE,EAASjkL,UAAUmc,IAAM6nK,EAEzBjsK,EAAOC,QAAUisK,C,iBC/BjB,IAGIx+J,EAHO85B,EAAQ,MAGD95B,OAElB1N,EAAOC,QAAUyN,C,WCejB1N,EAAOC,QAXP,SAAkBgK,EAAOkiK,GAKvB,IAJA,IAAIh+K,GAAS,EACTpB,EAAkB,MAATkd,EAAgB,EAAIA,EAAMld,OACnCgqB,EAAS/uB,MAAM+E,KAEVoB,EAAQpB,GACfgqB,EAAO5oB,GAASg+K,EAASliK,EAAM9b,GAAQA,EAAO8b,GAEhD,OAAO8M,CACT,C,iBClBA,IAAI3oB,EAAKo5C,EAAQ,MAoBjBxnC,EAAOC,QAVP,SAAsBgK,EAAO7U,GAE3B,IADA,IAAIrI,EAASkd,EAAMld,OACZA,KACL,GAAIqB,EAAG6b,EAAMld,GAAQ,GAAIqI,GACvB,OAAOrI,EAGX,OAAQ,CACV,C,iBClBA,IAAIq/K,EAAW5kI,EAAQ,MACnB6kI,EAAQ7kI,EAAQ,MAsBpBxnC,EAAOC,QAZP,SAAiBwf,EAAQkpB,GAMvB,IAHA,IAAIx6C,EAAQ,EACRpB,GAHJ47C,EAAOyjI,EAASzjI,EAAMlpB,IAGJ1yB,OAED,MAAV0yB,GAAkBtxB,EAAQpB,GAC/B0yB,EAASA,EAAO4sJ,EAAM1jI,EAAKx6C,OAE7B,OAAQA,GAASA,GAASpB,EAAU0yB,OAASrkB,CAC/C,C,iBCrBA,IAAIsS,EAAS85B,EAAQ,MACjB8kI,EAAY9kI,EAAQ,MACpB+kI,EAAiB/kI,EAAQ,MAOzBglI,EAAiB9+J,EAASA,EAAOuuC,iBAAc7gD,EAkBnD4E,EAAOC,QATP,SAAoB5Q,GAClB,OAAa,MAATA,OACe+L,IAAV/L,EAdQ,qBADL,gBAiBJm9K,GAAkBA,KAAkBziK,OAAO1a,GAC/Ci9K,EAAUj9K,GACVk9K,EAAel9K,EACrB,C,iBCzBA,IAAIyE,EAAa0zC,EAAQ,MACrBilI,EAAWjlI,EAAQ,MACnBod,EAAWpd,EAAQ,MACnBklI,EAAWllI,EAAQ,MASnBmlI,EAAe,8BAGfC,EAAYvkK,SAASpgB,UACrB4kL,EAAc9iK,OAAO9hB,UAGrB6kL,EAAeF,EAAU/oK,SAGzB9O,EAAiB83K,EAAY93K,eAG7Bg4K,EAAaz9K,OAAO,IACtBw9K,EAAazkL,KAAK0M,GAAgB9I,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhF+T,EAAOC,QARP,SAAsB5Q,GACpB,SAAKu1D,EAASv1D,IAAUo9K,EAASp9K,MAGnByE,EAAWzE,GAAS09K,EAAaJ,GAChC9/K,KAAK6/K,EAASr9K,GAC/B,C,iBC5CA,IAAIqe,EAAS85B,EAAQ,MACjBwlI,EAAWxlI,EAAQ,MACnB9+C,EAAU8+C,EAAQ,MAClBylI,EAAWzlI,EAAQ,MAMnB0lI,EAAcx/J,EAASA,EAAOzlB,eAAYmT,EAC1C+xK,EAAiBD,EAAcA,EAAYrpK,cAAWzI,EA0B1D4E,EAAOC,QAhBP,SAASmtK,EAAa/9K,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI3G,EAAQ2G,GAEV,OAAO29K,EAAS39K,EAAO+9K,GAAgB,GAEzC,GAAIH,EAAS59K,GACX,OAAO89K,EAAiBA,EAAe9kL,KAAKgH,GAAS,GAEvD,IAAI0nB,EAAU1nB,EAAQ,GACtB,MAAkB,KAAV0nB,GAAkB,EAAI1nB,IA3BjB,IA2BwC,KAAO0nB,CAC9D,C,iBClCA,IAAIruB,EAAU8+C,EAAQ,MAClB6lI,EAAQ7lI,EAAQ,MAChBs9H,EAAet9H,EAAQ,MACvB3jC,EAAW2jC,EAAQ,IAiBvBxnC,EAAOC,QAPP,SAAkB5Q,EAAOowB,GACvB,OAAI/2B,EAAQ2G,GACHA,EAEFg+K,EAAMh+K,EAAOowB,GAAU,CAACpwB,GAASy1K,EAAajhK,EAASxU,GAChE,C,iBClBA,IAGIi+K,EAHO9lI,EAAQ,MAGG,sBAEtBxnC,EAAOC,QAAUqtK,C,iBCJjB,IAAIC,EAA8B,iBAAVjlK,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAOyB,SAAWA,QAAUzB,EAAAA,EAEpFtI,EAAOC,QAAUstK,C,iBCHjB,IAAIC,EAAYhmI,EAAQ,MAiBxBxnC,EAAOC,QAPP,SAAoB/P,EAAKkF,GACvB,IAAInL,EAAOiG,EAAIu9K,SACf,OAAOD,EAAUp4K,GACbnL,EAAmB,iBAAPmL,EAAkB,SAAW,QACzCnL,EAAKiG,GACX,C,iBCfA,IAAIw9K,EAAelmI,EAAQ,MACvBkjC,EAAWljC,EAAQ,MAevBxnC,EAAOC,QALP,SAAmBwf,EAAQrqB,GACzB,IAAI/F,EAAQq7E,EAASjrD,EAAQrqB,GAC7B,OAAOs4K,EAAar+K,GAASA,OAAQ+L,CACvC,C,iBCdA,IAAIsS,EAAS85B,EAAQ,MAGjBqlI,EAAc9iK,OAAO9hB,UAGrB8M,EAAiB83K,EAAY93K,eAO7B44K,EAAuBd,EAAYhpK,SAGnC2oK,EAAiB9+J,EAASA,EAAOuuC,iBAAc7gD,EA6BnD4E,EAAOC,QApBP,SAAmB5Q,GACjB,IAAI61K,EAAQnwK,EAAe1M,KAAKgH,EAAOm9K,GACnC93J,EAAMrlB,EAAMm9K,GAEhB,IACEn9K,EAAMm9K,QAAkBpxK,EACxB,IAAIwyK,GAAW,CACjB,CAAE,MAAO/hL,GAAI,CAEb,IAAIkrB,EAAS42J,EAAqBtlL,KAAKgH,GAQvC,OAPIu+K,IACE1I,EACF71K,EAAMm9K,GAAkB93J,SAEjBrlB,EAAMm9K,IAGVz1J,CACT,C,WC/BA/W,EAAOC,QAJP,SAAkBwf,EAAQrqB,GACxB,OAAiB,MAAVqqB,OAAiBrkB,EAAYqkB,EAAOrqB,EAC7C,C,iBCVA,IAAIy4K,EAAermI,EAAQ,MAc3BxnC,EAAOC,QALP,WACE3X,KAAKmlL,SAAWI,EAAeA,EAAa,MAAQ,CAAC,EACrDvlL,KAAK6V,KAAO,CACd,C,WCIA6B,EAAOC,QANP,SAAoB7K,GAClB,IAAI2hB,EAASzuB,KAAK01B,IAAI5oB,WAAe9M,KAAKmlL,SAASr4K,GAEnD,OADA9M,KAAK6V,MAAQ4Y,EAAS,EAAI,EACnBA,CACT,C,gBCdA,IAAI82J,EAAermI,EAAQ,MASvBzyC,EAHcgV,OAAO9hB,UAGQ8M,eAoBjCiL,EAAOC,QATP,SAAiB7K,GACf,IAAInL,EAAO3B,KAAKmlL,SAChB,GAAII,EAAc,CAChB,IAAI92J,EAAS9sB,EAAKmL,GAClB,MArBiB,8BAqBV2hB,OAA4B3b,EAAY2b,CACjD,CACA,OAAOhiB,EAAe1M,KAAK4B,EAAMmL,GAAOnL,EAAKmL,QAAOgG,CACtD,C,iBC3BA,IAAIyyK,EAAermI,EAAQ,MAMvBzyC,EAHcgV,OAAO9hB,UAGQ8M,eAgBjCiL,EAAOC,QALP,SAAiB7K,GACf,IAAInL,EAAO3B,KAAKmlL,SAChB,OAAOI,OAA8BzyK,IAAdnR,EAAKmL,GAAsBL,EAAe1M,KAAK4B,EAAMmL,EAC9E,C,iBCpBA,IAAIy4K,EAAermI,EAAQ,MAsB3BxnC,EAAOC,QAPP,SAAiB7K,EAAK/F,GACpB,IAAIpF,EAAO3B,KAAKmlL,SAGhB,OAFAnlL,KAAK6V,MAAQ7V,KAAK01B,IAAI5oB,GAAO,EAAI,EACjCnL,EAAKmL,GAAQy4K,QAA0BzyK,IAAV/L,EAfV,4BAekDA,EAC9D/G,IACT,C,iBCpBA,IAAII,EAAU8+C,EAAQ,MAClBylI,EAAWzlI,EAAQ,MAGnBsmI,EAAe,mDACfC,EAAgB,QAuBpB/tK,EAAOC,QAbP,SAAe5Q,EAAOowB,GACpB,GAAI/2B,EAAQ2G,GACV,OAAO,EAET,IAAI/B,SAAc+B,EAClB,QAAY,UAAR/B,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAAT+B,IAAiB49K,EAAS59K,KAGvB0+K,EAAclhL,KAAKwC,KAAWy+K,EAAajhL,KAAKwC,IAC1C,MAAVowB,GAAkBpwB,KAAS0a,OAAO0V,EACvC,C,WCZAzf,EAAOC,QAPP,SAAmB5Q,GACjB,IAAI/B,SAAc+B,EAClB,MAAgB,UAAR/B,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV+B,EACU,OAAVA,CACP,C,iBCZA,IAIMk1B,EAJF+oJ,EAAa9lI,EAAQ,MAGrBwmI,GACEzpJ,EAAM,SAASvS,KAAKs7J,GAAcA,EAAW9kK,MAAQ8kK,EAAW9kK,KAAKylK,UAAY,KACvE,iBAAmB1pJ,EAAO,GAc1CvkB,EAAOC,QAJP,SAAkBwgB,GAChB,QAASutJ,GAAeA,KAAcvtJ,CACxC,C,WCLAzgB,EAAOC,QALP,WACE3X,KAAKmlL,SAAW,GAChBnlL,KAAK6V,KAAO,CACd,C,iBCVA,IAAI+vK,EAAe1mI,EAAQ,MAMvBn7B,EAHarkB,MAAMC,UAGCokB,OA4BxBrM,EAAOC,QAjBP,SAAyB7K,GACvB,IAAInL,EAAO3B,KAAKmlL,SACZt/K,EAAQ+/K,EAAajkL,EAAMmL,GAE/B,QAAIjH,EAAQ,IAIRA,GADYlE,EAAK8C,OAAS,EAE5B9C,EAAKiU,MAELmO,EAAOhkB,KAAK4B,EAAMkE,EAAO,KAEzB7F,KAAK6V,KACA,GACT,C,iBChCA,IAAI+vK,EAAe1mI,EAAQ,MAkB3BxnC,EAAOC,QAPP,SAAsB7K,GACpB,IAAInL,EAAO3B,KAAKmlL,SACZt/K,EAAQ+/K,EAAajkL,EAAMmL,GAE/B,OAAOjH,EAAQ,OAAIiN,EAAYnR,EAAKkE,GAAO,EAC7C,C,iBChBA,IAAI+/K,EAAe1mI,EAAQ,MAe3BxnC,EAAOC,QAJP,SAAsB7K,GACpB,OAAO84K,EAAa5lL,KAAKmlL,SAAUr4K,IAAQ,CAC7C,C,iBCbA,IAAI84K,EAAe1mI,EAAQ,MAyB3BxnC,EAAOC,QAbP,SAAsB7K,EAAK/F,GACzB,IAAIpF,EAAO3B,KAAKmlL,SACZt/K,EAAQ+/K,EAAajkL,EAAMmL,GAQ/B,OANIjH,EAAQ,KACR7F,KAAK6V,KACPlU,EAAKuT,KAAK,CAACpI,EAAK/F,KAEhBpF,EAAKkE,GAAO,GAAKkB,EAEZ/G,IACT,C,iBCvBA,IAAI+iL,EAAO7jI,EAAQ,MACfmkI,EAAYnkI,EAAQ,MACpBwgC,EAAMxgC,EAAQ,MAkBlBxnC,EAAOC,QATP,WACE3X,KAAK6V,KAAO,EACZ7V,KAAKmlL,SAAW,CACd,KAAQ,IAAIpC,EACZ,IAAO,IAAKrjG,GAAO2jG,GACnB,OAAU,IAAIN,EAElB,C,iBClBA,IAAI8C,EAAa3mI,EAAQ,MAiBzBxnC,EAAOC,QANP,SAAwB7K,GACtB,IAAI2hB,EAASo3J,EAAW7lL,KAAM8M,GAAa,OAAEA,GAE7C,OADA9M,KAAK6V,MAAQ4Y,EAAS,EAAI,EACnBA,CACT,C,iBCfA,IAAIo3J,EAAa3mI,EAAQ,MAezBxnC,EAAOC,QAJP,SAAqB7K,GACnB,OAAO+4K,EAAW7lL,KAAM8M,GAAKyP,IAAIzP,EACnC,C,iBCbA,IAAI+4K,EAAa3mI,EAAQ,MAezBxnC,EAAOC,QAJP,SAAqB7K,GACnB,OAAO+4K,EAAW7lL,KAAM8M,GAAK4oB,IAAI5oB,EACnC,C,iBCbA,IAAI+4K,EAAa3mI,EAAQ,MAqBzBxnC,EAAOC,QATP,SAAqB7K,EAAK/F,GACxB,IAAIpF,EAAOkkL,EAAW7lL,KAAM8M,GACxB+I,EAAOlU,EAAKkU,KAIhB,OAFAlU,EAAKma,IAAIhP,EAAK/F,GACd/G,KAAK6V,MAAQlU,EAAKkU,MAAQA,EAAO,EAAI,EAC9B7V,IACT,C,iBCnBA,IAAI+iG,EAAU7jD,EAAQ,MAyBtBxnC,EAAOC,QAZP,SAAuBwgB,GACrB,IAAI1J,EAASs0E,EAAQ5qE,GAAM,SAASrrB,GAIlC,OAfmB,MAYfsd,EAAMvU,MACRuU,EAAMnW,QAEDnH,CACT,IAEIsd,EAAQqE,EAAOrE,MACnB,OAAOqE,CACT,C,iBCvBA,IAGI82J,EAHYrmI,EAAQ,KAGLokI,CAAU7hK,OAAQ,UAErC/J,EAAOC,QAAU4tK,C,WCJjB,IAOIF,EAPc5jK,OAAO9hB,UAOc4b,SAavC7D,EAAOC,QAJP,SAAwB5Q,GACtB,OAAOs+K,EAAqBtlL,KAAKgH,EACnC,C,iBCnBA,IAAIk+K,EAAa/lI,EAAQ,MAGrB4mI,EAA0B,iBAAR94K,MAAoBA,MAAQA,KAAKyU,SAAWA,QAAUzU,KAGxEioB,EAAOgwJ,GAAca,GAAY/lK,SAAS,cAATA,GAErCrI,EAAOC,QAAUsd,C,iBCRjB,IAAI8wJ,EAAgB7mI,EAAQ,MAGxBi9H,EAAa,mGAGbC,EAAe,WASfI,EAAeuJ,GAAc,SAASlqJ,GACxC,IAAIpN,EAAS,GAOb,OAN6B,KAAzBoN,EAAOjT,WAAW,IACpB6F,EAAOvZ,KAAK,IAEd2mB,EAAOl4B,QAAQw4K,GAAY,SAASv1K,EAAO45D,EAAQygD,EAAOs7D,GACxD9tJ,EAAOvZ,KAAK+rG,EAAQs7D,EAAU54K,QAAQy4K,EAAc,MAAS57G,GAAU55D,EACzE,IACO6nB,CACT,IAEA/W,EAAOC,QAAU6kK,C,iBC1BjB,IAAImI,EAAWzlI,EAAQ,MAoBvBxnC,EAAOC,QARP,SAAe5Q,GACb,GAAoB,iBAATA,GAAqB49K,EAAS59K,GACvC,OAAOA,EAET,IAAI0nB,EAAU1nB,EAAQ,GACtB,MAAkB,KAAV0nB,GAAkB,EAAI1nB,IAdjB,IAcwC,KAAO0nB,CAC9D,C,WCjBA,IAGI+1J,EAHYzkK,SAASpgB,UAGI4b,SAqB7B7D,EAAOC,QAZP,SAAkBwgB,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOqsJ,EAAazkL,KAAKo4B,EAC3B,CAAE,MAAO50B,GAAI,CACb,IACE,OAAQ40B,EAAO,EACjB,CAAE,MAAO50B,GAAI,CACf,CACA,MAAO,EACT,C,WCaAmU,EAAOC,QAJP,SAAY5Q,EAAOu4I,GACjB,OAAOv4I,IAAUu4I,GAAUv4I,GAAUA,GAASu4I,GAAUA,CAC1D,C,iBClCA,IAAI0mC,EAAU9mI,EAAQ,MAgCtBxnC,EAAOC,QALP,SAAawf,EAAQkpB,EAAMlsB,GACzB,IAAI1F,EAAmB,MAAV0I,OAAiBrkB,EAAYkzK,EAAQ7uJ,EAAQkpB,GAC1D,YAAkBvtC,IAAX2b,EAAuB0F,EAAe1F,CAC/C,C,WCPA,IAAIruB,EAAUV,MAAMU,QAEpBsX,EAAOC,QAAUvX,C,iBCzBjB,IAAI6lL,EAAa/mI,EAAQ,MACrBod,EAAWpd,EAAQ,MAmCvBxnC,EAAOC,QAVP,SAAoB5Q,GAClB,IAAKu1D,EAASv1D,GACZ,OAAO,EAIT,IAAIqlB,EAAM65J,EAAWl/K,GACrB,MA5BY,qBA4BLqlB,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,CAC/D,C,WCJA1U,EAAOC,QALP,SAAkB5Q,GAChB,IAAI/B,SAAc+B,EAClB,OAAgB,MAATA,IAA0B,UAAR/B,GAA4B,YAARA,EAC/C,C,WCAA0S,EAAOC,QAJP,SAAsB5Q,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,C,iBC1BA,IAAIk/K,EAAa/mI,EAAQ,MACrBgnI,EAAehnI,EAAQ,MA2B3BxnC,EAAOC,QALP,SAAkB5Q,GAChB,MAAuB,iBAATA,GACXm/K,EAAan/K,IArBF,mBAqBYk/K,EAAWl/K,EACvC,C,iBC1BA,IAAI68K,EAAW1kI,EAAQ,KAiDvB,SAAS6jD,EAAQ5qE,EAAMoyE,GACrB,GAAmB,mBAARpyE,GAAmC,MAAZoyE,GAAuC,mBAAZA,EAC3D,MAAM,IAAInxE,UAhDQ,uBAkDpB,IAAI+sJ,EAAW,SAAXA,IACF,IAAI7sK,EAAO5F,UACP5G,EAAMy9F,EAAWA,EAAS92F,MAAMzT,KAAMsZ,GAAQA,EAAK,GACnD8Q,EAAQ+7J,EAAS/7J,MAErB,GAAIA,EAAMsL,IAAI5oB,GACZ,OAAOsd,EAAM7N,IAAIzP,GAEnB,IAAI2hB,EAAS0J,EAAK1kB,MAAMzT,KAAMsZ,GAE9B,OADA6sK,EAAS/7J,MAAQA,EAAMtO,IAAIhP,EAAK2hB,IAAWrE,EACpCqE,CACT,EAEA,OADA03J,EAAS/7J,MAAQ,IAAK24E,EAAQqjF,OAASxC,GAChCuC,CACT,CAGApjF,EAAQqjF,MAAQxC,EAEhBlsK,EAAOC,QAAUorF,C,eCxEjB,IAAI+hF,EAAe5lI,EAAQ,MA2B3BxnC,EAAOC,QAJP,SAAkB5Q,GAChB,OAAgB,MAATA,EAAgB,GAAK+9K,EAAa/9K,EAC3C,C,8BCvBA,IAAIs/K,EACJ,IAAK5kK,OAAOvB,KAAM,CAEjB,IAAIwV,EAAMjU,OAAO9hB,UAAU8M,eACvBwsK,EAAQx3J,OAAO9hB,UAAU4b,SACzB+qK,EAASpnI,EAAQ,MACjBqnI,EAAe9kK,OAAO9hB,UAAUs9K,qBAChCuJ,GAAkBD,EAAaxmL,KAAK,CAAEwb,SAAU,MAAQ,YACxDkrK,EAAkBF,EAAaxmL,MAAK,WAAa,GAAG,aACpD2mL,EAAY,CACf,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAEGC,EAA6B,SAAUl1K,GAC1C,IAAIqlD,EAAOrlD,EAAE7F,YACb,OAAOkrD,GAAQA,EAAKn3D,YAAc8R,CACnC,EACIm1K,EAAe,CAClBC,mBAAmB,EACnBC,UAAU,EACVC,WAAW,EACXC,QAAQ,EACRC,eAAe,EACfC,SAAS,EACTC,cAAc,EACdC,aAAa,EACbC,wBAAwB,EACxBC,uBAAuB,EACvBC,cAAc,EACdC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdljL,SAAS,EACTmjL,aAAa,EACbC,YAAY,EACZC,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,kBAAkB,EAClBC,oBAAoB,EACpBhoI,SAAS,GAENioI,EAA4B,WAE/B,GAAsB,oBAAXnmL,OAA0B,OAAO,EAC5C,IAAK,IAAIgT,KAAKhT,OACb,IACC,IAAK6kL,EAAa,IAAM7xK,IAAM2gB,EAAI31B,KAAKgC,OAAQgT,IAAoB,OAAdhT,OAAOgT,IAAoC,iBAAdhT,OAAOgT,GACxF,IACC4xK,EAA2B5kL,OAAOgT,GACnC,CAAE,MAAOxR,GACR,OAAO,CACR,CAEF,CAAE,MAAOA,GACR,OAAO,CACR,CAED,OAAO,CACR,CAjBgC,GA8BhC8iL,EAAW,SAAclvJ,GACxB,IAAImlC,EAAsB,OAAXnlC,GAAqC,iBAAXA,EACrC3rB,EAAoC,sBAAvBytK,EAAMl5K,KAAKo3B,GACxBgxJ,EAAc7B,EAAOnvJ,GACrB0qH,EAAWvlF,GAAmC,oBAAvB28G,EAAMl5K,KAAKo3B,GAClCixJ,EAAU,GAEd,IAAK9rH,IAAa9wD,IAAe28K,EAChC,MAAM,IAAI/uJ,UAAU,sCAGrB,IAAIivJ,EAAY5B,GAAmBj7K,EACnC,GAAIq2I,GAAY1qH,EAAO1yB,OAAS,IAAMixB,EAAI31B,KAAKo3B,EAAQ,GACtD,IAAK,IAAIlwB,EAAI,EAAGA,EAAIkwB,EAAO1yB,SAAUwC,EACpCmhL,EAAQlzK,KAAKiD,OAAOlR,IAItB,GAAIkhL,GAAehxJ,EAAO1yB,OAAS,EAClC,IAAK,IAAI2D,EAAI,EAAGA,EAAI+uB,EAAO1yB,SAAU2D,EACpCggL,EAAQlzK,KAAKiD,OAAO/P,SAGrB,IAAK,IAAIyK,KAAQskB,EACVkxJ,GAAsB,cAATx1K,IAAyB6iB,EAAI31B,KAAKo3B,EAAQtkB,IAC5Du1K,EAAQlzK,KAAKiD,OAAOtF,IAKvB,GAAI2zK,EAGH,IAFA,IAAI8B,EA3CqC,SAAU72K,GAEpD,GAAsB,oBAAX1P,SAA2BmmL,EACrC,OAAOvB,EAA2Bl1K,GAEnC,IACC,OAAOk1K,EAA2Bl1K,EACnC,CAAE,MAAOlO,GACR,OAAO,CACR,CACD,CAiCwBglL,CAAqCpxJ,GAElDpiB,EAAI,EAAGA,EAAI2xK,EAAUjiL,SAAUsQ,EACjCuzK,GAAoC,gBAAjB5B,EAAU3xK,KAAyB2gB,EAAI31B,KAAKo3B,EAAQuvJ,EAAU3xK,KACtFqzK,EAAQlzK,KAAKwxK,EAAU3xK,IAI1B,OAAOqzK,CACR,CACD,CACA1wK,EAAOC,QAAU0uK,C,8BCvHjB,IAAI9wK,EAAQ7V,MAAMC,UAAU4V,MACxB+wK,EAASpnI,EAAQ,MAEjBspI,EAAW/mK,OAAOvB,KAClBmmK,EAAWmC,EAAW,SAAc/2K,GAAK,OAAO+2K,EAAS/2K,EAAI,EAAIytC,EAAQ,MAEzEupI,EAAehnK,OAAOvB,KAE1BmmK,EAASqC,KAAO,WACf,GAAIjnK,OAAOvB,KAAM,CAChB,IAAIyoK,EAA0B,WAE7B,IAAIrvK,EAAOmI,OAAOvB,KAAKxM,WACvB,OAAO4F,GAAQA,EAAK7U,SAAWiP,UAAUjP,MAC1C,CAJ8B,CAI5B,EAAG,GACAkkL,IACJlnK,OAAOvB,KAAO,SAAciX,GAC3B,OAAImvJ,EAAOnvJ,GACHsxJ,EAAalzK,EAAMxV,KAAKo3B,IAEzBsxJ,EAAatxJ,EACrB,EAEF,MACC1V,OAAOvB,KAAOmmK,EAEf,OAAO5kK,OAAOvB,MAAQmmK,CACvB,EAEA3uK,EAAOC,QAAU0uK,C,wBC7BjB,IAAIpN,EAAQx3J,OAAO9hB,UAAU4b,SAE7B7D,EAAOC,QAAU,SAAqB5Q,GACrC,IAAIy4D,EAAMy5G,EAAMl5K,KAAKgH,GACjBu/K,EAAiB,uBAAR9mH,EASb,OARK8mH,IACJA,EAAiB,mBAAR9mH,GACE,OAAVz4D,GACiB,iBAAVA,GACiB,iBAAjBA,EAAMtC,QACbsC,EAAMtC,QAAU,GACa,sBAA7Bw0K,EAAMl5K,KAAKgH,EAAM6hL,SAEZtC,CACR,C,8BCdApnI,EAAQ,KAARA,E,8BCCA,IAAIh/B,EAAOg/B,EAAQ,MAIf85H,EAAa95H,EAAQ,KAARA,GACb2pI,EAAY3pI,EAAQ,MACpB8d,EAAWv7C,OACXqnK,EAAQD,EAAU,wBAClBE,EAAoBF,EAAU,yCAC9BG,EAAqBhQ,EAAav3J,OAAO+3J,sBAAwB,KAGrE9hK,EAAOC,QAAU,SAAgBhX,EAAQsoL,GACxC,GAXO,MAWUtoL,EAAW,MAAM,IAAIy4B,UAAU,4BAZ/B,IAcbtuB,EAAGyyB,EAAQt2B,EAAG2I,EAAOotK,EAAMj2K,EAAO+F,EADlCo8K,EAAYlsH,EAASr8D,GAEzB,IAAKmK,EAAI,EAAGA,EAAI4I,UAAUjP,SAAUqG,EAAG,CACtCyyB,EAASy/B,EAAStpD,UAAU5I,IAC5B8E,EAAQsQ,EAAKqd,GACb,IAAI4rJ,EAAanQ,IAAev3J,OAAO+3J,uBAAyBwP,GAChE,GAAIG,EAEH,IADAnM,EAAOmM,EAAW5rJ,GACbt2B,EAAI,EAAGA,EAAI+1K,EAAKv4K,SAAUwC,EAC9B6F,EAAMkwK,EAAK/1K,GACP8hL,EAAkBxrJ,EAAQzwB,IAC7Bg8K,EAAMl5K,EAAO9C,GAIhB,IAAK7F,EAAI,EAAGA,EAAI2I,EAAMnL,SAAUwC,EAE/BF,EAAQw2B,EADRzwB,EAAM8C,EAAM3I,IAER8hL,EAAkBxrJ,EAAQzwB,KAC7Bo8K,EAAUp8K,GAAO/F,EAGpB,CACA,OAAOmiL,CACR,C,8BCvCA,IAAI3hL,EAAiB23C,EAAQ,MAyC7BxnC,EAAOC,QAAU,WAChB,OAAK8J,OAAOs+B,OAxCqB,WACjC,IAAKt+B,OAAOs+B,OACX,OAAO,EASR,IAHA,IAAIyf,EAAM,uBACN4pH,EAAU5pH,EAAIzzD,MAAM,IACpBnE,EAAM,CAAC,EACFX,EAAI,EAAGA,EAAImiL,EAAQ3kL,SAAUwC,EACrCW,EAAIwhL,EAAQniL,IAAMmiL,EAAQniL,GAE3B,IAAI8F,EAAM0U,OAAOs+B,OAAO,CAAC,EAAGn4C,GACxByhL,EAAS,GACb,IAAK,IAAIt0K,KAAKhI,EACbs8K,GAAUt0K,EAEX,OAAOyqD,IAAQ6pH,CAChB,CAuBKC,IArB4B,WAChC,IAAK7nK,OAAOs+B,SAAWt+B,OAAO8nK,kBAC7B,OAAO,EAMR,IAAIC,EAAU/nK,OAAO8nK,kBAAkB,CAAE,EAAG,IAC5C,IACC9nK,OAAOs+B,OAAOypI,EAAS,KACxB,CAAE,MAAOjmL,GACR,MAAsB,MAAfimL,EAAQ,EAChB,CACA,OAAO,CACR,CASKC,GAFIliL,EAKDka,OAAOs+B,OARNx4C,CAST,C,8BCpDA,IAAIqsD,EAAS1U,EAAQ,MACjBwqI,EAAcxqI,EAAQ,MAE1BxnC,EAAOC,QAAU,WAChB,IAAIgyK,EAAWD,IAMf,OALA91H,EACCnyC,OACA,CAAEs+B,OAAQ4pI,GACV,CAAE5pI,OAAQ,WAAc,OAAOt+B,OAAOs+B,SAAW4pI,CAAU,IAErDA,CACR,C,GCZIpxH,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU/gD,EAAQA,EAAOC,QAAS6gD,GAG/C9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB1jD,EAAI,WACvB,GAA0B,iBAAfgL,WAAyB,OAAOA,WAC3C,IACC,OAAO9f,MAAQ,IAAI+f,SAAS,cAAb,EAChB,CAAE,MAAOxc,GACR,GAAsB,iBAAXxB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBy2D,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,0DCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAzC,SAAS35C,IActB,OAbAA,EAAWr4C,OAAOs+B,OAASt+B,OAAOs+B,OAAOrQ,OAAS,SAAU/uC,GAC1D,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GAEvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CAEA,OAAOnM,CACT,EACOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CCfe,SAASmkD,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCNA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCOlDm2E,G,gBAAY,IAAI/5E,KAEDg6E,EAAmB,SAAAp+D,GCRzB,IAAwB94D,EAAUC,EDQT,SAAAi3H,IAAA,OAAAp+D,EAAAh4G,MAAA,KAAAC,YAAA,KCRSk/C,EDQT64D,GCRD94D,EDQCk3H,GCP7BlqL,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDKa,IAAAw5D,EAAAy9D,EAAAlqL,UAgDnC,OAhDmCysH,EACpCznF,KAAA,WACI,IAAMja,EAAKovC,EAAA,GAAQ95D,KAAK0qB,MAAMujD,cACxBnG,EAAS8hH,EAAUl0J,IAAI11B,KAAK0qB,MAAMtI,KAexC,OAbKsI,EAAM3X,QAAO2X,EAAM3X,MAAQ,CAAC,GAEjC2X,EAAM3X,MAAMzQ,SAAW,WAElBwlE,IACDp9C,EAAM3X,MAAM05B,QAAU,IAEtB/hB,EAAMy3B,SAAWniD,KAAK8pL,YAAYp6I,KAAK1vC,MACvC0qB,EAAMgxB,OAAS17C,KAAK+pL,OAAOr6I,KAAK1vC,OAGpC0qB,EAAMo9C,EAAS,MAAQ,YAAc9nE,KAAK0qB,MAAMtI,IAG5CpN,EAAA,OAAK8W,UAAWkyC,IAAUtzC,EAAMoB,UAAW,kCACrCg8C,GAAU9yD,EAAC0tD,IAAgB,MAC7B1tD,EAAA,MAAS0V,GAGrB,EAAC0hG,EAED09D,YAAA,SAAY1nI,GACS,IAAIs7H,sBAAqB,SAAUn4H,EAAS24H,GACzD34H,EAAQ5uC,SAAQ,SAAU8uC,GACtB,GAAIA,EAAMs7H,eAAgB,CACtB,IAAIiJ,EAAYvkI,EAAM9kD,OACtBqpL,EAAU5nK,IAAM4nK,EAAUtnB,QAAQtgJ,IAClC87J,EAASO,UAAUuL,EACvB,CACJ,GACJ,IAES3L,QAAQj8H,EAAMqF,IAC3B,EAAC2kE,EAED29D,OAAA,SAAO1tI,GACH,IAAM5xC,EAAM4xC,EAAI17C,OAEhBipL,EAAU9wK,IAAI9Y,KAAK0qB,MAAMtI,KAEzB3X,EAAIsI,MAAM05B,QAAU,EAEpBzsC,KAAKK,EAAE,+BAA+BwE,QAC1C,EAACglL,CAAA,CAhDmC,CAASxuH,KEC3Cx6D,EAAO,SAACkM,EAAKk9K,GAAK,OAAKl9K,GAAOA,EAAIuoB,UAAYvoB,EAAIuoB,SAASxuB,QAAO,SAACvD,GAAC,OAAuD,IAAlDgZ,IAAIhZ,EAAG,kBAAmB,IAAI2d,QAAQ+oK,EAAa,IAAE,EAAE,EAEtIzwH,IAAI4yC,aAAatzF,IAAI,4BAA4B,WAC7C2kE,IAAAA,UAAqBysG,gBAAkBxuG,IAAAA,UAAgB,oBAEvDj7E,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,QAAQ,SAAUvN,GACnD,IAAMxvC,EAAQ9wB,KAAK0qB,MAAMwzC,WAAWgsH,kBAEpC,GAAKp5J,EAAL,CAEA,IAAMsF,EAAUv1B,EAAKy/D,EAAM,8BAE3B,GAAKlqC,GAAYA,EAAQd,SAAzB,CAEA,IAAMljB,EAAUgkB,EAAQd,SAASz0B,MAAK,SAAC0C,GAAC,OAAM,MAADA,OAAC,EAADA,EAAG6oB,OAAQ3jB,GAAO,IACzDqmF,EAASjuF,EAAKuR,EAAS,6BACvBqsD,EAAS59D,EAAKiuF,EAAQ,UAEvBrwB,WAEEA,EAAO/zC,MAAMtI,IAEpB0sE,EAAOx5D,SAASw5D,EAAOx5D,SAASpU,QAAQu9C,IAAWzpD,EAAC60K,EAAmB,CAAC57G,aAAcxP,EAAO/zC,MAAOtI,IAAK0O,IAErG0oC,IAAI2J,MAAMC,UAAU,iDACpB0rB,EAAOpkE,MAAM0F,KAAOopC,IAAIhZ,MAAM0d,WAAWl+D,KAAK0qB,MAAMwzC,aAbf,CAJvB,CAmBtB,GACJ,G;;;;;;;uBCtCC,SAAS36D,GAAG,IAAIA,EAAE4mL,eAAe,CAAC,IAAIjyK,EAAE,CAAC01D,aAAa,SAASrqE,GAAG,OAAOA,EAAEI,QAAQ,sCAAsC,OAAO,EAAEoB,SAAS,SAASxB,EAAE2U,GAAG,IAAIjR,EAAE,IAAI,OAAO,IAAI1D,EAAEye,WAAW/a,EAAE1D,EAAEuoB,UAAU7kB,GAAGtD,QAAQ,UAAUsD,GAAGia,QAAQja,EAAEiR,EAAEjR,IAAI,CAAC,EAAEpE,SAAS,SAASU,EAAE2U,GAAG3U,EAAEuoB,WAAW,IAAI5T,CAAC,EAAEtV,YAAY,SAASW,EAAE2U,GAAG,IAAIjR,EAAE,IAAID,OAAO,MAAMhH,KAAK4tE,aAAa11D,GAAG,OAAO3U,EAAEuoB,UAAUvoB,EAAEuoB,UAAUnoB,QAAQsD,EAAE,GAAG,EAAEmjL,kBAAkB,SAAS7mL,EAAE2U,GAAG,OAAO3U,EAAEI,QAAQ,6BAA4B,SAASJ,GAAG,OAAO2U,EAAExE,UAAU,KAAK,EAAE,GAAE,EAAE22K,UAAU,SAAS9mL,GAAG,IAAI2U,GAAG,KAAKtX,SAASijF,QAAQ93E,MAAM,KAAKxI,EAAE,KAAK,OAAO2U,EAAEzT,OAAO,OAAE,EAAOyT,EAAEtC,MAAM7J,MAAM,KAAKue,OAAO,EAAEggK,UAAU,SAAS/mL,EAAE2U,EAAEjR,EAAEgO,EAAExD,EAAE3G,GAAG,IAAI8M,EAAE,IAAIqC,KAAKrC,EAAE2yK,SAAS3yK,EAAEkD,WAAW,IAAI7T,GAAG,MAAM,IAAIyC,EAAE,CAACnG,EAAE,IAAI2U,EAAE,WAAWN,EAAEyG,cAAc,SAAS5M,GAAG,MAAMwD,GAAGvL,EAAEwL,KAAK,UAAUD,GAAGnK,GAAGpB,EAAEwL,KAAK,UAAUtU,SAASijF,OAAOn6E,EAAE0O,KAAK,IAAI,EAAEoyK,WAAW,SAASjnL,EAAE2U,GAAG,IAAI,IAAIjR,KAAKiR,EAAEA,EAAEzL,eAAexF,KAAKA,KAAK1D,GAAGvD,KAAKkkB,cAAc3gB,EAAE0D,KAAKjH,KAAKkkB,cAAchM,EAAEjR,IAAIjH,KAAKwqL,WAAWjnL,EAAE0D,GAAGiR,EAAEjR,IAAI1D,EAAE0D,GAAGiR,EAAEjR,IAAI,OAAO1D,CAAC,EAAE01E,SAAS,SAAS11E,EAAE2U,GAAG,IAAIjR,GAAE,EAAG,OAAO,WAAWA,IAAI1D,EAAEkQ,MAAMzT,KAAK0T,WAAWzM,GAAE,EAAGnE,YAAW,WAAWmE,GAAE,CAAE,GAAEiR,GAAG,CAAC,EAAE8X,KAAK,SAASzsB,GAAG,IAAI2U,EAAEjR,EAAEgO,EAAE,EAAE,GAAG,IAAI1R,EAAEkB,OAAO,OAAOwQ,EAAE,IAAIiD,EAAE,EAAEjR,EAAE1D,EAAEkB,OAAOyT,EAAEjR,IAAIiR,EAAEjD,GAAGA,GAAG,GAAGA,EAAE1R,EAAEqlB,WAAW1Q,GAAGjD,GAAG,EAAE,OAAOA,CAAC,EAAEw1K,aAAa,SAASlnL,GAAG,MAAM,KAAKA,EAAE,KAAKA,EAAEA,EAAE+7D,OAAO,IAAI,GAAG/7D,EAAEkB,SAASlB,EAAEA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAIA,CAAC,EAAEmnL,YAAY,SAASnnL,GAAG,OAAOA,EAAEvD,KAAKyqL,aAAalnL,IAAI,IAAIgM,SAAShM,EAAE+7D,OAAO,EAAE,GAAG,IAAI,IAAI/vD,SAAShM,EAAE+7D,OAAO,EAAE,GAAG,IAAI,IAAI/vD,SAAShM,EAAE+7D,OAAO,EAAE,GAAG,KAAK,KAAK,IAAI,OAAO,MAAM,EAAEqrH,aAAa,SAASpnL,GAAG,IAAI2U,EAAE3I,SAASvP,KAAKyqL,aAAalnL,GAAG,IAAI0D,EAAE,IAAIiR,GAAG,IAAIjD,EAAE,IAAIiD,GAAG,EAAE,KAAKzG,EAAE,IAAI,IAAIyG,GAAG,MAAM,KAAK,SAAS,OAAOjR,EAAE,IAAIA,EAAE,EAAE,EAAEA,EAAE,KAAK,KAAKgO,EAAE,IAAIA,EAAE,EAAE,EAAEA,EAAE,MAAMxD,EAAE,IAAIA,EAAE,EAAE,EAAEA,EAAE,MAAM8J,SAAS,IAAIhG,MAAM,EAAE,EAAEq1K,SAAS,WAAW,MAAM,iEAAiErmL,KAAKq9E,UAAU2uB,UAAU,EAAErsF,cAAc,SAAS3gB,GAAG,MAAM,iBAAiBA,GAAG,OAAOA,GAAGA,EAAEqI,aAAa6V,MAAM,EAAEopK,gBAAgB,SAAStnL,EAAE0D,GAAG,OAAO1D,GAAGA,EAAEgF,WAAW2P,EAAEnT,SAASxB,EAAE0D,GAAG1D,EAAEvD,KAAK6qL,gBAAgBtnL,EAAEgF,WAAWtB,GAAG,IAAI,GAAG1D,EAAEy1C,OAAO,CAAC8xI,KAAK,OAAOC,MAAM,QAAQpoF,QAAQ,WAAWp/F,EAAEyP,cAAc,WAAW,IAAIzP,EAAE3C,SAAS0E,cAAc,OAAO4S,EAAE,CAACA,EAAE,gBAAgB8yK,GAAG,iBAAiBC,IAAI,kBAAkBC,KAAK,gBAAgBC,QAAQ,uBAAuB,IAAI,IAAIlkL,KAAKiR,EAAE,GAAGA,EAAEzL,eAAexF,SAAI,IAAS1D,EAAEwP,MAAM9L,EAAE,aAAa,OAAOiR,EAAEjR,GAAG,MAAM,EAAE,CAA7P,GAAiQ1D,EAAE6nL,gBAAgB7nL,EAAEyP,cAAc,IAAI/L,EAAEwa,OAAOvB,KAAK3c,EAAEy1C,QAAQpxC,IAAIsQ,EAAE01D,cAAcrqE,EAAE8nL,aAAa,CAAC,EAAE9nL,EAAE+nL,MAAM,WAAW,IAAIr2K,EAAE,CAACvM,SAAQ,EAAGY,UAAU,KAAKu6E,OAAO,CAAChxE,KAAK,uBAAuBwtC,KAAK,IAAImwH,OAAO,GAAG+a,WAAW,IAAI9a,QAAO,GAAI+a,YAAY,WAAW,EAAEC,aAAa,WAAW,EAAEC,aAAa,SAASnoL,GAAG,EAAEooL,eAAe,SAASpoL,EAAE2U,GAAG,EAAE0zK,eAAe,WAAW,EAAEC,cAAc,SAAStoL,EAAE2U,GAAG,EAAEke,QAAQ,CAACu0F,OAAO,+BAA+BnwF,QAAQ,kFAAkFmoE,QAAQ,UAAUooF,MAAM,gBAAgBD,KAAK,UAAU7sG,KAAK,aAAa7tD,KAAK,gCAAgC+rC,MAAM,WAAWx7D,OAAO,SAASyiK,OAAO,iBAAiBt7J,SAAS,CAAC6iH,OAAO,kDAAkDnwF,QAAQ,sEAAsEsxJ,YAAY,4OAA4OnpF,QAAQ,4GAA4GooF,MAAM,gGAAgGD,KAAK,4FAA4F7sG,KAAK,wKAAwK9hB,MAAM,wGAAwGp6D,OAAO,+MAA+MgqL,UAAU,sDAAsDC,WAAW,CAACp2H,KAAK,+CAA+C,SAAS,kEAAkE,UAAU,mEAAmE5wD,KAAK,OAAOinL,QAAQ,CAAC17H,MAAM,gCAAgC,cAAc,yCAAyC,eAAe,+CAA+C27H,OAAO,QAAQ5pL,SAAS,SAAS+oK,MAAM,QAAQ8gB,QAAO,EAAG92K,QAAQ,KAAK+2K,WAAU,EAAGC,kBAAiB,EAAGC,UAAS,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,sBAAqB,EAAGC,iBAAiB,CAAC,YAAY,UAAUC,UAAS,EAAGC,YAAW,EAAGC,cAAc,GAAGC,cAAc,GAAGC,aAAa,MAAM,SAASt7K,IAAIzR,KAAKgtL,WAAWv5K,MAAMzT,KAAK0T,UAAU,CAAC,SAAS5I,EAAEvH,GAAGvD,KAAKitL,eAAe,KAAK/0K,EAAEtV,YAAYW,EAAE,eAAe,CAAC,SAASqU,EAAEM,GAAGA,EAAEnF,MAAM9E,QAAQ,OAAOiK,EAAE0iB,oBAAoBr3B,EAAEyP,cAAchT,KAAKktL,iBAAiBltL,KAAKktL,gBAAgB,IAAI,CAAC,SAASxjL,IAAI,IAAInG,EAAEvD,KAAKQ,QAAQ8B,SAASyJ,MAAM,KAAKmM,EAAE,GAAG,OAAO3U,EAAEoT,SAAQ,SAASpT,GAAG2U,EAAEhD,KAAK,MAAM3R,EAAE,IAAG2U,CAAC,CAAC,SAASvD,EAAEM,GAAG,IAAIxD,EAAEzR,KAAKQ,QAAQsK,EAAElK,SAAS0E,cAAc,OAAOsS,EAAEnG,EAAEnI,WAAW,IAAImI,EAAEnI,UAAU0Y,SAASvQ,EAAEnI,UAAU1I,SAASuC,KAAK2H,EAAEpD,UAAUuN,EAAE,IAAIvL,EAAEoB,EAAEwqB,SAAS,GAAG,OAAO5rB,EAAEqJ,MAAM9E,QAAQ,OAAOiK,EAAEnT,SAAS2E,EAAE,cAAcnG,EAAE6nL,eAAelzK,EAAErV,SAAS6G,EAAE,gBAAgB1J,KAAKmtL,cAAc,SAASl4K,GAAG,IAAIxD,EAAEyG,EAAE2yK,gBAAgB51K,EAAEtU,OAAO,WAAWsU,EAAEtU,OAAO,GAAGuX,EAAEnT,SAAS0M,EAAE,UAAU,CAAC,IAAI3G,EAAE2G,EAAEqa,UAAUllB,MAAM,IAAII,OAAO,UAAUC,EAAEmR,KAAK,KAAK,SAASR,EAAE9M,GAAGA,EAAE,KAAI,EAAG8M,IAAI5X,KAAKotL,UAAUx1K,GAAG5X,KAAKm8D,OAAM,GAAI,CAACjkD,EAAEnT,SAAS0M,EAAE,cAAczR,KAAKotL,UAAU7pL,EAAEy1C,OAAO2pD,SAAS3iG,KAAKm8D,OAAM,IAAKjkD,EAAEnT,SAAS0M,EAAE,cAAczR,KAAKqtL,cAAc,EAAE39I,KAAK1vC,MAAM0J,EAAEkiB,iBAAiB,QAAQ5rB,KAAKmtL,eAAe17K,EAAEm7K,aAAah1K,EAAEkW,WAAWlW,EAAE+vB,aAAaj+B,EAAEkO,EAAEkW,YAAYlW,EAAE7D,YAAYrK,IAAIA,CAAC,CAAC,SAASxC,EAAE3D,GAAG,MAAM,WAAWA,EAAE2U,EAAEuyK,aAAalnL,IAAI,OAAO2U,EAAEyyK,aAAapnL,EAAE,CAAC,SAAS6H,EAAE7H,EAAE2U,GAAG,IAAI,IAAIjR,EAAE,EAAEgO,EAAE1R,EAAEkB,OAAOwC,EAAEgO,IAAIhO,EAAE,CAAC,IAAIwK,EAAElO,EAAE0D,GAAG,GAAGwK,aAAazK,QAAQyK,EAAElN,KAAK2T,IAAI,iBAAiBzG,GAAGA,EAAEhN,QAAQgN,IAAIyG,EAAE,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,OAAOzG,EAAE9R,UAAUqtL,WAAW,SAAS/lL,GAAGjH,KAAKQ,SAASR,KAAKiS,UAAUiG,EAAEsyK,WAAWxqL,KAAKQ,QAAQ,CAAC,EAAEyU,GAAGiD,EAAEgM,cAAcjd,IAAIiR,EAAEsyK,WAAWxqL,KAAKQ,QAAQyG,GAAG,WAAW,IAAIiR,EAAElY,KAAKQ,QAAQkrL,aAAah8I,KAAK1vC,MAAM,IAAI+B,OAAO6/E,UAAU0rG,cAAc,OAAOp1K,EAAE3U,EAAEy1C,OAAO8xI,OAAM,EAAG,GAAG/oL,OAAOwrL,WAAWxrL,OAAO6/E,UAAU2rG,UAAU,OAAOr1K,EAAE3U,EAAEy1C,OAAO+xI,QAAO,EAAG,IAAI9jL,EAAEwa,OAAOvB,KAAK3c,EAAEy1C,QAAQ/jC,EAAEjV,KAAKwtL,YAAY/7K,EAAExK,EAAEia,QAAQjM,IAAI,EAAU,OAARxD,GAAGyG,EAAEjD,GAAUxD,CAAC,EAAE1R,KAAKC,QAAQA,KAAKQ,QAAQkI,SAAQ,GAAI0C,EAAEpL,KAAKQ,QAAQssL,cAAc78J,SAASyxB,YAAY1hD,KAAKQ,QAAQkI,SAAQ,GAAI0C,EAAEpL,KAAKQ,QAAQqsL,cAAc58J,SAASyxB,YAAY1hD,KAAKQ,QAAQkI,SAAQ,GAAI,IAAI+I,EAAEzR,KAAKQ,QAAQuB,OAAO4B,QAAQ,cAAc,WAAW,IAAIsD,EAAEjH,KAAKQ,QAAQyU,EAAE,OAAOhO,EAAE3E,UAAU,UAAU2E,EAAE3E,SAAS,SAAS,WAAW4V,EAAE0yK,aAAa31K,EAAE,YAAY,IAAIxD,EAAE,CAAC,MAAMwD,EAAE,WAAWhO,EAAEjC,KAAK,YAAYiC,EAAEokK,OAAujD,OAAhjDpkK,EAAC,QAASwK,EAAEyD,KAAK,aAAazD,EAAEyD,KAAKzB,MAAMhC,EAAE/H,EAAE3J,KAAKC,OAAO,SAAUiH,GAAG,IAAIgO,EAAEiD,EAAE8X,KAAK0M,KAAKwwB,UAAUjmD,IAAIwK,EAAE,qBAAqBwD,EAAEnK,EAAEoN,EAAEgM,cAAcjd,GAAuzC,OAApzCjH,KAAKytL,oBAAoB3iL,EAAE2G,EAAE,KAAK3G,GAAG,SAAS7D,EAAEgO,EAAExD,GAAG,GAAGlO,EAAE8nL,aAAapkL,KAAgB1D,EAAE8nL,aAAapkL,GAAGymL,eAApD,CAA+D,IAAI5iL,EAAE,CAAC,EAAE8M,EAAE3C,EAAE04K,MAAMjkL,EAAEuL,EAAEmuB,OAAOzuB,EAAEM,EAAE8qD,UAAUnoD,IAAIA,EAAErH,KAAKqH,EAAErH,KAAKqH,EAAErH,KAAK2H,EAAEwyK,YAAY9yK,EAAE00C,YAAY10C,EAAEqmE,KAAKrmE,EAAEqmE,KAAKrmE,EAAEqmE,KAAKrmE,EAAErH,KAAKzF,EAAE2G,EAAE,cAAc,CAAC,UAAUmG,EAAErH,KAAK,qBAAqBqH,EAAE00C,YAAYxhD,EAAE2G,EAAE,cAAc,CAAC,UAAUmG,EAAErH,KAAK,qBAAqBqH,EAAE00C,YAAYxhD,EAAE2G,EAAE,aAAaA,EAAE,oBAAoBA,EAAE,qBAAqB,CAAC,UAAUmG,EAAEqmE,MAAMv0E,IAAIA,EAAE6G,KAAK7G,EAAE6G,KAAK7G,EAAE6G,KAAK2H,EAAEwyK,YAAYhhL,EAAE4iD,YAAY5iD,EAAEqjC,OAAOrjC,EAAEqjC,OAAOrjC,EAAEqjC,OAAO,cAAcjiC,EAAE2G,EAAE,YAAY,CAAC,UAAU/H,EAAE6G,KAAK,iBAAiB7G,EAAEqjC,OAAO,qBAAqBrjC,EAAE4iD,YAAY5iD,EAAEF,SAASsB,EAAE2G,EAAE,YAAYyD,KAAK,YAAYxL,EAAEF,SAAS,eAAeE,EAAE4iD,aAAaxhD,EAAE2G,EAAE,mBAAmBA,EAAE,kBAAkB,CAAC,sBAAsB/H,EAAEgC,OAAOxE,EAAEwC,EAAE4iD,eAAe33C,GAAGA,EAAEpE,KAAKoE,EAAEpE,KAAKoE,EAAEpE,KAAK2H,EAAEwyK,YAAY/1K,EAAE23C,YAAY33C,EAAEo4B,OAAOp4B,EAAEo4B,OAAOp4B,EAAEo4B,OAAO,cAAcjiC,EAAE2G,EAAE,sCAAsC,CAAC,UAAUkD,EAAEpE,KAAK,iBAAiBoE,EAAEo4B,OAAO,qBAAqBp4B,EAAE23C,aAAaxhD,EAAE2G,EAAE,sCAAsC,CAAC,UAAUmG,EAAErH,QAAQ,IAAInF,EAAExK,SAAS0E,cAAc,SAAS1E,SAASiiB,KAAK9O,YAAY3I,GAAG7H,EAAE8nL,aAAapkL,GAAG,CAACymL,WAAW,EAAEntL,QAAQ6K,EAAEwiL,OAAO,IAAI73K,GAAG,EAAE,IAAI,IAAInL,KAAKE,EAAEA,EAAE2B,eAAe7B,IAAIQ,EAAEwiL,MAAMC,WAAWjjL,EAAE,IAAIE,EAAEF,GAAGwN,KAAK,KAAK,MAAMrC,EAAlrC,CAAorC,CAAlwC,CAAowCd,EAAEhO,EAAE,IAAIwK,GAAU3G,CAAE,EAAE/K,KAAKC,KAAKA,KAAKQ,QAAQ6U,SAASrV,KAAKytL,qBAAqBh8K,EAAEyD,KAAKlV,KAAKytL,qBAA4Bh8K,CAAC,EAAE1R,KAAKC,MAAMoY,KAAK,MAAMzU,QAAQ,eAAe,WAAW,IAAIJ,EAAE,CAAC,EAAE0D,EAAEjH,KAAKQ,QAAQyG,EAAEqlL,WAAWrlL,EAAEa,SAASm2E,KAAK,GAAGh3E,EAAEa,SAASgkL,YAAY7kL,EAAEa,SAAS0yB,SAAS/Y,OAAOvB,KAAKjZ,EAAEa,UAAU6O,SAAQ,SAAS1B,GAAG1R,EAAE0R,GAAGiD,EAAEkyK,kBAAkBnjL,EAAEa,SAASmN,IAAG,SAAS1R,GAAG,IAAI2U,EAAEjR,EAAEmvB,QAAQ7yB,GAAG,OAAOA,GAAG,iBAAiB2U,GAAGA,EAAEzT,OAAOyT,EAAE,EAAE,GAAE,IAAG,IAAIjD,EAAEhO,EAAE+kL,WAAW/kL,EAAEjC,MAAMiQ,IAAIA,EAAEhO,EAAE+kL,WAAWp2H,MAAMryD,EAAEyoL,WAAW9zK,EAAEkyK,kBAAkBn1K,GAAE,SAASiD,GAAG,OAAO3U,EAAE2U,EAAE,IAAG,IAAIzG,EAAExK,EAAEglL,QAAQhlL,EAAEilL,QAA+B,OAAvBz6K,IAAIA,EAAExK,EAAEglL,QAAQ17H,OAAcr4C,EAAEkyK,kBAAkB34K,GAAE,SAASyG,GAAG,OAAO3U,EAAE2U,EAAE,GAAE,EAAEnY,KAAKC,OAAO8K,EAAE9K,KAAKQ,QAAQusL,aAAa,GAAG,iBAAiBjiL,GAAGA,EAAErG,SAASgN,EAAE3G,GAAG9K,KAAKQ,QAAO,OAAQ,CAAC,IAAIoX,EAAEjD,EAAE5U,KAAKC,KAAK,0BAA0ByR,EAAE,UAAUmG,EAAE7E,MAAM9E,QAAQ,GAAGjO,KAAKO,QAAQqX,EAAEkW,WAAW9tB,KAAKO,QAAQwS,MAAM9E,QAAQ,OAAOiK,EAAErV,SAAS7C,KAAKO,QAAQ,eAAe,MAAMP,KAAKO,QAAQoU,EAAE5U,KAAKC,KAAKyR,IAAG,WAAY,IAAIxK,EAAEjH,KAAKotL,UAAU19I,KAAK1vC,MAAMiV,EAAEjV,KAAKm8D,MAAMzsB,KAAK1vC,MAAMyR,EAAEzR,KAAKQ,QAAQgsL,iBAAiB,iBAAiB/6K,GAAGA,GAAG,IAAIzR,KAAK8tL,eAAe/rL,OAAOe,YAAW,WAAWmE,EAAE1D,EAAEy1C,OAAO2pD,SAAS1tF,GAAE,EAAG,GAAEhS,KAAKwV,MAAMhH,KAAK,IAAI3G,EAAE9K,KAAKQ,QAAQ+rL,gBAAgB,GAAG,iBAAiBzhL,GAAGA,GAAG,EAAE,CAAC,IAAI8M,EAAE,SAAFA,EAAWM,GAAGnW,OAAO67C,YAAY36C,KAAKwV,MAAM3N,KAAK7D,EAAE1D,EAAEy1C,OAAO2pD,SAAS1tF,GAAE,GAAIlT,OAAO64B,oBAAoB,SAAShjB,GAAG5X,KAAK+tL,eAAe,KAAK,EAAE/tL,KAAKQ,QAAQkI,UAAU1I,KAAK+tL,eAAen2K,EAAE7V,OAAO6pB,iBAAiB,SAAShU,GAAG,CAAC,IAAIlO,EAAE1J,KAAKQ,QAAQisL,qBAAqB93K,EAAE3U,KAAKQ,QAAQksL,iBAAiB,GAAGhjL,EAAE,CAAC,IAAIxC,EAAE,SAASuK,GAAG,IAAI,IAAI3G,GAAE,EAAG8M,EAAEnG,EAAE4uC,KAAK57C,OAAOiF,EAAEiL,EAAElQ,OAAO2G,EAAE,EAAEA,EAAEwM,EAAExM,IAAI,IAAIN,EAAE,IAAI,IAAIiL,EAAE,EAAEA,EAAErM,EAAEqM,IAAIjL,IAAIA,EAAEoN,EAAEnT,SAAS0M,EAAE4uC,KAAKj1C,GAAGuJ,EAAEoB,KAAKjL,IAAI7D,EAAE1D,EAAEy1C,OAAO2pD,SAAS1tF,GAAE,GAAIlT,OAAO64B,oBAAoB,QAAQ1zB,GAAGnF,OAAO64B,oBAAoB,WAAW1zB,GAAGlH,KAAKguL,cAAc,KAAK,EAAEt+I,KAAK1vC,MAAMA,KAAKQ,QAAQkI,UAAU1I,KAAKguL,cAAc9mL,EAAEnF,OAAO6pB,iBAAiB,QAAQ1kB,GAAGnF,OAAO6pB,iBAAiB,WAAW1kB,GAAG,CAAE,GAAEnH,KAAKC,MAAM,WAAmH,GAAxG,QAAQA,KAAKQ,QAAQwE,OAAOhF,KAAKQ,QAAQ4rL,WAAU,GAAIl0K,EAAE0yK,aAAa5qL,KAAKQ,QAAQ6rL,kBAAiB,GAAOrsL,KAAKQ,QAAQ4rL,UAAU,CAAC,IAAI7oL,EAAEmG,EAAE3J,KAAKC,MAAMA,KAAKQ,QAAQ6rL,kBAAkB9oL,EAAE2R,KAAK,cAAclV,KAAKytL,qBAAqBlqL,EAAE2R,KAAKlV,KAAKytL,qBAAqB,IAAIxmL,EAAEjH,KAAKQ,QAAQurL,UAAUpoL,QAAQ,cAAcJ,EAAE6U,KAAK,MAAMzU,QAAQ,aAAa3D,KAAKQ,QAAQ41B,QAAQgtI,QAAQpjK,KAAK+rL,UAAUp3K,EAAE5U,KAAKC,KAAKiH,GAAG,IAAIgO,EAAEjV,KAAK+rL,UAAU,GAAG/rL,KAAKQ,QAAQ6rL,iBAAiB,CAAC,IAAI56K,EAAEyG,EAAE+gE,UAAS,SAAS11E,GAAG,IAAI0D,GAAE,EAAGwK,EAAE1P,OAAO6gF,YAAY,GAAG1qE,EAAEnT,SAASkQ,EAAE,WAAW1R,EAAEyhC,QAAQ,KAAK/9B,GAAE,GAAIiR,EAAEnT,SAASkQ,EAAE,cAAc1R,EAAEyhC,QAAQvzB,IAAIxK,GAAE,GAAIA,EAAEiR,EAAEnT,SAASkQ,EAAE,cAAciD,EAAErV,SAASoS,EAAE,aAAaiD,EAAEnT,SAASkQ,EAAE,cAAciD,EAAEtV,YAAYqS,EAAE,YAAY,GAAE,KAAKjV,KAAKiuL,YAAYx8K,EAAE1P,OAAO6pB,iBAAiB,YAAYna,EAAE,CAAC,CAAC,EAAE1R,KAAKC,MAAMA,KAAKQ,QAAQmsL,UAAU3sL,KAAK2sL,UAAU,EAAEl7K,EAAE9R,UAAUsS,QAAQ,WAAWjS,KAAKmtL,eAAentL,KAAKO,UAAUP,KAAKO,QAAQq6B,oBAAoB,QAAQ56B,KAAKmtL,eAAentL,KAAKmtL,cAAc,MAAMntL,KAAK8tL,iBAAiB3gL,aAAanN,KAAK8tL,gBAAgB9tL,KAAK8tL,eAAe,MAAM9tL,KAAK+tL,iBAAiBhsL,OAAO64B,oBAAoB,SAAS56B,KAAK+tL,gBAAgB/tL,KAAK+tL,eAAe,MAAM/tL,KAAKguL,gBAAgBjsL,OAAO64B,oBAAoB,QAAQ56B,KAAKguL,eAAehuL,KAAKguL,cAAc,MAAMhuL,KAAKiuL,cAAclsL,OAAO64B,oBAAoB,YAAY56B,KAAKiuL,aAAajuL,KAAKiuL,YAAY,MAAMjuL,KAAKO,SAASP,KAAKO,QAAQgI,YAAYvI,KAAKO,QAAQgI,WAAWC,YAAYxI,KAAKO,SAASP,KAAKO,QAAQ,KAAKP,KAAK+rL,WAAW/rL,KAAK+rL,UAAUxjL,YAAYvI,KAAK+rL,UAAUxjL,WAAWC,YAAYxI,KAAK+rL,WAAW/rL,KAAK+rL,UAAU,KAAK,SAAS9kL,GAAG,GAAGiR,EAAEgM,cAAcjd,GAAG,CAAC,IAAIgO,EAAEiD,EAAE8X,KAAK0M,KAAKwwB,UAAUjmD,IAAIwK,EAAElO,EAAE8nL,aAAap2K,GAAG,GAAGxD,MAAMA,EAAEi8K,WAAW,CAAC,IAAI5iL,EAAE2G,EAAElR,QAAQ2tL,UAAUpjL,GAAGA,EAAEvC,YAAYuC,EAAEvC,WAAWC,YAAYsC,GAAGvH,EAAE8nL,aAAap2K,GAAG,IAAI,CAAC,CAAC,CAA7M,CAA+MjV,KAAKQ,QAAQ6U,SAASrV,KAAKQ,QAAQ,IAAI,EAAEiR,EAAE9R,UAAU47C,KAAK,SAASrjC,GAAG,GAAGlY,KAAKO,QAAQ,OAAOP,KAAK+pG,WAAWxmG,EAAE6nL,cAAcprL,KAAKsxC,SAAStxC,KAAKO,QAAQwS,MAAM9E,QAAQ,GAAGjO,KAAKQ,QAAQ4rL,WAAWpsL,KAAKmuL,qBAAqBnuL,KAAKQ,QAAQgrL,YAAYzrL,KAAKC,OAAOA,IAAI,EAAEyR,EAAE9R,UAAUw8D,MAAM,SAASjkD,GAAG,GAAGlY,KAAKO,QAAQ,OAAOP,KAAK+pG,WAAWxmG,EAAE6nL,cAAcprL,KAAKuxC,UAAUvxC,KAAKO,QAAQwS,MAAM9E,QAAQ,OAAOiK,GAAGlY,KAAKQ,QAAQ4rL,WAAWpsL,KAAKmuL,oBAAmB,GAAInuL,KAAKQ,QAAQirL,aAAa1rL,KAAKC,OAAOA,IAAI,EAAEyR,EAAE9R,UAAU2xC,OAAO,WAAW,IAAIrqC,EAAEjH,KAAKO,QAAQ,GAAGgD,EAAE6nL,eAAenkL,IAAIjH,KAAKktL,iBAAiBt1K,EAAE7X,KAAKC,KAAKiH,GAAGiR,EAAEnT,SAASkC,EAAE,iBAAiB,CAAC,GAAGA,EAAE8L,MAAM9E,QAAQ,GAAGjO,KAAKQ,QAAO,OAAQ,CAAC,IAAIyU,EAAEjV,KAAKO,QAAQ2+E,aAAal/E,KAAKO,QAAQgI,WAAWwK,MAAM4vE,UAAU1tE,EAAE,IAAI,CAACjV,KAAKitL,eAAenqL,WAAWgI,EAAE4kC,KAAK1vC,KAAKiH,GAAG,GAAG,CAAC,EAAEwK,EAAE9R,UAAU4xC,QAAQ,WAAW,IAAItqC,EAAEjH,KAAKO,QAAQgD,EAAE6nL,eAAenkL,IAAIjH,KAAKitL,iBAAiB9/K,aAAanN,KAAKitL,gBAAgBniL,EAAE4kC,KAAK1vC,KAAKiH,IAAIiR,EAAEnT,SAASkC,EAAE,kBAAkBjH,KAAKQ,QAAO,SAAUR,KAAKO,QAAQgI,WAAWwK,MAAM4vE,UAAU,IAAI3iF,KAAKktL,gBAAgBt1K,EAAE83B,KAAK1vC,KAAKiH,GAAGA,EAAE2kB,iBAAiBroB,EAAEyP,cAAchT,KAAKktL,iBAAiBh1K,EAAErV,SAASoE,EAAE,iBAAiB,EAAEwK,EAAE9R,UAAUoqG,OAAO,WAAW,OAAO/pG,KAAKO,SAAS,IAAIP,KAAKO,QAAQwS,MAAM9E,WAAW1K,EAAE6nL,gBAAgBlzK,EAAEnT,SAAS/E,KAAKO,QAAQ,gBAAgB,EAAEkR,EAAE9R,UAAUwuL,mBAAmB,SAAS5qL,GAAGvD,KAAK+rL,YAAY/rL,KAAK+rL,UAAUh5K,MAAM9E,QAAQ1K,EAAE,GAAG,OAAO,EAAEkO,EAAE9R,UAAU0tL,aAAa,SAAS9pL,GAAGvD,KAAKQ,QAAQkI,SAAQ,EAAG1I,KAAKouL,cAAcpuL,KAAKQ,QAAQorL,eAAe7rL,KAAKC,MAAMuD,GAAGvD,KAAK2sL,UAAU,EAAEl7K,EAAE9R,UAAU0uL,YAAY,SAASn2K,GAAG,OAAOuJ,OAAOvB,KAAK3c,EAAEy1C,QAAQ93B,QAAQlhB,KAAKwtL,cAAc,CAAC,EAAE/7K,EAAE9R,UAAU2uL,aAAa,SAASp2K,GAAG,IAAIjR,EAAEjH,KAAKwtL,YAAY,OAAOvmL,GAAG1D,EAAEy1C,OAAO+xI,OAAO9jL,GAAG1D,EAAEy1C,OAAO2pD,OAAO,EAAElxF,EAAE9R,UAAUgtL,SAAS,SAASppL,IAAIvD,KAAKquL,eAAeruL,KAAKQ,QAAQkI,QAAQ1I,KAAKu7C,OAAOv7C,KAAKquL,eAAeruL,KAAKQ,QAAQ4rL,WAAWpsL,KAAKmuL,oBAAmB,EAAG,EAAE18K,EAAE9R,UAAUytL,UAAU,SAASnmL,GAAG,IAAIgO,EAAEjV,KAAKQ,QAAQqjF,OAAOpyE,EAAEyG,EAAEmyK,UAAUp1K,EAAEpC,MAAM/H,EAAE2W,OAAOvB,KAAK3c,EAAEy1C,QAAQ93B,QAAQzP,IAAI,EAAEgQ,OAAOvB,KAAK3c,EAAEy1C,QAAQ93B,QAAQja,IAAI,GAAGiR,EAAEoyK,UAAUr1K,EAAEpC,KAAK5L,EAAEgO,EAAEs2K,WAAWt2K,EAAEu7J,OAAOv7J,EAAEorC,KAAKprC,EAAEw7J,QAAQzwK,KAAKQ,QAAQmrL,eAAe5rL,KAAKC,KAAKiH,EAAE6D,IAAI9K,KAAKouL,aAAa,EAAE38K,EAAE9R,UAAU6tL,UAAU,WAAW,OAAOt1K,EAAEmyK,UAAUrqL,KAAKQ,QAAQqjF,OAAOhxE,KAAK,EAAEpB,EAAE9R,UAAUyuL,YAAY,WAAW,IAAI7qL,EAAEvD,KAAKQ,QAAQqjF,OAAO3rE,EAAEoyK,UAAU/mL,EAAEsP,KAAK,IAAI,EAAEtP,EAAEitK,OAAOjtK,EAAE88C,KAAK,EAAE5uC,CAAC,CAAplY,GAAwlYlO,EAAEgrL,SAAS,WAAW,IAAIhrL,EAAE,CAACoF,QAAQ,IAAI6lL,SAAS,CAAC,UAAUC,mBAAmB,CAACC,OAAO,WAAW,MAAM,CAAC73I,IAAI,cAAc0C,QAAQ,CAAC,4BAA4B/oC,SAAS,SAASjN,EAAE2U,GAAG,IAAI,IAAIjR,EAAEy1B,KAAK3iB,MAAM7B,GAAG,OAAOjR,EAAEod,MAAMvZ,EAAE7D,GAAG,CAAC8C,KAAK9C,EAAE0nL,QAA8D,CAArD,MAAMprL,GAAG,OAAOuH,EAAE,CAACuZ,MAAM,qBAAqB9gB,EAAE,KAAK,CAAC,EAAE,EAAEqrL,SAAS,SAASrrL,GAAG,MAAM,CAACszC,IAAI,kFAAkFg4I,UAAS,EAAGr+K,SAAS,SAASjN,EAAE2U,GAAG,IAAI,IAAIjR,EAAEy1B,KAAK3iB,MAAM7B,GAAG,MAAM,SAASjR,EAAEsxC,WAAWztC,EAAE,CAACuZ,MAAMpd,EAAE6nL,gBAAgB,CAAC/kL,KAAK9C,EAAE8nL,YAAkE,CAArD,MAAMxrL,GAAG,OAAOuH,EAAE,CAACuZ,MAAM,qBAAqB9gB,EAAE,KAAK,CAAC,EAAE,EAAEyrL,QAAQ,WAAW,MAAM,CAACn4I,IAAI,iDAAiDg4I,UAAS,EAAGr+K,SAAS,SAASjN,GAAGxB,OAAOktL,OAAOA,OAAON,SAAQ,SAASz2K,GAAG,IAAI3U,EAAE,CAACwG,KAAKmO,EAAEy2K,QAAQO,UAA2B,CAAhB,MAAMh3K,GAAG3U,EAAEuH,EAAEoN,GAAG,CAAC,IAAE,SAASA,GAAG3U,EAAEuH,EAAEoN,GAAG,IAAG3U,EAAE,IAAIsI,MAAM,uGAAuG,EAAE,IAAI,SAAS5E,EAAEA,GAAGiR,EAAEsyK,WAAWxqL,KAAKQ,QAAQ,CAAC,EAAE+C,GAAG2U,EAAEgM,cAAcjd,IAAIiR,EAAEsyK,WAAWxqL,KAAKQ,QAAQyG,GAAGjH,KAAKmvL,qBAAqB,CAAC,CAAC,SAASl6K,EAAE1R,EAAE2U,EAAEjR,GAAG,IAAIgO,EAAExD,EAAE7Q,SAAS0E,cAAc,UAAUmM,EAAEzM,KAAK,SAASzB,EAAEyB,MAAM,cAAcyM,EAAE2Q,IAAI7e,EAAE6e,KAAK7e,EAAEkO,EAAEwlC,OAAM,EAAGxlC,EAAEqqC,mBAAmBrqC,EAAEiqC,OAAO,WAAW,IAAIn4C,EAAEkO,EAAEspB,WAAW5tB,aAAa8H,GAAGiD,EAAEsO,MAAMjjB,IAAI,kBAAkBgB,KAAKhB,KAAK2U,EAAEsO,MAAK,EAAGtO,IAAIzG,EAAEqqC,mBAAmBrqC,EAAEiqC,OAAO,KAAK,EAAE96C,SAASuC,KAAK4Q,YAAYtC,GAAGwD,EAAEnS,YAAW,WAAWoV,EAAEsO,MAAK,EAAGtO,IAAIzG,EAAEqqC,mBAAmBrqC,EAAEiqC,OAAO,IAAI,GAAEz0C,EAAE,CAAC,SAASwK,EAAElO,EAAE2U,EAAEjR,EAAEgO,EAAExD,GAAG,IAAI3G,EAAE,IAAI/I,OAAOm5C,gBAAgBn5C,OAAOqtL,eAAe,sBAAsB,GAAGtkL,EAAEywC,KAAKtmC,EAAE,OAAO,MAAM1R,EAAE,GAAGuH,EAAE+tC,iBAAiB,eAAe,qCAAqCn5C,MAAMU,QAAQqR,GAAG,IAAI,IAAImG,EAAE,EAAElO,EAAE+H,EAAEhN,OAAOmT,EAAElO,IAAIkO,EAAE,CAAC,IAAIjD,EAAElD,EAAEmG,GAAG7L,MAAM,IAAI,GAAGjB,EAAE+tC,iBAAiBlkC,EAAE,GAAGhR,QAAQ,aAAa,IAAIgR,EAAE,GAAGhR,QAAQ,aAAa,IAAI,CAAC,mBAAmBuU,IAAIpN,EAAEgxC,mBAAmB,WAAWhxC,EAAEiwB,WAAW,GAAG7iB,EAAEpN,EAAE,GAAGA,EAAE4uC,KAAKzkC,EAAE,CAAC,SAASnK,EAAEvH,GAAG,OAAO,IAAIsI,MAAM,WAAWtI,EAAEwG,MAAM,WAAW,MAAMxG,EAAE8gB,MAAM,CAAC,OAAOpd,EAAEtH,UAAU0vL,eAAe,WAAW,IAAI9rL,EAAE,GAAGA,EAAEvD,KAAKsvL,kBAAkBtvL,KAAKmvL,2BAA2BnvL,KAAKmvL,oBAAoBnvL,KAAKQ,QAAQguL,SAAS/pL,SAASlB,GAAG,OAAOA,CAAC,EAAE0D,EAAEtH,UAAU2vL,gBAAgB,SAAS/rL,GAAG,IAAI0D,EAAEjH,KAAKQ,QAAQguL,SAASjrL,GAAG,GAAG,mBAAmB0D,EAAE,CAAC,IAAIgO,EAAEhO,IAAI,OAAOgO,EAAEpC,MAAMqF,EAAEsyK,WAAWv1K,EAAEjV,KAAKQ,QAAQiuL,mBAAmBx5K,EAAEpC,MAAMoC,IAAIA,CAAC,CAAC,MAAM,iBAAiBhO,EAAEjH,KAAKQ,QAAQiuL,mBAAmBxnL,KAAKiR,EAAEgM,cAAcjd,GAAGjH,KAAKQ,QAAQiuL,mBAAmBxnL,EAAE4L,MAAM5L,GAAG,IAAI,EAAEA,EAAEtH,UAAU4vL,OAAO,SAAShsL,EAAE2U,GAAG,IAAIjR,EAAEjH,KAAKqvL,iBAAiBpoL,GAAGjH,KAAKwvL,iBAAiBjsL,EAAEvD,KAAKyvL,cAAcv3K,EAAElY,KAAK0vL,WAAWzoL,EAAEjH,KAAK2vL,sBAAsBjgJ,KAAK1vC,QAAQkY,EAAE,IAAIrM,MAAM,sBAAsB,EAAE5E,EAAEtH,UAAUiwL,SAAS,SAASrsL,GAAG,IAAI2U,EAAElY,KAAK6vL,wBAAwB,OAAOtsL,EAAEszC,IAAIlzC,QAAQ,cAAa,SAASsD,EAAEgO,GAAG,GAAG,aAAaA,EAAE,CAAC,IAAIxD,EAAE,WAAWwI,KAAK+pB,MAAM,OAAOjiC,OAAO0P,GAAG,SAASyG,GAAG3U,EAAEusL,aAAapzJ,KAAKwwB,UAAUh1C,EAAE,EAAEzG,CAAC,CAAC,GAAGwD,KAAKiD,EAAE63K,eAAe,OAAO73K,EAAE63K,eAAe96K,EAAE,GAAE,EAAEhO,EAAEtH,UAAU+vL,WAAW,SAASnsL,EAAE2U,GAAG,IAAIjR,EAAEjH,KAAKuD,GAAGA,EAAEszC,KAAKtzC,EAAEiN,WAAWjN,EAAEsrL,SAAS55K,EAAExD,GAAGzR,KAAK4vL,SAASrsL,IAAG,SAAS0R,GAAG,IAAIxD,EAAEwD,EAAEA,EAAE+mC,aAAa,GAAGz4C,EAAEusL,eAAer+K,EAAElO,EAAEusL,oBAAoBvsL,EAAEusL,cAAc7oL,EAAE+oL,mBAAmBjwL,KAAKkH,EAAEiR,EAAE3U,EAAEkO,EAAE,GAAEzR,KAAKQ,QAAQmI,QAAQpF,EAAE5B,KAAK4B,EAAEg2C,QAAQ,EAAEtyC,EAAEtH,UAAUqwL,mBAAmB,SAASzsL,EAAE2U,EAAEjR,GAAG,IAAIgO,EAAEjV,KAAKyR,EAAEyG,EAAE1H,UAAS,SAAS0H,GAAGzG,GAAGwD,EAAEg7K,gBAAgBlwL,KAAKkV,EAAE1R,EAAE2U,EAAE,GAAEjR,GAAGwK,GAAGzR,KAAKiwL,gBAAgBlwL,KAAKC,KAAKuD,EAAEkO,EAAE,EAAExK,EAAEtH,UAAUswL,gBAAgB,SAAS1sL,EAAE2U,GAAGA,aAAarM,OAAOqM,GAAGA,EAAEmM,MAAM9gB,EAAExD,KAAKC,KAAKkY,EAAE,MAAM3U,EAAExD,KAAKC,KAAK,KAAKkY,EAAE,EAAEjR,EAAEtH,UAAUgwL,sBAAsB,SAASpsL,EAAE2U,GAAG,GAAG3U,EAAE,CAACvD,KAAKkwL,SAAS3sL,GAAG,IAAI0D,EAAEjH,KAAKqvL,iBAAiBpoL,EAAEjH,KAAK0vL,WAAWzoL,EAAEjH,KAAK2vL,sBAAsBjgJ,KAAK1vC,OAAOA,KAAKmwL,gBAAgBpwL,KAAKC,KAAKA,KAAKyvL,cAAc,IAAI5jL,MAAM,uBAAuB,MAAM7L,KAAKmwL,gBAAgBpwL,KAAKC,KAAKA,KAAKwvL,iBAAiBt3K,EAAE,EAAEjR,EAAEtH,UAAUkwL,sBAAsB,WAAW,IAAItsL,EAAEvD,KAAKQ,QAAQguL,SAASxuL,KAAKmvL,qBAAqB,MAAM,iBAAiB5rL,EAAE,CAACsP,KAAKtP,GAAG,mBAAmBA,EAAEA,IAAI2U,EAAEgM,cAAc3gB,GAAGA,EAAE,CAAC,CAAC,EAAE0D,EAAEtH,UAAUwwL,gBAAgB,SAAS5sL,EAAE2U,GAAGlY,KAAKmvL,qBAAqB,EAAE5rL,GAAGA,EAAE2U,EAAE,EAAEjR,EAAEtH,UAAUuwL,SAAS,SAAS3sL,GAAG,IAAI2U,EAAElY,KAAKmvL,oBAAoBloL,EAAEjH,KAAKsvL,gBAAgBp3K,GAAGoiB,QAAQC,KAAK,eAAeriB,EAAE,MAAMjR,EAAE4vC,IAAI,uCAAuCtzC,EAAE,EAAE0D,CAAC,CAA5pI,GAAgqI1D,EAAE6sL,IAAI,WAAW,IAAI7sL,EAAE,CAAC8sL,aAAY,EAAGC,OAAO,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAMlE,UAAU,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAMmE,eAAe,CAAC,KAAK,KAAK,OAAO,SAAStpL,EAAE1D,GAAGvD,KAAKgtL,WAAWv5K,MAAMzT,KAAK0T,UAAU,CAAC,OAAOzM,EAAEtH,UAAUqtL,WAAW,SAAS/lL,GAAGiR,EAAEsyK,WAAWxqL,KAAKQ,QAAQ,CAAC,EAAE+C,GAAG2U,EAAEgM,cAAcjd,IAAIiR,EAAEsyK,WAAWxqL,KAAKQ,QAAQyG,EAAE,EAAEA,EAAEtH,UAAU4c,IAAI,SAAShZ,GAAG,IAAI2U,EAAElY,KAAKQ,QAAQ,MAAM,CAAC8vL,OAAOp4K,EAAEo4K,OAAOpvK,QAAQ3d,IAAI,EAAE6oL,UAAUl0K,EAAEk0K,UAAUlrK,QAAQ3d,IAAI,EAAEgtL,eAAer4K,EAAEq4K,eAAervK,QAAQ3d,IAAI,EAAE,EAAE0D,EAAEtH,UAAU6wL,SAAS,SAASjtL,EAAE2U,GAAG,IAAIjR,EAAEjH,KAAKuc,IAAIrE,GAAG,OAAOjR,EAAEqpL,SAAS/sL,EAAEmF,SAAQ,EAAG,mBAAmBnF,EAAEsoL,eAAetoL,EAAEsoL,cAAc3zK,EAAEjR,IAAIjH,KAAKQ,QAAQ6vL,cAAcppL,EAAEmlL,YAAY7oL,EAAE6oL,WAAU,GAAInlL,EAAEspL,iBAAiBhtL,EAAEgpL,iBAAgB,EAAGhpL,EAAEipL,kBAAiB,IAAKjpL,CAAC,EAAE0D,CAAC,CAAl4B,GAAs4B1D,EAAEypL,WAAW,SAAS/lL,EAAEgO,EAAExD,GAAG,IAAI3G,EAAE,IAAIvH,EAAE6sL,IAAInpL,EAAEwpL,KAAKx7K,IAAIA,EAAE,WAAW,GAAGxD,IAAIA,EAAE,WAAW,GAAG,IAAImG,EAAE6J,OAAOvB,KAAK3c,EAAEy1C,QAAQtvC,EAAEwO,EAAEmyK,UAAU,wBAAwBzyK,EAAEsJ,QAAQxX,IAAI,EAAEuL,EAAE,IAAI1R,EAAE+nL,MAAMrkL,IAAI1D,EAAEmtL,eAAezpL,GAAE,SAASiR,UAAUjR,EAAEwpL,WAAWxpL,EAAEgpB,SAAS/X,EAAEnO,OAAO9C,EAAE6D,EAAE0lL,SAASvpL,EAAEiR,EAAEnO,OAAOkL,EAAE,IAAI1R,EAAE+nL,MAAMrkL,GAAG,IAAE,SAASiR,UAAUjR,EAAEwpL,WAAWxpL,EAAEgpB,SAASxe,EAAEyG,EAAE,IAAI3U,EAAE+nL,MAAMrkL,GAAG,GAAE,EAAE1D,EAAEmtL,eAAe,SAASx4K,EAAEjR,EAAEgO,GAAGiD,EAAEu4K,KAAKv4K,EAAEu4K,IAAI1B,YAAY9nL,EAAE,CAAC8C,KAAKmO,EAAEu4K,IAAI1B,cAAc72K,EAAE+X,SAAS,IAAI1sB,EAAEgrL,SAASr2K,EAAE+X,UAAUs/J,QAAO,SAAShsL,GAAG0D,EAAE1D,GAAG,CAAC,EAAE,GAAE0R,GAAGhO,EAAE,CAAC,EAAE,EAAE1D,EAAE4sH,MAAMj4G,EAAE3U,EAAE4mL,gBAAe,EAAGpoL,OAAO4uL,cAAcptL,CAAC,CAAC,CAAxroB,CAA0roBxB,OAAO4uL,eAAe,CAAC,E,GCC9soBp4H,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU/gD,EAAQA,EAAOC,QAAS6gD,GAG/C9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,mCCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,oBCGxDj6C,IAAAA,aAAAA,IAAqB,sBAAsB,WACzCn5D,EAAEO,UAAUu0B,OAAM,WAChB,IAAMxS,EAAe,SAAC7V,GAAG,OAAK0sD,IAAAA,MAAAA,UAAoB,sBAAsB1sD,EAAM,EAE1E0qC,EAAW,CACb6zH,MAAO1oJ,EAAa,WACpByT,QAAS,CACPoE,QAAS7X,EAAa,eACtBggF,QAAShgF,EAAa,cACtBs7D,KAAMt7D,EAAa,qBACnByN,KAAMzN,EAAa,sBAIS,WAA5BA,EAAa,aACf60B,EAASniC,QAAU,CACjBs4K,MAAO,CACLrhI,WAAY3pC,EAAa,yBAAsB7P,EAC/CvC,KAAMoS,EAAa,mBAAgB7P,GAErCswB,OAAQ,CACNkpB,WAAY3pC,EAAa,+BAA4B7P,EACrDvC,KAAMoS,EAAa,yBAAsB7P,KAK/C,IACE69K,cAAc3D,WAAWx1I,EAG3B,CAFE,MAAOxW,GACP1G,QAAQjW,MAAM,6DAA8D2c,EAC9E,QAEOj/B,OAAO4uL,aAChB,GACF,G;;;;;;;MCrCA,IAAIn4H,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EAEOomD,EAAgBpmD,EAAG7G,EAC5B,CCNe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,c,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCOnCm9E,EAAU,SAAA36D,GAAA,SAAA26D,IAAA,OAAA36D,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAA+2H,EAAA36D,GAAA,IAAA7J,EAAAwkE,EAAAjxL,UAiL5B,OAjL4BysH,EAC7B7pE,OAAA,SAAOH,GAOL,GANA6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK6wL,QAAU7wL,KAAK0qB,MAAMmmK,QAC1B7wL,KAAKmoE,KAAOnoE,KAAK0qB,MAAMy9C,KACvBnoE,KAAK8sD,KAAO9sD,KAAK0qB,MAAMoiC,MAAS9sD,KAAKmoE,MAAQnoE,KAAKmoE,KAAKrb,QAElD9sD,KAAK8sD,MAAQ9sD,KAAK6wL,QAAS,CAC9B,IAAMC,EAAWt3H,IAAAA,MAAAA,MAAgB,aAAc,UAAWx5D,KAAK6wL,SAE3DC,IAAU9wL,KAAK8sD,KAAOgkI,EAAShkI,OACrC,CAEA9sD,KAAK+wL,WAAa,IAEb/wL,KAAKmoE,MAAQnoE,KAAKmoE,KAAK0jB,aAAgB7rF,KAAK6wL,UAAS7wL,KAAK+wL,WAAW77K,KAAK,QAC3ElV,KAAK8sD,MAAM9sD,KAAK+wL,WAAW77K,KAAK,OAEpClV,KAAKgxL,UAAY5jI,IAAOptD,KAAK+wL,WAAW,IACxC/wL,KAAKglD,OAASoI,IAAO,IAErBptD,KAAKixL,WAAa,CAAC,EAEnBjxL,KAAK0+D,SAAU,CACjB,EAAC0tD,EAEDtgG,UAAA,WACE,MAAO,eACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,8BAC9B,EAAC4yD,EAEDh2F,QAAA,WAAU,IAAA6wE,EAAA,KACFiqF,EAAmBlxL,KAAKixL,WAAWjxL,KAAKgxL,aACxCG,EACJD,GAAoBA,EAAiBtpL,KAAI,SAACwD,GAAC,OAAMA,GAAKA,EAAEurD,eAAkB6C,IAAAA,WAAAA,MAAqB,iCAAiC,IAElI,OACExkD,EAAA,OAAK8W,UAAU,cACb9W,EAAA,SAAIwkD,IAAAA,WAAAA,MAAqB,8CAEzBxkD,EAAA,OAAK8W,UAAU,cACZ9rB,KAAK+wL,WAAWnpL,KAAI,SAACkF,GAAG,OACvBkI,EAAA,WACEA,EAAA,SACEhQ,KAAK,QACL6N,KAAK,aACL8W,GAAE,cAAgB7c,EAClBwjB,QAAS22E,EAAK+pF,cAAgBlkL,EAC9Bw1C,QAAS2kD,EAAK+pF,UAAUthJ,KAAKu3D,EAAMn6F,KACnC,IAEFkI,EAAA,SAAOo8K,QAAO,cAAgBtkL,GAC3B0sD,IAAAA,WAAAA,MAAqB,uCAAuC1sD,EAAG,MAAO,CACrEggD,KAAMm6C,EAAKn6C,KACXukI,GAAIpqF,EAAK4pF,SAAY5pF,EAAK9+B,MAAQ8+B,EAAK9+B,KAAK0jB,eAG5C,KAIV72E,EAAA,OAAK8W,UAAU,cACb9W,EAAA,SAAO8W,UAAU,SAAS0tC,IAAAA,WAAAA,MAAqB,uCAC/CxkD,EAAA,SAAOhQ,KAAK,OAAO8mB,UAAU,cAAc+sC,KAAM74D,KAAKglD,UAGvDksI,EACGA,EAAiBzsL,OACf+jE,IAAAA,UACE,CACEC,aAAa,GAEfjP,IAAAA,WAAAA,MAAqB,qCAAsC,CACzD8yC,MAAO+a,IAAgB8pE,GACvB16K,MAAO06K,EAAU1sL,UAGrB+jE,IAAAA,UACE,CACEC,aAAa,EACbzjE,KAAM,WAERw0D,IAAAA,WAAAA,MAAqB,4CAEzB,GAEH03H,GAAoBl8K,EAAA,WAErBA,EAAA,OAAK8W,UAAU,cACb9W,EAACyuD,IAAM,CAAC33C,UAAU,yBAAyB9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SACpEyyH,EAAY33H,IAAAA,WAAAA,MAAqB,oCAAsCA,IAAAA,WAAAA,MAAqB,wCAKvG,EAAC4yD,EAEDlnD,SAAA,SAAS3hE,GAAG,IAAAipH,EAAA,KAKV,GAJAjpH,EAAEmC,iBAEF1F,KAAK0+D,SAAU,OAEkC,IAAtC1+D,KAAKixL,WAAWjxL,KAAKgxL,aAA8B,OAAOhxL,KAAKsxL,gBAE1E,IAAM5mK,EAAQ,CACZs6B,OAAQhlD,KAAKglD,SACbknD,OAAQlsG,KAAK8sD,KAAKnjC,MAGK,SAArB3pB,KAAKgxL,aACPtmK,EAAMmmK,QAAU7wL,KAAKmoE,KAAK0jB,YAE1BryB,IAAAA,MAAAA,aAAuB,cAAc0O,KAAKx9C,GAAOuM,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,OAAM,MAAOA,KAAK27C,QAAQjM,KAAK1vC,OAAOi3B,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,QACnG,QAArBA,KAAKgxL,aACdx3H,IAAAA,QACW,CACPr2D,KAAM,CACJxB,KAAM,CACJuG,WAAYwiB,IAGhBmsB,IAAK,GAAG2iB,IAAAA,MAAAA,UAAoB,UAAYx5D,KAAK8sD,KAAKsvB,cAAa,OAC/DtlD,OAAQ,OACRkzC,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAEjCi3B,MAAK,SAAC65F,GAAG,OAAKt3D,IAAAA,MAAAA,YAAsBs3D,GAAKn6G,QAAQ61G,EAAKhmG,KAAKkpB,KAAK88E,GAAM,IACtEv1F,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,OAAM,OACpB,WAAO,IACbi3B,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,MAE7B,EAACosH,EAEDklE,cAAA,WAAgB,IAAA7iE,EAAA,KACR9sH,EAAO,CAAC,EAEW,SAArB3B,KAAKgxL,cAAwBrvL,EAAK0vL,GAAKrxL,KAAK6wL,SAAW7wL,KAAKmoE,KAAK0jB,aAErEryB,IAAAA,QACW,CACPvc,OAAQt7C,EACRk1C,IAAQ2iB,IAAAA,MAAAA,UAAoB,UAAS,4BAA4Bx5D,KAAK8sD,KAAKnjC,KAC3EmN,OAAQ,MACRkzC,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAEjCi3B,MAAK,SAAC65F,GACLrC,EAAKwiE,WAAWxiE,EAAKuiE,aAAelgE,EAAInvH,KAAKiG,KAAI,SAACrE,GAAC,OAAKi2D,IAAAA,MAAAA,WAAqBj2D,EAAE,IAAEuD,QAAO,SAACvD,GAAC,OAA8B,IAAzBA,EAAEguL,YAAY9sL,MAAY,IACzHgqH,EAAK/vD,SAAU,CACjB,IAAE,OACK,WAAO,IACbznC,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,MAC3B,EAACosH,EAED5lG,KAAA,SAAKsqK,GACH,IAAM/jL,EAAM,CACV/H,KAAM,aACN2kB,GAAImnK,EAASnnK,MAGX3pB,KAAKmoE,OACPnoE,KAAKmoE,KAAKxmE,KAAKsmE,cAAcupH,UAAY,CACvC7vL,KAAMoL,IAIL/M,KAAK8sD,KAAKnrD,KAAKsmE,cAAcwpH,aAChCzxL,KAAK8sD,KAAKnrD,KAAKsmE,cAAcwpH,WAAa,CACxC9vL,KAAM,KAGV3B,KAAK8sD,KAAKnrD,KAAKsmE,cAAcwpH,WAAW9vL,KAAKuT,KAAKnI,GAClD/M,KAAK8sD,KAAKnrD,KAAKuG,WAAWwpL,UAAW,EAErCl4H,IAAAA,MAAAA,WAAqBx5D,KAAK8sD,KAAKnrD,KACjC,EAACivL,CAAA,CAjL4B,CAAS/nH,KCPH0uC,OAAOC,KAAK/D,OAAO,2BCMlB,IAEjBk+E,EAAY,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAn+K,MAAA,KAAAC,YAAA,KAAAmmD,EAAA83H,EAAAC,GAAA,IAAAxlE,EAAAulE,EAAAhyL,UA4K9B,OA5K8BysH,EAC/BjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAAA,MAAqB,oCAC9B,EAAC4yD,EAEDh2F,QAAA,WAAU,IAAA6wE,EAAA,KACFgqF,EAAajxL,KAAKixL,WAAWjxL,KAAKgxL,aAClCG,EAAYF,GAAcA,EAAWrpL,KAAI,SAACwD,GAAC,OAAMA,GAAKA,EAAEurD,eAAkB6C,IAAAA,WAAAA,MAAqB,iCAAiC,IAEtI,OAAIx5D,KAAKuxL,UAELv8K,EAAA,OAAK8W,UAAU,cACZ08C,IAAAA,UACC,CACEC,aAAa,EACbzjE,KAAM,WAERw0D,IAAAA,WAAAA,MAAqB,qCAAsC,CAAEq4H,IAAKxqE,IAAgBrnH,KAAKuxL,eAO7Fv8K,EAAA,OAAK8W,UAAU,cACb9W,EAAA,SAAIwkD,IAAAA,WAAAA,MAAqB,gDAEzBxkD,EAAA,OAAK8W,UAAU,cACZ9rB,KAAK+wL,WAAWnpL,KAAI,SAACkF,GAAG,OACvBkI,EAAA,WACEA,EAAA,SACEhQ,KAAK,QACL6N,KAAK,aACL8W,GAAE,cAAgB7c,EAClBwjB,QAAS22E,EAAK+pF,cAAgBlkL,EAC9Bw1C,QAAS2kD,EAAK+pF,UAAUthJ,KAAKu3D,EAAMn6F,KACnC,IAEFkI,EAAA,SAAOo8K,QAAO,cAAgBtkL,GAC3B0sD,IAAAA,WAAAA,MAAqB,uCAAuC1sD,EAAG,MAAO,CACrEggD,KAAMm6C,EAAKn6C,KACXukI,GAAIpqF,EAAK4pF,SAAY5pF,EAAK9+B,MAAQ8+B,EAAK9+B,KAAK0jB,eAG5C,KAITolG,EACGA,EAAWxsL,OACT+jE,IAAAA,UACE,CACEC,aAAa,GAEfjP,IAAAA,WAAAA,MAAqB,uCAAwC,CAC3D8yC,MAAO+a,IAAgB8pE,GACvB16K,MAAO06K,EAAU1sL,UAGrB+jE,IAAAA,UACE,CACEC,aAAa,EACbzjE,KAAM,WAERw0D,IAAAA,WAAAA,MAAqB,4CAEzB,GAEHy3H,GAAcj8K,EAAA,WAEfA,EAAA,OAAK8W,UAAU,cACb9W,EAACyuD,IAAM,CAAC33C,UAAU,yBAAyB9mB,KAAK,SAAS05D,QAAS1+D,KAAK0+D,SACpEyyH,EAAY33H,IAAAA,WAAAA,MAAqB,sCAAwCA,IAAAA,WAAAA,MAAqB,wCAKzG,EAAC4yD,EAEDlnD,SAAA,SAAS3hE,GAKP,GAJAA,EAAEmC,iBAEF1F,KAAK0+D,SAAU,OAEkC,IAAtC1+D,KAAKixL,WAAWjxL,KAAKgxL,aAA8B,OAAOhxL,KAAKsxL,gBAE1E,IAAM5mK,EAAQ,CAAC,EAEf,GAAyB,SAArB1qB,KAAKgxL,YAAwB,CAC/BtmK,EAAMmmK,QAAU7wL,KAAK6wL,SAAW7wL,KAAKmoE,KAAK0jB,YAE1C,IAAMilG,EAAW9wL,KAAKmoE,KAAOnoE,KAAKmoE,KAAK2oH,WAAat3H,IAAAA,MAAAA,MAAgB,aAAc,UAAWx5D,KAAK6wL,SAElGC,EAAQ,SAAU75J,KAAKj3B,KAAKwmB,KAAKkpB,KAAK1vC,KAAM8wL,IAAU,MAAO9wL,KAAK27C,QAAQjM,KAAK1vC,OAAOi3B,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,MAC5G,KAAgC,QAArBA,KAAKgxL,aACdx3H,IAAAA,QACW,CACPr2D,KAAM,CACJxB,KAAM,CACJuG,WAAYwiB,IAGhBmsB,IAAK,GAAG2iB,IAAAA,MAAAA,UAAoB,UAAYx5D,KAAK8sD,KAAKsvB,cAAa,SAC/DtlD,OAAQ,OACRkzC,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAEjCi3B,KAAKj3B,KAAKwmB,KAAKkpB,KAAK1vC,OAAM,MACpBA,KAAK27C,QAAQjM,KAAK1vC,OACxBi3B,KAAKj3B,KAAK2M,KAAK+iC,KAAK1vC,MAE3B,EAACosH,EAEDklE,cAAA,WAAgB,IAAA9kE,EAAA,KACR7qH,EAAO,CAAC,EAEW,SAArB3B,KAAKgxL,cACPrvL,EAAK0vL,GAAKrxL,KAAK6wL,SAAW7wL,KAAKmoE,KAAK0jB,YACpClqF,EAAKmwL,gBAAiB,GAGxB,IAAIj7I,EAAS2iB,IAAAA,MAAAA,UAAoB,UAAS,2BAEtCx5D,KAAK8sD,OAAMjW,GAAO,IAAI72C,KAAK8sD,KAAKnjC,MAEpC6vC,IAAAA,QACW,CACPvc,OAAQt7C,EACRk1C,IAAKA,EACL/f,OAAQ,MACRkzC,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QAEjCi3B,MAAK,SAAC65F,GACL,IAAMnvH,EAAO63D,IAAAA,MAAAA,YAAsBs3D,GAEnCtE,EAAKykE,WAAWzkE,EAAKwkE,aAAervL,EAAKmF,QAAO,SAACvD,GAAC,OAA8B,IAAzBA,EAAEguL,YAAY9sL,MAAY,IACjF+nH,EAAK9tD,SAAU,EAEf1pD,EAAEwqC,QACJ,IAAE,OACK,WAAO,IACbvoB,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,MAC3B,EAACosH,EAED5lG,KAAA,SAAKsqK,GACH9wL,KAAK0+D,SAAU,EAEX1+D,KAAKmoE,aAAanoE,KAAKmoE,KAAKxmE,KAAKsmE,cAAcupH,WAE/CxxL,KAAK8sD,MAAS9sD,KAAK8sD,KAAKnrD,KAAKsmE,eAAkB6oH,EAGxC9wL,KAAK8sD,MAAQgkI,aAAoBt3H,IAAAA,MAAAA,OAAAA,aAC1Cx5D,KAAK8sD,KAAKnrD,KAAKsmE,cAAcwpH,WAAa,CACxC9vL,KAAM3B,KAAK8sD,KAAKnrD,KAAKsmE,cAAcwpH,WAAW9vL,KAAKmF,QAAO,SAACvD,GAAC,OAAKA,EAAEomB,KAAOmnK,EAASnnK,IAAI,KAEzF3pB,KAAK8sD,KAAKnrD,KAAKuG,WAAWwpL,SAAmE,IAAxD1xL,KAAK8sD,KAAKnrD,KAAKsmE,cAAcwpH,WAAW9vL,KAAK8C,SANlFzE,KAAK8sD,KAAKnrD,KAAKsmE,cAAcwpH,WAAW9vL,KAAO,GAC/C3B,KAAK8sD,KAAKnrD,KAAKuG,WAAWwpL,UAAW,GAQnCZ,GAAYpxL,MAAMU,QAAQ0wL,EAASnvL,QACrC3B,KAAKuxL,UAAYT,EAASnvL,KAAKiG,KAAI,SAACgC,GAAC,OAAKA,EAAE1B,WAAW2oL,OAAO,IAC9D7wL,KAAK0+D,SAAU,EAEf1pD,EAAEwqC,SAEN,EAAC4sE,EAEDz/G,KAAA,WACEilL,EAAAjyL,UAAMgN,KAAI5M,KAAC,MAENC,KAAK0qB,MAAM80B,QACdvvB,SAAS66C,QAEb,EAAC6mH,CAAA,CA5K8B,CAASf,GCC1C,MCTM,EAA+Br5E,OAAOC,KAAK/D,OAAO,sB,ICGnCs+E,EAAQ,SAAA17B,GAAA,SAAA07B,IAAA,OAAA17B,EAAA5iJ,MAAA,KAAAC,YAAA,KAU1B,OAV0BmmD,EAAAk4H,EAAA17B,GAAA07B,EAAApyL,UAQ3By8E,YAAA,WACE,MAAO,gBAAep8E,KAAK47E,OAAS,IAAI57E,KAAK2pB,KAAS,GACxD,EAACooK,CAAA,CAV0B,C,MAASz+D,GAAM53C,IAAO,CACjDs2G,QAASt2G,IAAAA,OAAa,WACtB5uB,KAAM4uB,IAAAA,OAAa,QACnBm1G,QAASn1G,IAAAA,UAAgB,WACzB12B,OAAQ02B,IAAAA,UAAgB,UACxB1M,UAAW0M,IAAAA,UAAgB,YAAaA,IAAAA,eACxCu2G,UAAWv2G,IAAAA,UAAgB,YAAaA,IAAAA,kBCT1C,MAAM,EAA+B67B,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCKxD,MCDA,GACE,oCAAqCm9E,EACrC,sCAAuCe,EACvC,8BAA+BI,GCP3B,EAA+Bx6E,OAAOC,KCM5Ch+C,IAAAA,aAAAA,IAAqB,eAAe,WAClCA,IAAAA,MAAAA,OAAAA,MAAAA,UAAAA,SAA4CkiB,IAAAA,UAAgB,YAC5DliB,IAAAA,MAAAA,OAAAA,MAAAA,UAAAA,UAA6CkiB,IAAAA,UAAgB,aAC7DliB,IAAAA,MAAAA,OAAAA,MAAAA,UAAAA,SAA4CkiB,IAAAA,OAAa,aAEzDliB,IAAAA,MAAAA,OAAAA,MAAAA,UAAAA,SAA4CkiB,IAAAA,UAAgB,YAC5DliB,IAAAA,MAAAA,OAAAA,MAAAA,UAAAA,SAA4CkiB,IAAAA,UAAgB,YAC5DliB,IAAAA,MAAAA,OAAAA,MAAAA,UAAAA,UAA6CkiB,IAAAA,QAAc,cAE3DliB,IAAAA,MAAAA,OAAAA,WAA8Bu4H,GRL9BtxL,EAAAA,EAAAA,QAAO6mF,IAAc,gBAAgB,SAAU3pB,EAAOwK,GACpD,GAAKA,GAASA,EAAKrb,OAAnB,CAEA,IAAM4kI,EAAWvpH,EAAKrb,OAAO4kI,WACvBhgL,EAASggL,EAAW,KAAO,GAG5BvpH,EAAK+pH,aAAc/pH,EAAK8D,YAAc9D,EAAKrb,SAAW0M,IAAAA,QAAAA,MAA2C,YAAvB2O,EAAKjxB,eAEpFymB,EAAM7kD,IACDpH,EAAM,MACT+xD,IAAAA,UACE,CACEvD,KAAM,eACN5d,QAAS,kBAAMkX,IAAAA,MAAAA,KAAek4H,EAAWC,EAAef,EAAY,CAAEzoH,KAAAA,GAAO,GAE/E3O,IAAAA,WAAAA,MAAqB,qBAAqB9nD,EAAM,kBAfnB,CAkBnC,KAEAjR,EAAAA,EAAAA,QAAOoqF,IAAc,sBAAsB,SAAUltB,EAAO7Q,GAC1D,GAAKA,EAAKolI,YAAcplI,IAAS0M,IAAAA,QAAAA,KAAjC,CAEA,IAAMk4H,EAAW5kI,EAAK4kI,WAChBhgL,EAASggL,EAAW,KAAO,GAEjC/zH,EAAM7kD,IACDpH,EAAM,MACT+xD,IAAAA,UACE,CACEvD,KAAM,eACN5d,QAAS,kBAAMkX,IAAAA,MAAAA,KAAek4H,EAAWC,EAAef,EAAY,CAAE9jI,KAAAA,GAAO,GAE/E0M,IAAAA,WAAAA,MAAqB,mCAAmC9nD,EAAM,eAZT,CAe3D,KKzCAjR,EAAAA,EAAAA,QAAOwqG,IAAAA,UAAgB,UAAU,SAAUttC,GACrC39D,KAAK0xL,YACP/zH,EAAM7kD,IACJ,SACAukE,IAAAA,UAAgB,CACdnd,KAAM,eACNl7D,KAAM,SACN87D,MAAOtH,IAAAA,WAAAA,MAAqB,iDAIpC,GGEF,IAMA/3C,OAAOs+B,OAAO0zD,EAAAA,OAAQ0+E,E;;;;;;;MCxBtB,IAAI35H,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,IACzB0oC,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCWnC2+E,EAAkB,SAAAn8D,GAAA,SAAAm8D,IAAA,QAAAnrF,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAM1B,OAN0B2rE,EAAAgvB,EAAAl2H,KAAA0T,MAAAwiH,EAAA,OAAA91H,OAAAmZ,KAAA,MACrCwzC,UAAI,EAAAm6C,EACJorF,oBAAc,EAAAprF,EACdqrF,2BAAqB,EAAArrF,EACrBsrF,qBAAe,EAAAtrF,EACfurF,iCAA2B,EAAAvrF,EAC3BwrF,iBAAW,EAAAxrF,CAAA,CAN0BptC,EAAAu4H,EAAAn8D,GAM1B,IAAA7J,EAAAgmE,EAAAzyL,UA8HV,OA9HUysH,EAEX7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK8sD,KAAO9sD,KAAK0qB,MAAMoiC,KAEvB,IAAM4lI,EAAiBl5H,IAAAA,MAAU4J,UAAU,iBAAiB,mBAC5DpjE,KAAKqyL,eAAiBK,EAA2B,WACjD1yL,KAAKsyL,sBAAwBI,EAAkC,kBAC/D1yL,KAAKuyL,gBAAkBG,EAA4B,YACnD1yL,KAAKwyL,4BAA8BE,EAA+B,eAClE1yL,KAAKyyL,YAAcC,EAA4B,WACjD,EAACtmE,EAEDtgG,UAAA,WACE,MAAO,kCACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAAA,WAAekH,MAAM,0CAA2C,CACrEllB,SAAUx7C,KAAK8sD,KAAKtR,YAExB,EAAC4wE,EAEDh2F,QAAA,WAAU,IAAAo2F,EAAA,KACFmmE,EAAcn5H,IAAAA,aAAiB9jC,IAAI,eACnCk9J,IAAep5H,IAAAA,MAAU4J,UAAU,iBAAgC,cAAW,QAEpF,OACEpuD,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,QACb9W,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,4CAC9C1rD,EAAA,OAAK8W,UAAU,cACb9W,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAKsyL,sBACZv5H,SAAU,SAAChyD,GACTylH,EAAK8lE,sBAAwBvrL,EAC7BiO,EAAEwqC,QACJ,GAECga,IAAAA,WAAekH,MAAM,oEAExB1rD,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,oEAEhD1rD,EAAA,OAAK8W,UAAU,cACb9W,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAKuyL,gBACZx5H,SAAU,SAAChyD,GACTylH,EAAK+lE,gBAAkBxrL,CACzB,GAECyyD,IAAAA,WAAekH,MAAM,8DAExB1rD,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,8DAE/CiyH,IAAgB3yL,KAAKsyL,uBACpBt9K,EAAA,OAAK8W,UAAU,cACb9W,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAKwyL,4BACZz5H,SAAU,SAAChyD,GACTylH,EAAKgmE,4BAA8BzrL,CACrC,GAECyyD,IAAAA,WAAekH,MAAM,iEAExB1rD,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,iEAGlD1rD,EAAA,OAAK8W,UAAU,cACb9W,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAKqyL,eACZt5H,SAAU,SAAChyD,GACTylH,EAAK6lE,eAAiBtrL,CACxB,GAECyyD,IAAAA,WAAekH,MAAM,6DAExB1rD,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,6DAE/CkyH,GACC59K,EAAA,OAAK8W,UAAU,cACb9W,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAKyyL,YACZ15H,SAAU,SAAChyD,GACTylH,EAAKimE,YAAc1rL,CACrB,GAECyyD,IAAAA,WAAekH,MAAM,0DAExB1rD,EAAA,KAAG8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,0DAGlD1rD,EAAA,OAAK8W,UAAU,cACb9W,EAACyuD,IAAM,CAAC33C,UAAU,yBAAyBw2B,QAAS,kBAAMkqE,EAAK3hD,YAAY,EAAEnM,QAAS1+D,KAAK0+D,QAAS11C,SAAUhpB,KAAK0+D,SAChHlF,IAAAA,WAAekH,MAAM,uDAMlC,EAAC0rD,EAEDvhD,WAAA,WAAa,IAAA4jD,EAAA,KACXzuH,KAAK0+D,SAAU,EAEf,IAAMv7D,EAAO,CACX3C,QAAS,CACPqyL,YAAa7yL,KAAKuyL,gBAClBO,kBAAmB9yL,KAAKsyL,sBACxBS,WAAY/yL,KAAKqyL,eACjBG,4BAA6BxyL,KAAKwyL,4BAClCC,YAAazyL,KAAKyyL,cAItBj5H,IAAAA,QACW,CACP1iC,OAAQ,OACR+f,IAAQ2iB,IAAAA,MAAU4J,UAAU,UAAS,UAAUpjE,KAAK8sD,KAAKnjC,KAAI,aAC7DxmB,KAAMA,IAEP8zB,MAAK,WACJw3F,EAAK/vD,SAAU,EACf+vD,EAAK9hH,MACP,GACJ,EAACylL,CAAA,CApIoC,CAASvpH,KCXhD,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCEnCu/E,EAAmB,SAAAvjE,GAAA,SAAAujE,IAAA,OAAAvjE,EAAAh8G,MAAA,KAAAC,YAAA,KAAAmmD,EAAAm5H,EAAAvjE,GAAA,IAAArD,EAAA4mE,EAAArzL,UA2BrC,OA3BqCysH,EACtCilE,GAAA,WACE,OAAO31G,IAAAA,UAAwB,MAAM37E,KAAKC,KAC5C,EAACosH,EAEDviD,MAAA,WACE,OAAO6R,IAAAA,UAAwB,SAAS37E,KAAKC,KAC/C,EAACosH,EAED5wE,SAAA,WACE,OAAOkgC,IAAAA,UAAwB,YAAY37E,KAAKC,KAClD,EAACosH,EAED6mE,QAAA,WACE,OAAOv3G,IAAAA,UAAwB,WAAW37E,KAAKC,KACjD,EAACosH,EAED8mE,SAAA,WACE,OAAOx3G,IAAAA,UAA+B,YAAY37E,KAAKC,KACzD,EAACosH,EAED+mE,aAAA,WACE,OAAOz3G,IAAAA,UAA+B,gBAAgB37E,KAAKC,KAC7D,EAACosH,EAEDgnE,YAAA,WACE,OAAO13G,IAAAA,UAAgB,cAAeA,IAAAA,eAAqB37E,KAAKC,KAClE,EAACgzL,CAAA,CA3BqC,CAASt3G,KCCjD,UACE,IAAI+8B,IAAAA,QACD3/F,IAAI,wBAAyBk6K,ICAlC,EAAe,GAAf7yL,OACKM,EAAM,CAET,IAAIg4G,IAAAA,OAAaxN,KACd7nC,UAAmB,kBCJxB5J,IAAAA,aAAiB1gD,IAAI,iBAAiB,YCKpCrY,EAAAA,EAAAA,QAAOoqF,IAAc,sBAAsB,SAAUltB,EAAmC7Q,GAEtFA,EAAKumI,gBACH11H,EAAM7kD,IACJ,UACA9D,EAACyuD,IAAM,CACLvD,KAAK,wBACL5d,QAAS,WACPkX,IAAAA,MAAU9sD,KAAK0lL,EAAoB,CAAEtlI,KAAAA,GACvC,GAEC0M,IAAAA,WAAekH,MAAM,qDAG9B,GDjBF,G;;;;;;;MENA,IAAIlI,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCIxDj6C,IAAAA,aAAAA,IAAqB,iBAAiB,WAEpC12D,YAAW,WACL02D,IAAAA,KAAAA,oBAA+C,oBAAT85H,OACxCA,KAAK,SAAU95H,IAAAA,KAAAA,oBAEXA,IAAAA,QAAAA,MACF85H,KAAK,SAAU95H,IAAAA,KAAAA,mBAA6B,CAC1C+5H,QAAS/5H,IAAAA,QAAAA,KAAAA,OAIhB,GAAE,IAEH/4D,EAAAA,EAAAA,QAAOk7D,IAAAA,UAAgB,UAAU,WAG3BnC,IAAAA,KAAAA,qBAAgCA,IAAAA,KAAAA,mBAAAA,WAAuC,OAAyB,oBAAT85H,MACzFA,KAAK,SAAU95H,IAAAA,KAAAA,mBAA6B,CAC1Cg6H,UAAWx+K,EAAEwrC,MAAMjkC,QAInBi9C,IAAAA,KAAAA,eAA8C,oBAAbi6H,UACnCA,SAAS,CACPxgL,MAAO,eACPygL,YAAa1+K,EAAEwrC,MAAMjkC,QAIL,oBAATo3K,OACTA,KAAKz+K,KAAK,CAAC,eAAgBF,EAAEwrC,MAAMjkC,QACnCo3K,KAAKz+K,KAAK,CAAC,kBAEd,GACF,G;;;;;;;MCtCD,IAAIsjD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCNA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,8B,ICEnCmgF,EAAsB,YCD5B,IAAwBjhI,EAAUC,EDCN,kDCDMA,EDCN,GCDJD,EDCI,GCAhChzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDFgB,kBASxC,OATwC,EACzCsN,KAAA,WACE,MAAO,kBACT,EAAC,EAED4sB,eAAA,WACE,OAAO9sF,KAAK0qB,MAAMy9C,KAAK/xC,UAAUy9J,OAC7B,2DACA,4DACN,EAAC,EATwC,C,MAASlnG,IEEpD,UACE,IAAI8rB,IAAAA,YACD3/F,IAAI,qBAAsB86K,GAE7B,IAAIn7E,IAAAA,OAAah7B,KACdra,UAAmB,YACnBA,UAAmB,cCDxB5J,IAAAA,aAAAA,IAAqB,iBAAiB,YCHpC/4D,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAUtf,GAC3Cn+D,KAAK8zL,YACP31H,EAAOrlD,IACL,SACA,EAAC,IAAK,CAAC9T,KAAK,SAAS87D,MAAOtH,IAAAA,WAAAA,MAAqB,4CAA6C0G,KAAK,qBACnG,GAGN,KCPAz/D,EAAAA,EAAAA,QAAO0tE,IAAoB,sBAAsB,SAAUxQ,EAAOO,GAC5DA,EAAW61H,aACbp2H,EAAM7kD,IACJ,SACA,EAAC,IAAM,CAAConD,KAAK,mBAAmB5d,QAAStiD,KAAKg0L,aAAatkJ,KAAKwuB,IAC7D1E,IAAAA,WAAAA,MAAqB,4CAA2C0E,EAAW41H,WAAa,WAAa,UAAQ,YAItH,IAEA3lH,IAAAA,aAAkC,WAChCnuE,KAAKkoE,KAAK,CAAE4rH,UAAW9zL,KAAK8zL,aAAc78J,MAAK,WACzCuiC,IAAAA,QAAAA,QAAoBkS,MACtBlS,IAAAA,QAAAA,IAAgB,UAAUrlD,SAG5Ba,EAAEwqC,QACJ,GACF,GCjBA/+C,EAAAA,EAAAA,QAAO0vF,IAAAA,UAA+B,iBAAiB,SAAUlzC,IAC3Duc,IAAAA,QAAAA,QAAoBg0B,MAAch0B,IAAAA,QAAAA,QAAoBkS,OACxDzuB,EAAOokC,QAAQnsE,KAAK,YAExB,KAEAzU,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,aAAa,SAAUlQ,GAC1D,IAAMO,EAAal+D,KAAK0qB,MAAMwzC,WAE9B,GAAIA,EAAW41H,aAAe9zL,KAAK0qB,MAAMuyB,OAAO+T,IAAMkN,EAAWoR,qBAAsB,CACrF,IAAMI,EAAYxR,EAAWwR,YAE7B,GAAIA,EAAW,CACb,IAAMC,GAAUn7C,EAAAA,EAAAA,UAASk7C,EAAUE,eAAgB,KAGnDjS,EAAM7kD,IAAI,UAAW,aAAM62D,IAAiB,IAC9C,CACF,CACF,KCtBAlvE,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,gBAAgB,SAAUnjD,GACzD1qB,KAAK0qB,MAAMwzC,WAAW41H,aACxBppK,EAAMoB,UAAYkyC,IAAUtzC,EAAMoB,UAAW,8BAEjD,GJIF,G;;;;;;;MKbA,IAAI0sC,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,+BCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,c,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,oB,aCEnCwgF,EAAe,8DAGjC,OAHiC,mBAClCtvJ,KAAA,SAAKyd,GACH,OAAO,SAAKt2B,UAAU,mBAAmBs2B,EAAM9sB,SACjD,EAAC,EAHiC,CAAS+lC,KCF7C,MAAM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCInC4mB,EAAc,uFA8BhC,OA9BgC,EACjCl4E,SAAA,SAASC,GACP,YAAMD,SAAQ,UAACC,EACjB,EAAC,EAEDzd,KAAA,WACE,IAAMvB,EACJ,YACEtX,UAAU,mCACV9mB,KAAK,SACL,cAAahF,KAAK0qB,MAAM4vG,OACxB/sC,UAAWvtF,KAAKyF,QAAQiqC,KAAK1vC,MAC7BsiD,QAAStiD,KAAK0qB,MAAM43B,SAEnB4d,IAAKlgE,KAAK0qB,MAAMw1C,OAIrB,OAAIlgE,KAAK0qB,MAAMvhB,MACN,EAAC,IAAO,CAACoH,KAAMvQ,KAAK0qB,MAAMvhB,OAAQi6B,GAGpCA,CACT,EAAC,EAED39B,QAAA,SAAQwN,GACY,MAAdA,EAAMnG,KAA6B,UAAdmG,EAAMnG,MAC7BmG,EAAMvN,iBACN1F,KAAKO,QAAQkL,QAEjB,EAAC,EA9BgC,CAAS4vD,KCJ5C,MAAM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,yB,aCmBlDgnB,EAAc74C,UAAU2uB,UAAU3pG,MAAM,aAAe,IAAM,OAE7DmlC,EAAS,CACb4+E,OAAQ,CAAEj5G,OAAQ,QAClBgpH,KAAM,CAAEhpH,OAAQ,KAAMs7B,OAAQ,KAAMmlE,WAAW,GAC/CwoB,OAAQ,CAAEjpH,OAAQ,IAAKs7B,OAAQ,IAAKmlE,WAAW,GAC/CyoB,cAAe,CAAElpH,OAAQ,KAAMs7B,OAAQ,KAAMmlE,WAAW,GACxD8O,MAAO,CAAEvvG,OAAQ,KAAMkgG,WAAW,EAAMI,sBAAsB,GAC9DjoG,KAAM,CAAE2H,OAAQ,IAAKs7B,OAAQ,IAAK0kE,YAAa,MAAOC,YAAa,OACnE1zB,KAAM,CAAEvsE,OAAQ,IAAKs7B,OAAQ,cAAe6kE,YAAa,WAAYE,QAAS,aAC9EjhF,MAAO,CAAEpf,OAAQ,KAAMs7B,OAAQ,cAAe6kE,YAAa,WAAYE,QAAS,aAChF8oB,eAAgB,CAAEnpH,OAAQ,KAAMkgG,WAAW,EAAMI,sBAAsB,GACvE8oB,aAAc,CAAEppH,OAAQ,MAAOkgG,WAAW,EAAMK,aAAa,GAC7D8oB,QAAS,CAAErpH,OAAQ,KAAMs7B,OAAQ,KAAM0kE,YAAa,MAAOE,WAAW,EAAMO,WAAW,IAGnF4pB,EAAa,SAACpyG,EAAIqyG,GAItBC,IAAkBD,EAAan0H,GAAIkkC,EAAOpiB,GAC5C,EAEA,SAASmyG,EAAanyG,EAAI7c,EAAKkvH,GAC7B,OAAO,SAAUz4H,GACXA,EAAEuJ,MAAQA,IAASvJ,EAAEyd,SAA2B,MAAhBy5G,GAAyBl3H,EAAE0d,SAA2B,SAAhBw5G,KACxEl3H,EAAEmC,iBACFq2H,EAAWpyG,EAAIqyG,GAEnB,CACF,CAEA,SAASzB,EAAqBC,GAAS,WAC/B78D,EAA2B,mBAAZ68D,EAAyBA,IAAY,IAAI/9D,KAE9D,SAASrqD,EAAQS,EAAMynH,GACrB,OAAO9gE,IAAAA,WAAAA,MAAqB,gCAAgC3mD,EAAI,aAAeynH,EAAS,KAAKG,EAAW,IAAIH,EAAM,IAAM,GAC1H,CAEA,IAAM4B,EAAiB,SAACvyG,GACtB,OAAO,kBAAMoyG,EAAWpyG,EAAI,EAAKe,MAAMq8C,SAASC,OAAO,CACzD,EAsBA,OApBArJ,EAAM7kD,IAAI,SAAU,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,UAAW8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,YAAe,KAC3Hv+D,EAAM7kD,IAAI,OAAQ,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,OAAQ,KAAM8tD,KAAK,cAAc5d,QAAS45E,EAAe,UAAa,KACvHv+D,EAAM7kD,IAAI,SAAU,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,SAAU,KAAM8tD,KAAK,gBAAgB5d,QAAS45E,EAAe,YAAe,KAC/Hv+D,EAAM7kD,IACJ,gBACA,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,iBAAkB8tD,KAAK,uBAAuB5d,QAAS45E,EAAe,mBACrG,KAEFv+D,EAAM7kD,IAAI,QAAS,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,SAAU8tD,KAAK,oBAAoB5d,QAAS45E,EAAe,WAAc,KAC3Hv+D,EAAM7kD,IAAI,UAAW,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,WAAY8tD,KAAK,8BAA8B5d,QAAS45E,EAAe,aAAgB,KAC3Iv+D,EAAM7kD,IAAI,OAAQ,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,QAAS8tD,KAAK,cAAc5d,QAAS45E,EAAe,UAAa,KAClHv+D,EAAM7kD,IAAI,OAAQ,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,QAAS8tD,KAAK,cAAc5d,QAAS45E,EAAe,UAAa,KAClHv+D,EAAM7kD,IAAI,QAAS,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,SAAU8tD,KAAK,eAAe5d,QAAS45E,EAAe,WAAc,KACtHv+D,EAAM7kD,IACJ,iBACA,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,kBAAmB8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,oBAChG,KAEFv+D,EAAM7kD,IAAI,eAAgB,EAACuhH,EAAc,CAAClxH,MAAOiJ,EAAQ,gBAAiB8tD,KAAK,iBAAiB5d,QAAS45E,EAAe,kBAAqB,GAEtIv+D,CACT,CChFAnE,IAAAA,aAAAA,IAAqB,mBDkFd,SAAoBA,IACzB/4D,EAAAA,EAAAA,QAAOikE,IAAAA,UAA6B,eAAe,SAAU/G,GAC3DA,EAAM7kD,IAAI,OAAQgjH,EAAa,OAAQ,IAAK97H,OAC5C29D,EAAM7kD,IAAI,SAAUgjH,EAAa,SAAU,IAAK97H,MAClD,IAEI4mE,IAAAA,UAAAA,sBACF+jC,EAAAA,EAAAA,UAAS/jC,IAAAA,UAAsB,uBAAwB2zD,GAEvD3zD,IAAAA,UAAAA,qBAA4C2zD,GAG9C95H,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,gBAAgB,SAAUjJ,GACrDA,EAAM7kD,IACJ,WACA,EAACm7K,EAAe,CAACp8D,IAAK73H,KAAKk0L,WAAYC,mBAAoB,SAAC3gL,GAAO,OAAM4gL,gBAAkB5gL,CAAO,GAC/FxT,KAAKu6H,uBAAuBt3G,WAE/B,IAEJ,GACF,G;;;;;;;MEzGA,IAAIu1C,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,iC,ICGnC4gF,EAA4B,uFAa9C,OAb8C,EAC/Cn0H,KAAA,WACE,MAAO,aACT,EAAC,EAED9vC,KAAA,WACE,IAAMkuD,EAAet+E,KAAK0qB,MAAM4zD,aAEhC,OAAO9kB,IAAAA,MAAAA,WAAqB8kB,EAAaC,UAAWD,EAAaloD,UAAU6wD,WAC7E,EAAC,EAED7wD,QAAA,WACE,OAAOojC,IAAAA,WAAAA,MAAqB,yDAA0D,CAAE1M,KAAM9sD,KAAK0qB,MAAM4zD,aAAawI,YACxH,EAAC,EAb8C,C,MAASD,ICH1D,MAAM,EAA+B0wB,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,ICEnC6gF,EAAoB,uFAStC,OATsC,EACvCp0H,KAAA,WACE,OAAOlgE,KAAK0qB,MAAMy9C,KAAK/xC,UAAUqB,OAAS,cAAgB,eAC5D,EAAC,EAEDq1D,eAAA,WACE,OAAO9sF,KAAK0qB,MAAMy9C,KAAK/xC,UAAUqB,OAC7B,uDACA,wDACN,EAAC,EATsC,C,MAASk1D,ICElD,UACE,IAAI8rB,IAAAA,YACD3/F,IAAI,mBAAoBw7K,GAE3B,IAAI77E,IAAAA,OAAah7B,KACdra,UAAmB,YACnBA,UAAmB,YCAxB5J,IAAAA,aAAAA,IAAqB,eAAe,WAClCA,IAAAA,uBAAAA,iBAA8C66H,GCL9C5zL,EAAAA,EAAAA,QAAOg9E,IAAAA,UAAsB,UAAU,SAAUtf,GAC3Cn+D,KAAKu0L,YACPp2H,EAAOrlD,IAAI,SAAU,EAAC,IAAK,CAAC9T,KAAK,SAAS87D,MAAOtH,IAAAA,WAAAA,MAAqB,0CAA2C0G,KAAK,gBAE1H,KCHAz/D,EAAAA,EAAAA,QAAO0tE,IAAoB,sBAAsB,SAAUxQ,EAAOO,GAC5DA,EAAWs2H,WACb72H,EAAM7kD,IACJ,OACA,EAAC,IAAM,CAAConD,KAAK,cAAc5d,QAAStiD,KAAKy0L,WAAW/kJ,KAAKwuB,IACtD1E,IAAAA,WAAAA,MAAqB,0CAAyC0E,EAAWq2H,WAAa,SAAW,QAAM,YAIhH,IAEApmH,IAAAA,WAAgC,WAC9BnuE,KAAKkoE,KAAK,CAAEqsH,UAAWv0L,KAAKu0L,aAAct9J,MAAK,WACzCuiC,IAAAA,QAAAA,QAAoBkS,MACtBlS,IAAAA,QAAAA,IAAgB,UAAUrlD,SAG5Ba,EAAEwqC,QACJ,GACF,GFVA/+C,EAAAA,EAAAA,QAAO4wF,IAAAA,UAA4B,qBAAqB,SAAU1zB,GAChEA,EAAM7kD,IAAI,mBAAoB,CAC5BjG,KAAM,mBACNqtD,KAAM,cACNY,MAAOtH,IAAAA,WAAAA,MAAqB,8DAEhC,GACF,G;;;;;;;;MGtBA,IAAIhB,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,kCCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,6m9CCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,6CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iDCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCNA,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,uBCEnCyO,EAAoB,YCD1B,IAAwBvvD,EAAUC,EDCR,uFAId,OAJc,0CACvC+K,MAAQ,GAAE,EACVjnB,QAAS,EAAK,EACd7wC,MAAQ,EAAC,EACTs8G,mBAAoB,EAAK,ECLsBvvD,EDCR,GCDFD,EDCE,GCA9BhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,GDEA,kBA0ExB,OA1EwB,EAEzBjuB,KAAA,WACE,OACE,QAAI7Y,UAAU,+BACZ,QAAIA,UAAU,mBAAmB0tC,IAAIiH,WAAWC,MAAM,oDACrD1gE,KAAK29D,MAAM/1D,KAAI,SAACqa,GAAI,OACnB,QAAInV,IAAKmV,EAAKyI,MAAM5d,KAAMmV,EAAU,IAI5C,EAAC,EAEDvV,KAAA,SAAKsB,EAAMxL,GACTxC,KAAKK,IACFqM,OACArJ,IAAI,CACH2K,KAAMA,EAAO,KACbxL,IAAKA,EAAM,OAEfxC,KAAK02C,QAAS,CAChB,EAAC,EAED/pC,KAAA,WACE3M,KAAKK,IAAIsM,OACT3M,KAAK02C,QAAS,CAChB,EAAC,EAEDkqC,SAAA,SAAS9wE,GAAO,WACd9P,KAAKmiH,mBAAoB,EACzBniH,KAAK6iF,SAAS7iF,KAAK6F,MAAQiK,GAAO,GAClC3C,aAAanN,KAAKoiH,0BAClBpiH,KAAKoiH,yBAA2Bt/G,YAAW,kBAAO,EAAKq/G,mBAAoB,CAAK,GAAG,IACrF,EAAC,EAEDnzG,SAAA,WACEhP,KAAKK,EAAE,4BAA4ByF,GAAG9F,KAAK6F,OAAOhF,KAAK,UAAU4K,OACnE,EAAC,EAEDo3E,SAAA,SAASh9E,EAAOmvE,GACd,IAAIh1E,KAAKmiH,mBAAsBntC,EAA/B,CAEA,IAAMsO,EAAYtjF,KAAKK,IACjBuF,EAAS09E,EAAUziF,KAAK,4BAC1BwhH,EAAcx8G,EAEdw8G,EAAc,EAChBA,EAAcz8G,EAAOnB,OAAS,EACrB49G,GAAez8G,EAAOnB,SAC/B49G,EAAc,GAGhBriH,KAAK6F,MAAQw8G,EAEb,IAAM/tC,EAAQ1uE,EAAOhD,YAAY,UAAUkD,GAAGu8G,GAAax/G,SAAS,UAEpE,GAAImyE,EAAc,CAChB,IAMI3yE,EANEmhF,EAAiBF,EAAUjhF,YAC3BohF,EAAcH,EAAUxhF,SAASU,IACjCkhF,EAAiBD,EAAcH,EAAUjS,cACzC8D,EAAUb,EAAMxyE,SAASU,IACzB4yE,EAAaD,EAAUb,EAAMjD,cAG/B8D,EAAUsO,EACZphF,EAAYmhF,EAAiBC,EAActO,EAAU5lE,SAAS+zE,EAAUjgF,IAAI,eAAgB,IACnF+xE,EAAasO,IACtBrhF,EAAYmhF,EAAiBE,EAAiBtO,EAAa7lE,SAAS+zE,EAAUjgF,IAAI,kBAAmB,UAG9E,IAAdhB,GACTihF,EAAUpmD,MAAK,GAAM0T,QAAQ,CAAEvuC,UAAAA,GAAa,IAEhD,CAjCmD,CAkCrD,EAAC,EA9EsC,OAAS20G,IED9C09E,EAAQ,WAAwB,IAAIA,EAAQ,CAACvjK,KAAK,uCAAuCwjK,IAAI,OAAO9+K,KAAK,QAAQiW,UAAU,QAAQ8oK,QAAQ,CAAChlI,cAA8sf,SAAuBilI,GAAW,IAAI9qL,EAAwB,iBAAZ8qL,EAAqBtlL,SAASslL,EAAU,IAAIA,EAAU,OAAG9qL,EAAK,MAAc6W,EAAa7W,GAAyB6W,EAAa,QAAhC7W,GAAM,QAAuC,IAAI,OAAY,KAALA,GAAW,EAAt4f+qL,YAAYA,GAAan5I,QAAQ,WAAsB37C,KAAKuI,YAAYvI,KAAKuI,WAAWw/B,aAAa4f,EAAW3nD,KAAK6+D,KAAI,GAAO7+D,KAAM,EAAE+Z,MAA+vf,SAAe2U,EAAKqmK,GAA0D,OAAjDA,GAAkB,mBAANA,IAAkBA,EAAI,CAACvkL,SAASukL,KAA0B,iBAAPrmK,EAAgBsmK,EAAYC,GAAWvmK,EAAK,CAACle,SAASukL,EAAIvkL,UAAU0kL,EAAyBhtL,WAAmC,mBAAjB6sL,EAAI7sL,WAAwB6sL,EAAI7sL,WAAWitL,EAAWhkK,KAAuB,iBAAX4jK,EAAI5jK,KAAgB4jK,EAAI5jK,KAAKujK,EAAQvjK,KAAKwjK,IAAII,EAAIJ,KAAKD,EAAQC,IAAI9+K,KAAKk/K,EAAIK,SAA1mBruL,EAAqoBguL,EAAIl/K,MAAM6+K,EAAQ7+K,KAA1nB,iBAAR9O,EAAiBA,EAAM,IAAIA,EAAMA,GAAumB+kB,UAAUipK,EAAIjpK,WAAW4oK,EAAQ5oK,UAAU6vB,QAAQo5I,EAAIp5I,SAAS+4I,EAAQ/4I,UAAjwB,IAA4B50C,CAA8uB,EAAhtgBpD,QAAQA,EAAQY,KAA0wgB,SAAcgM,GAAM8kL,EAAGzlD,UAAU,EAAE,IAAInhH,EAAO4mK,EAAG9wL,KAAKgM,GAAqB,OAAf8kL,EAAGzlD,UAAU,EAASnhH,CAAM,GAAv1gB6mK,EAAQ,CAAC,IAAI,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,UAAUD,EAAG,0qZAA0qZE,EAAO,UAAUC,EAAMr9K,OAAOyI,aAAa,MAAM60K,EAAS,WAAWC,EAAiB,8DAA8D90K,EAAazI,OAAOyI,aAAa,OAAO8zK,EAAQ,SAAS/sI,EAAWp3C,EAAKolL,GAAO,OAAO/0L,SAAS+/B,eAAeg1J,EAAMplL,EAAK5M,QAAQ4xL,EAAO,IAAIhlL,EAAK,CAA4D,SAAS2kL,EAAyBh1H,EAAK1/D,GAAS,MAAM,GAAGL,OAAOK,EAAQ2wB,KAAK3wB,EAAQqV,KAAK,IAAIqqD,EAAK1/D,EAAQm0L,IAAI,CAAC,SAASiB,EAAiBpzK,EAAKqzK,GAAkF,IAAzE,IAAwDC,EAAQ9zK,EAA5DmH,EAAW3G,EAAK2G,WAAW1kB,EAAO0kB,EAAW1kB,OAA8BA,KAA6E,KAAxCud,GAA3B8zK,EAAQ3sK,EAAW1kB,IAAyBud,UAA0B6zK,EAAQ3gL,KAAK4gL,GAA4B,IAAX9zK,GAAgB,oBAAoB8zK,GAAWJ,EAAiBnxL,KAAKuxL,EAAQvvL,SAASC,gBAAgBovL,EAAiBE,EAAQD,GAAU,OAAOA,CAAO,CAAC,SAASE,EAAiBC,GAAS,OAAOlB,EAAYkB,EAAQ90K,QAAQs0K,GAAO,EAAEQ,EAAQryL,QAAQ4xL,EAAO,IAAIS,EAAQ,CAAC,SAASf,EAAUzyK,EAAKhiB,GAAyJ,IAAhJ,IAA4Dy1L,EAAOC,EAASn8I,EAASvZ,EAASs1J,EAAQvlL,EAAK3J,EAAMK,EAAEpB,EAAM4E,EAAIurL,EAAQG,EAAO/zK,EAAxIyzK,EAAQD,EAAiBpzK,EAAK,IAAI/d,EAAOoxL,EAAQpxL,OAAiGA,KAAS,CAA8G,IAA7Gs1C,GAAS,EAAMvZ,EAAS5/B,SAASo+B,yBAAiDzuB,GAAxBulL,EAAQD,EAAQpxL,IAAqBkC,UAAUM,EAAE,EAAQL,EAAMyuL,EAAG3rK,KAAKnZ,IAAM,CAA0M,IAAzM1K,EAAMe,EAAMf,SAAiBoB,GAAGu5B,EAASzsB,YAAY4zC,EAAWp3C,EAAKgF,MAAMtO,EAAEpB,IAAO,IAAwBswL,EAAOJ,EAAxBC,EAAQpvL,EAAM,IAAoCK,EAAEpB,EAAMmwL,EAAQvxL,OAAO2d,EAAI5hB,EAAQgQ,SAAS2lL,EAAO31L,GAAY21L,GAAQ/zK,EAAI,CAA2H,IAAI8zK,KAA9HzrL,EAAI,IAAI4gG,OAAU1vD,QAAQn7C,EAAQm7C,QAAQlxC,EAAImY,aAAa,YAAY,SAASqzK,EAAOz1L,EAAQ0H,WAAW8tL,EAAQG,GAAmCF,EAAOxpL,eAAeypL,IAAoC,IAAzBA,EAASh1K,QAAQ,QAAYzW,EAAI86G,aAAa2wE,IAAWzrL,EAAImY,aAAaszK,EAASD,EAAOC,IAAYzrL,EAAIqhB,UAAUtrB,EAAQsrB,UAAUrhB,EAAIo0D,IAAIm3H,EAAQvrL,EAAI2X,IAAIA,EAAI23B,GAAS,EAAKvZ,EAASzsB,YAAYtJ,EAAI,CAAKA,GAAI+1B,EAASzsB,YAAY4zC,EAAWquI,GAAQ,IAAQvrL,EAAI,IAAI,CAAIsvC,IAAa9yC,EAAEsJ,EAAK9L,QAAQ+7B,EAASzsB,YAAY4zC,EAAWp3C,EAAKgF,MAAMtO,IAAG,IAAO6uL,EAAQvtL,WAAWw/B,aAAavH,EAASs1J,GAAS,CAAC,OAAOtzK,CAAI,CAAC,SAASwyK,EAAYx1H,EAAIh/D,GAAS,OAAOmD,EAAQ67D,GAAI,SAASw2H,GAAS,IAAsFC,EAAOC,EAAzF7yK,EAAI2yK,EAAQG,EAAOJ,EAAiBC,GAAS5zK,EAAI5hB,EAAQgQ,SAAS2lL,EAAO31L,GAAyB,GAAG21L,GAAQ/zK,EAAI,CAA0J,IAAI8zK,KAA7J7yK,EAAI,QAAQljB,OAAO,UAAUK,EAAQsrB,UAAU,KAAK,qBAAqB,QAAQkqK,EAAQ,IAAI,SAAS5zK,EAAI,KAAK6zK,EAAOz1L,EAAQ0H,WAAW8tL,EAAQG,GAAmCF,EAAOxpL,eAAeypL,IAAoC,IAAzBA,EAASh1K,QAAQ,QAA4C,IAAjCmC,EAAInC,QAAQ,IAAIg1K,EAAS,OAAW7yK,EAAIA,EAAIljB,OAAO,IAAI+1L,EAAS,KAAgBD,EAAOC,GAAtvEvyL,QAAQ8xL,EAASlsB,GAAgvE,MAAMlmJ,EAAIA,EAAIljB,OAAO,KAAK,CAAC,OAAOkjB,CAAG,GAAE,CAAC,SAASkmJ,EAASv0J,GAAG,OAAOsgL,EAAQtgL,EAAE,CAAC,SAASmgL,IAAa,OAAO,IAAI,CAA4wB,SAASxxL,EAAQ4M,EAAKC,GAAU,OAAO2H,OAAO5H,GAAM5M,QAAQ0xL,EAAG7kL,EAAS,CAA0F,SAASskL,EAAYsB,EAAkBC,GAA0B,IAArB,IAAIz+K,EAAE,GAAGjD,EAAE,EAAE/J,EAAE,EAAE3D,EAAE,EAAQA,EAAEmvL,EAAkB3xL,QAAQkQ,EAAEyhL,EAAkBxtK,WAAW3hB,KAAQ2D,GAAGgN,EAAE1C,MAAM,OAAOtK,EAAE,OAAO,KAAK+J,EAAE,QAAQ4G,SAAS,KAAK3Q,EAAE,GAAU,OAAO+J,GAAGA,GAAG,MAAO/J,EAAE+J,EAAOiD,EAAE1C,KAAKP,EAAE4G,SAAS,KAAM,OAAO3D,EAAEQ,KAAKi+K,GAAK,IAAI,CAAC,CAAl8hB,GACZ,UCKA,IAAMb,EAAQr9K,OAAOyI,aAAa,MAI5B20K,EAAS,UASA,SAASe,EAAiBC,GACvC,OAAO7B,EAAAA,QAAAA,YAA4B6B,EAAMr1K,QAAQs0K,GAAS,EAAIe,EAAM5yL,QAAQ4xL,EAAQ,IAAMgB,EAC5F,CClBA,QAAe,+CAFQ,0BAA0B7sK,KAAKgrK,EAAAA,MAAc,GAEC,i0BCJrE,MAAM,EAA+Bn9E,OAAOC,KAAK/D,OAAO,mCCOlDjzG,EAAU,CACd2wB,KAAAA,EACAjpB,WAAY,iBAAO,CACjBw2D,QAAS,OACV,GCNHlF,IAAAA,aAAAA,IAAqB,gBAAgB,WCMtB,IACPg9H,EACAthH,EACAnvE,EAFAywL,EAAY/0K,OAAOvB,KAAKu2K,GACxBvhH,EAAa70E,EAAE,2DACf0F,EAAW,IAAIm8G,GAErBzhH,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,YAAY,WACvC,IAAM+gD,EAAU3nH,KAAKK,EAAE,sBAAsBigC,KAAK,iDAElDtgC,KAAK4hF,UAAY,IAAInC,KACrBz/E,KAAK4hF,UACF/nD,MAAK,kBAAM9zB,EAAS2wC,MAAM,IAC1BkpC,MAAK,kBAAM75E,EAAS66E,UAAU,EAAE,IAChCd,QAAO,kBAAM/5E,EAAS66E,SAAS,EAAE,IACjCZ,SAASj6E,EAASiJ,SAAS0gC,KAAK3pC,IAChCs6E,SAASt6E,EAAS4G,KAAK+iC,KAAK3pC,IAC5B46E,OAAOgnC,GAEVA,EAAQ9/E,MAAMqtC,EAChB,KAEAz0E,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,qBAAqB,SAAU3pB,GAAQ,IAC9Dy5I,EACAC,EACAh0E,EAH8D,OAWlE1lE,EAAO6nB,eAAe5vD,MAAK,WACzB,IAAMkrB,EAAY,EAAK1V,MAAMq8C,SAASC,OAAO5B,oBAEvCzf,EAASvlB,EAAU,GAEzB,KAAIA,EAAU,GAAKulB,EAAS,GAA5B,CAKA,IAAMmiE,EAAY,EAAKp9F,MAAMq8C,SAASC,OAAO3B,cAAc,IAC3DsxH,EAAgB,EAChB,IAAK,IAAI1vL,EAAI6gH,EAAUrjH,OAAS,EAAGwC,GAAK,EAAGA,IAAK,CAC9C,IAAM0Z,EAAYmnG,EAAUxoD,OAAOr4D,EAAG,GAGtC,IAAK,sBAAsB1C,KAAKoc,GAAY,MAE5C,GAAkB,MAAdA,IAA2B,GAAL1Z,GAAU,KAAK1C,KAAKujH,EAAUxoD,OAAOr4D,EAAI,EAAG,KAAM,CAC1EyvL,EAAgBzvL,EAAI,EACpB0vL,EAAgBhxI,EAASmiE,EAAUrjH,OAASwC,EAAI,EAChD,KACF,CACF,CAKA,GAHAlB,EAAS4G,OACT5G,EAAS2wC,QAAS,EAEdigJ,EAAe,CACjBh0E,EAAQmF,EAAU3tG,UAAUu8K,GAAelwL,cAE3C,IAAMu8G,EAAiB,SAAH,GAAoC,IAArBwzE,EAAK,EAALA,MAAO1jL,EAAI,EAAJA,KAAM9I,EAAI,EAAJA,KAC9C,OACE,YACE+C,IAAKypL,EACLj0I,QAAS,kBAzCM6+D,EAyCgBo1E,EAxCvC,EAAK7rK,MAAMq8C,SAASC,OAAOtB,oBAAoBixH,EAAgB,EAAGx1E,EAAc,UAEhFp7G,EAAS4G,OAHa,IAACw0G,CAyCsB,EACrC7R,aAAc,WACZvpG,EAAS88E,SAASxiF,EAAEL,MAAM0E,SAASmB,QAAU,EAC/C,GAEA,SAAKg5D,IAAK03H,EAAOzqK,UAAU,QAAQiwI,UAAU,QAAQr9F,QAAQ,OAAOt8C,IAAQw0K,EAAG,SAAS7sL,EAAI,SAC3F8I,EAGP,GAEyB,WACvB,IAG8B2sD,EACtB8vF,EAJFunC,EAAe,GAOfC,GAJwBt3H,EAIDmjD,EAHrB2sC,EAAW,IAAItoJ,OAAO,QAAU,kBAAkBrD,QAAQ,OAAQ,QAAU,QAAS,KACpF,IAAIqD,OAAO,OAASw4D,EAAIh5D,cAAc7C,QAAQ,OAAQ,aAAaA,QAAQ2rJ,EAAU,UAAY,IAAK,MAI3GynC,EAAiB,EAEfC,EAAqB,SAACpnK,GAC1B,IAAK,IAAI3oB,EAAI,EAAGA,EAAIuvL,EAAU/xL,QAAUsyL,EAAiB,EAAG9vL,IAAK,CAC/D,IAAMgwL,EAAWT,EAAUvvL,GAE3B,IAAwC,IAApC4vL,EAAa31K,QAAQ+1K,GAEvB,IADA,IACsB,EAAtB,IADcR,EAASQ,MACD,aACpB,GAAIrnK,EADO,SACQ,GACfmnK,EACFF,EAAa3hL,KAAK+hL,GAClB,KACF,CAGN,CACF,EAGAD,GAAmB,SAACT,GAAK,OAA8B,IAAzBA,EAAMr1K,QAAQyhG,EAAY,IAGxDq0E,GAAmB,SAACT,GAAK,OAAKO,EAASvyL,KAAKgyL,EAAM,IAElD,IAAMrzE,EAAc2zE,EACjBjvL,KAAI,SAAC2uL,GAAK,MAAM,CACfA,MAAAA,EACA1jL,KAAM4jL,EAASF,GAAO,GACtBxsL,KAAMusL,EAAiBC,GACxB,IACA3uL,IAAIm7G,GAEP,GAAIG,EAAYz+G,OAAQ,CACtBsB,EAAS43D,MAAQulD,EACjBluG,EAAEmqC,OAAO+1B,EAAW,GAAInvE,EAASo5C,UAEjCp5C,EAAS2G,OACT,IAAMolD,EAAc,EAAKpnC,MAAMq8C,SAASC,OAAOzV,oBAAoBolI,GAC7D/nL,EAAQ7I,EAAS1F,IAAIshH,aACrBz/G,EAAS6D,EAAS1F,IAAIgxE,cACtB3sE,EAASqB,EAAS1F,IAAIy9C,eACxB9vC,EAAO8jD,EAAY9jD,KACnBxL,EAAMsvD,EAAYtvD,IAAM,GAGxBA,EAAMN,EAASwC,EAAOxC,WACxBM,EAAMsvD,EAAYtvD,IAAMN,EAAS,IAE/B8L,EAAOY,EAAQlK,EAAOkK,UACxBZ,EAAOtJ,EAAOkK,QAAUA,GAI1BpM,EAAMS,KAAKC,MAAMwB,EAAO5C,SAASU,IAAMnC,EAAEO,UAAUyB,aAAcG,GACjEwL,EAAO/K,KAAKC,KAAKwB,EAAO5C,SAASkM,KAAMA,GAEvCjI,EAAS2G,KAAKsB,EAAMxL,EACtB,CACF,CAEAygH,GAEAl9G,EAAS88E,SAAS,GAClB98E,EAAS1F,IAAIgC,UAAU,GACvB0D,EAAS2wC,QAAS,CACpB,CArHqC,CAsHvC,GACF,KAEAj2C,EAAAA,EAAAA,QAAOmmE,IAAAA,UAAsB,gBAAgB,SAAUjJ,GAAO,WAC5DA,EAAM7kD,IACJ,QACA,EAAC,IAAgB,CAACwpC,QAAS,kBAAM,EAAK53B,MAAMq8C,SAASC,OAAO1B,eAAe,KAAK,EAAEpF,KAAK,gBACpF1G,IAAIiH,WAAWC,MAAM,8CAG5B,KFnJAiqC,EAAAA,EAAAA,UAAStjB,IAAAA,UAAgB,eAAe,SAAUn/C,GAChD,IATes3B,EACXnzC,EAQEggE,EAAcnkD,IAEpB,GAAIloC,KAAKk3L,iBAAmB7qG,EAAa,CAWvC,IAAM8qG,EAAezC,EAAAA,OAtBRl1H,EAsBgC6sB,GArB3ChgE,EAAMzrB,SAAS2G,eAAeC,sBAChCrE,KAAKuE,UAAY83D,EAEdnzC,EAAIlpB,MAkBoD3C,GAG3DR,KAAKo3L,qBAAuBD,EAAazvL,UAEzC1H,KAAKk3L,eAAiB7qG,CACxB,CAEA,OAAOrsF,KAAKo3L,oBACd,KAEAzsF,EAAAA,EAAAA,UAAS34B,IAAIC,cAAe,WAAW,SAAC/pC,EAAU33B,EAAMhQ,GACtD2nC,EAAS33B,EAAMhQ,GAEfm0L,EAAAA,MAAcn0L,EAASC,EACzB,GC7CF;;;;;;;6BEZoEkX,EAAOC,QAAmI,WAAW,aAAa,IAAUpU,EAAE,IAAI0R,EAAE,KAAK2C,EAAE,cAAc3Q,EAAE,SAAS6D,EAAE,SAASM,EAAE,OAAO1B,EAAE,MAAM+H,EAAE,OAAOkD,EAAE,QAAQE,EAAE,UAAUkB,EAAE,OAAOnB,EAAE,OAAO1N,EAAE,eAAe7G,EAAE,6FAA6FwX,EAAE,sFAAsFC,EAAE,CAACjF,KAAK,KAAKkF,SAAS,2DAA2DhM,MAAM,KAAKiM,OAAO,wFAAwFjM,MAAM,KAAKkM,QAAQ,SAASC,GAAG,IAAI3U,EAAE,CAAC,KAAK,KAAK,KAAK,MAAM0R,EAAEiD,EAAE,IAAI,MAAM,IAAIA,GAAG3U,GAAG0R,EAAE,IAAI,KAAK1R,EAAE0R,IAAI1R,EAAE,IAAI,GAAG,GAAGyR,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEO,OAAOD,GAAG,OAAON,GAAGA,EAAEnT,QAAQlB,EAAE2U,EAAE,GAAGxY,MAAM6D,EAAE,EAAEqU,EAAEnT,QAAQ2T,KAAKnD,GAAGiD,CAAC,EAAEG,EAAE,CAACvN,EAAEkK,EAAEsD,EAAE,SAASJ,GAAG,IAAI3U,GAAG2U,EAAEK,YAAYtD,EAAEhS,KAAKuV,IAAIjV,GAAGqU,EAAE3U,KAAKwV,MAAMxD,EAAE,IAAIhO,EAAEgO,EAAE,GAAG,OAAO1R,GAAG,EAAE,IAAI,KAAKyR,EAAE4C,EAAE,EAAE,KAAK,IAAI5C,EAAE/N,EAAE,EAAE,IAAI,EAAE+N,EAAE,SAASkD,EAAE3U,EAAE0R,GAAG,GAAG1R,EAAEmV,OAAOzD,EAAEyD,OAAO,OAAOR,EAAEjD,EAAE1R,GAAG,IAAIqU,EAAE,IAAI3C,EAAE0D,OAAOpV,EAAEoV,SAAS1D,EAAE2D,QAAQrV,EAAEqV,SAAS3R,EAAE1D,EAAEsV,QAAQC,IAAIlB,EAAEjD,GAAG7J,EAAEmK,EAAEhO,EAAE,EAAEmE,EAAE7H,EAAEsV,QAAQC,IAAIlB,GAAG9M,GAAG,EAAE,GAAG6J,GAAG,UAAUiD,GAAG3C,EAAEhO,IAAI6D,EAAE7D,EAAEmE,EAAEA,EAAEnE,KAAK,EAAE,EAAEyC,EAAE,SAASwO,GAAG,OAAOA,EAAE,EAAEjV,KAAK8V,KAAKb,IAAI,EAAEjV,KAAKwV,MAAMP,EAAE,EAAEtN,EAAE,SAASsN,GAAG,MAAM,CAACJ,EAAEnD,EAAEkD,EAAE9B,EAAEiD,EAAEvH,EAAEmD,EAAElL,EAAEuP,EAAErE,EAAEmB,EAAE3K,EAAE4J,EAAElK,EAAEA,EAAE7D,EAAEiS,GAAGtB,EAAEuB,EAAEtE,GAAGqD,IAAIC,OAAOD,GAAG,IAAI1R,cAAc7C,QAAQ,KAAK,GAAG,EAAEyH,EAAE,SAAS8M,GAAG,YAAO,IAASA,CAAC,GAAGpD,EAAE,KAAKmE,EAAE,CAAC,EAAEA,EAAEnE,GAAGgD,EAAE,IAAIlN,EAAE,iBAAiByO,EAAE,SAASnB,GAAG,OAAOA,aAAakB,MAAMlB,IAAIA,EAAEtN,GAAG,EAAEoO,EAAE,SAASd,EAAE3U,EAAE0R,EAAE2C,GAAG,IAAI3Q,EAAE,IAAI1D,EAAE,OAAOuR,EAAE,GAAG,iBAAiBvR,EAAE,CAAC,IAAIuH,EAAEvH,EAAEiD,cAAcyS,EAAEnO,KAAK7D,EAAE6D,GAAGmK,IAAIgE,EAAEnO,GAAGmK,EAAEhO,EAAE6D,GAAG,IAAIM,EAAE7H,EAAEwI,MAAM,KAAK,IAAI9E,GAAGmE,EAAE3G,OAAO,EAAE,OAAOyT,EAAE9M,EAAE,GAAG,KAAK,CAAC,IAAI1B,EAAEnG,EAAEsP,KAAKoG,EAAEvP,GAAGnG,EAAE0D,EAAEyC,CAAC,CAAC,OAAOkO,GAAG3Q,IAAI6N,EAAE7N,GAAGA,IAAI2Q,GAAG9C,CAAC,EAAEyE,EAAE,SAASrB,EAAE3U,GAAG,GAAG8V,EAAEnB,GAAG,OAAOA,EAAEW,QAAQ,IAAI5D,EAAE,iBAAiB1R,EAAEA,EAAE,CAAC,EAAE,OAAO0R,EAAEyD,KAAKR,EAAEjD,EAAEqE,KAAK5F,UAAU,IAAI0F,EAAEnE,EAAE,EAAErL,EAAEyO,EAAEzO,EAAE1C,EAAE8R,EAAEpP,EAAE3C,EAAEoS,EAAEzP,EAAEoP,EAAE,SAASd,EAAE3U,GAAG,OAAOgW,EAAErB,EAAE,CAACsB,OAAOjW,EAAEkW,GAAGC,IAAInW,EAAEoW,GAAGC,EAAErW,EAAEsW,GAAGC,QAAQvW,EAAEuW,SAAS,EAAE,IAAIV,EAAE,WAAW,SAAStB,EAAEI,GAAGlY,KAAKyZ,GAAGT,EAAEd,EAAEsB,OAAO,MAAK,GAAIxZ,KAAK+Z,MAAM7B,GAAGlY,KAAK6Z,GAAG7Z,KAAK6Z,IAAI3B,EAAE0B,GAAG,CAAC,EAAE5Z,KAAK4K,IAAG,CAAE,CAAC,IAAIoK,EAAE8C,EAAEnY,UAAU,OAAOqV,EAAE+E,MAAM,SAAS7B,GAAGlY,KAAKga,GAAG,SAAS9B,GAAG,IAAI3U,EAAE2U,EAAEQ,KAAKzD,EAAEiD,EAAEwB,IAAI,GAAG,OAAOnW,EAAE,OAAO,IAAI0W,KAAKC,KAAK,GAAGtQ,EAAEwB,EAAE7H,GAAG,OAAO,IAAI0W,KAAK,GAAG1W,aAAa0W,KAAK,OAAO,IAAIA,KAAK1W,GAAG,GAAG,iBAAiBA,IAAI,MAAMgB,KAAKhB,GAAG,CAAC,IAAIqU,EAAErU,EAAEqD,MAAMvG,GAAG,GAAGuX,EAAE,CAAC,IAAI3Q,EAAE2Q,EAAE,GAAG,GAAG,EAAE9M,GAAG8M,EAAE,IAAI,KAAKuC,UAAU,EAAE,GAAG,OAAOlF,EAAE,IAAIgF,KAAKA,KAAKG,IAAIxC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,IAAI,IAAImP,KAAKrC,EAAE,GAAG3Q,EAAE2Q,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAE9M,EAAE,CAAC,CAAC,OAAO,IAAImP,KAAK1W,EAAE,CAA3X,CAA6X2U,GAAGlY,KAAK8I,MAAM,EAAEkM,EAAElM,KAAK,WAAW,IAAIoP,EAAElY,KAAKga,GAAGha,KAAKqa,GAAGnC,EAAEoC,cAActa,KAAKua,GAAGrC,EAAEsC,WAAWxa,KAAKya,GAAGvC,EAAEwC,UAAU1a,KAAK2a,GAAGzC,EAAE0C,SAAS5a,KAAK6a,GAAG3C,EAAE4C,WAAW9a,KAAK+a,GAAG7C,EAAE8C,aAAahb,KAAKib,GAAG/C,EAAEgD,aAAalb,KAAKmb,IAAIjD,EAAEkD,iBAAiB,EAAEpG,EAAEqG,OAAO,WAAW,OAAOzR,CAAC,EAAEoL,EAAEsG,QAAQ,WAAW,QAAQtb,KAAKga,GAAGuB,aAAarU,EAAE,EAAE8N,EAAEwG,OAAO,SAAStD,EAAE3U,GAAG,IAAI0R,EAAEsE,EAAErB,GAAG,OAAOlY,KAAKyb,QAAQlY,IAAI0R,GAAGA,GAAGjV,KAAK0b,MAAMnY,EAAE,EAAEyR,EAAE2G,QAAQ,SAASzD,EAAE3U,GAAG,OAAOgW,EAAErB,GAAGlY,KAAKyb,QAAQlY,EAAE,EAAEyR,EAAE4G,SAAS,SAAS1D,EAAE3U,GAAG,OAAOvD,KAAK0b,MAAMnY,GAAGgW,EAAErB,EAAE,EAAElD,EAAE6G,GAAG,SAAS3D,EAAE3U,EAAE0R,GAAG,OAAOrL,EAAEwB,EAAE8M,GAAGlY,KAAKuD,GAAGvD,KAAK8b,IAAI7G,EAAEiD,EAAE,EAAElD,EAAE+G,KAAK,WAAW,OAAO9Y,KAAKwV,MAAMzY,KAAKgc,UAAU,IAAI,EAAEhH,EAAEgH,QAAQ,WAAW,OAAOhc,KAAKga,GAAGiC,SAAS,EAAEjH,EAAEyG,QAAQ,SAASvD,EAAE3U,GAAG,IAAI0R,EAAEjV,KAAK4X,IAAIhO,EAAEwB,EAAE7H,IAAIA,EAAEsR,EAAEjL,EAAEgB,EAAEsN,GAAGhR,EAAE,SAASgR,EAAE3U,GAAG,IAAI0D,EAAE2C,EAAEoP,EAAE/D,EAAE0E,GAAGM,KAAKG,IAAInF,EAAEoF,GAAG9W,EAAE2U,GAAG,IAAI+B,KAAKhF,EAAEoF,GAAG9W,EAAE2U,GAAGjD,GAAG,OAAO2C,EAAE3Q,EAAEA,EAAEyU,MAAMhS,EAAE,EAAErJ,EAAE,SAAS6X,EAAE3U,GAAG,OAAOqG,EAAEoP,EAAE/D,EAAEiH,SAAShE,GAAGzE,MAAMwB,EAAEiH,OAAO,MAAMtE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMrC,MAAMhS,IAAI0R,EAAE,EAAE4C,EAAE7X,KAAK2a,GAAG7C,EAAE9X,KAAKua,GAAGvF,EAAEhV,KAAKya,GAAGpC,EAAE,OAAOrY,KAAK2Z,GAAG,MAAM,IAAI,OAAO9E,GAAG,KAAKkB,EAAE,OAAO6B,EAAE1Q,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAKyN,EAAE,OAAOiD,EAAE1Q,EAAE,EAAE4Q,GAAG5Q,EAAE,EAAE4Q,EAAE,GAAG,KAAKrG,EAAE,IAAIqD,EAAE9U,KAAKmc,UAAUC,WAAW,EAAEnD,GAAGpB,EAAE/C,EAAE+C,EAAE,EAAEA,GAAG/C,EAAE,OAAO5N,EAAE0Q,EAAE5C,EAAEiE,EAAEjE,GAAG,EAAEiE,GAAGnB,GAAG,KAAKpO,EAAE,KAAKkL,EAAE,OAAOvU,EAAEgY,EAAE,QAAQ,GAAG,KAAKjN,EAAE,OAAO/K,EAAEgY,EAAE,UAAU,GAAG,KAAKvN,EAAE,OAAOzK,EAAEgY,EAAE,UAAU,GAAG,KAAKpR,EAAE,OAAO5G,EAAEgY,EAAE,eAAe,GAAG,QAAQ,OAAOrY,KAAK6Y,QAAQ,EAAE7D,EAAE0G,MAAM,SAASxD,GAAG,OAAOlY,KAAKyb,QAAQvD,GAAE,EAAG,EAAElD,EAAEqH,KAAK,SAASnE,EAAE3U,GAAG,IAAI0R,EAAExD,EAAE7H,EAAEgB,EAAEsN,GAAGrD,EAAE,OAAO7U,KAAK2Z,GAAG,MAAM,IAAIzS,GAAG+N,EAAE,CAAC,EAAEA,EAAEvL,GAAGmL,EAAE,OAAOI,EAAEL,GAAGC,EAAE,OAAOI,EAAEN,GAAGE,EAAE,QAAQI,EAAEc,GAAGlB,EAAE,WAAWI,EAAE7J,GAAGyJ,EAAE,QAAQI,EAAEnK,GAAG+J,EAAE,UAAUI,EAAEhO,GAAG4N,EAAE,UAAUI,EAAE2C,GAAG/C,EAAE,eAAeI,GAAGxD,GAAGpR,EAAEoR,IAAI/H,EAAE1J,KAAKya,IAAIlX,EAAEvD,KAAK2a,IAAIpX,EAAE,GAAGkO,IAAIkD,GAAGlD,IAAIsE,EAAE,CAAC,IAAI8B,EAAE7X,KAAK6Y,QAAQiD,IAAIlH,EAAE,GAAGiD,EAAEmC,GAAG9S,GAAG7G,GAAGwX,EAAE/O,OAAO9I,KAAKga,GAAGnC,EAAEiE,IAAIlH,EAAE3R,KAAK4T,IAAI7W,KAAKya,GAAG5C,EAAEyE,gBAAgBtC,EAAE,MAAM9S,GAAGlH,KAAKga,GAAG9S,GAAG7G,GAAG,OAAOL,KAAK8I,OAAO9I,IAAI,EAAEgV,EAAE8G,IAAI,SAAS5D,EAAE3U,GAAG,OAAOvD,KAAK6Y,QAAQwD,KAAKnE,EAAE3U,EAAE,EAAEyR,EAAEuH,IAAI,SAASrE,GAAG,OAAOlY,KAAK4J,EAAEgB,EAAEsN,KAAK,EAAElD,EAAE8D,IAAI,SAASlB,EAAE/C,GAAG,IAAID,EAAE1N,EAAElH,KAAK4X,EAAE4E,OAAO5E,GAAG,IAAIvX,EAAEuJ,EAAEgB,EAAEiK,GAAGgD,EAAE,SAASK,GAAG,IAAI3U,EAAEgW,EAAErS,GAAG,OAAO0C,EAAEoP,EAAEzV,EAAEmV,KAAKnV,EAAEmV,OAAOzV,KAAK4M,MAAMqI,EAAEN,IAAI1Q,EAAE,EAAE,GAAG7G,IAAIsU,EAAE,OAAO3U,KAAK8b,IAAInH,EAAE3U,KAAKua,GAAG3C,GAAG,GAAGvX,IAAI0V,EAAE,OAAO/V,KAAK8b,IAAI/F,EAAE/V,KAAKqa,GAAGzC,GAAG,GAAGvX,IAAIqJ,EAAE,OAAOmO,EAAE,GAAG,GAAGxX,IAAIoR,EAAE,OAAOoG,EAAE,GAAG,IAAIC,GAAGlD,EAAE,CAAC,EAAEA,EAAE9J,GAAGvH,EAAEqR,EAAExJ,GAAG6J,EAAEL,EAAE3N,GAA50I,IAAi1I2N,GAAGvU,IAAI,EAAE2U,EAAEhV,KAAKga,GAAGiC,UAAUrE,EAAEE,EAAE,OAAOlO,EAAEoP,EAAEhE,EAAEhV,KAAK,EAAEgV,EAAEyH,SAAS,SAASvE,EAAE3U,GAAG,OAAOvD,KAAK8Y,KAAK,EAAEZ,EAAE3U,EAAE,EAAEyR,EAAE0H,OAAO,SAASxE,GAAG,IAAI3U,EAAEvD,KAAKiV,EAAEjV,KAAKmc,UAAU,IAAInc,KAAKsb,UAAU,OAAOrG,EAAE0H,aAAazV,EAAE,IAAI0Q,EAAEM,GAAG,uBAAuBjR,EAAE2C,EAAE0O,EAAEtY,MAAM8K,EAAE9K,KAAK6a,GAAGzP,EAAEpL,KAAK+a,GAAGrR,EAAE1J,KAAKua,GAAG9I,EAAEwD,EAAE8C,SAASpD,EAAEM,EAAE+C,OAAOnD,EAAEI,EAAE2H,SAAS7G,EAAE,SAASmC,EAAEjD,EAAEhO,EAAE6D,GAAG,OAAOoN,IAAIA,EAAEjD,IAAIiD,EAAE3U,EAAEqU,KAAK3Q,EAAEgO,GAAGM,MAAM,EAAEzK,EAAE,EAAE8J,EAAE,SAASsD,GAAG,OAAOtO,EAAEkB,EAAEA,EAAE,IAAI,GAAGoN,EAAE,IAAI,EAAE7X,EAAEwU,GAAG,SAASqD,EAAE3U,EAAE0R,GAAG,IAAI2C,EAAEM,EAAE,GAAG,KAAK,KAAK,OAAOjD,EAAE2C,EAAEpR,cAAcoR,CAAC,EAAE,OAAOA,EAAEjU,QAAQkU,GAAG,SAASK,EAAEN,GAAG,OAAOA,GAAG,SAASM,GAAG,OAAOA,GAAG,IAAI,KAAK,OAAOC,OAAO5U,EAAE8W,IAAI9E,OAAO,GAAG,IAAI,OAAO,OAAO3L,EAAEkB,EAAEvH,EAAE8W,GAAG,EAAE,KAAK,IAAI,IAAI,OAAO3Q,EAAE,EAAE,IAAI,KAAK,OAAOE,EAAEkB,EAAEpB,EAAE,EAAE,EAAE,KAAK,IAAI,MAAM,OAAOqM,EAAEd,EAAEgI,YAAYvT,EAAEiL,EAAE,GAAG,IAAI,OAAO,OAAOoB,EAAEpB,EAAEjL,GAAG,IAAI,IAAI,OAAOnG,EAAEkX,GAAG,IAAI,KAAK,OAAO7Q,EAAEkB,EAAEvH,EAAEkX,GAAG,EAAE,KAAK,IAAI,IAAI,OAAOtC,OAAO5U,EAAEoX,IAAI,IAAI,KAAK,OAAO5E,EAAEd,EAAEoI,YAAY9Z,EAAEoX,GAAGlJ,EAAE,GAAG,IAAI,MAAM,OAAOsE,EAAEd,EAAEsI,cAAcha,EAAEoX,GAAGlJ,EAAE,GAAG,IAAI,OAAO,OAAOA,EAAElO,EAAEoX,IAAI,IAAI,IAAI,OAAOxC,OAAOrN,GAAG,IAAI,KAAK,OAAOlB,EAAEkB,EAAEA,EAAE,EAAE,KAAK,IAAI,IAAI,OAAO8J,EAAE,GAAG,IAAI,KAAK,OAAOA,EAAE,GAAG,IAAI,IAAI,OAAOvU,EAAEyK,EAAEM,GAAE,GAAI,IAAI,IAAI,OAAO/K,EAAEyK,EAAEM,GAAE,GAAI,IAAI,IAAI,OAAO+M,OAAO/M,GAAG,IAAI,KAAK,OAAOxB,EAAEkB,EAAEM,EAAE,EAAE,KAAK,IAAI,IAAI,OAAO+M,OAAO5U,EAAE0X,IAAI,IAAI,KAAK,OAAOrR,EAAEkB,EAAEvH,EAAE0X,GAAG,EAAE,KAAK,IAAI,MAAM,OAAOrR,EAAEkB,EAAEvH,EAAE4X,IAAI,EAAE,KAAK,IAAI,IAAI,OAAOlU,EAAE,OAAO,IAAI,CAAptB,CAAstBiR,IAAIjR,EAAEtD,QAAQ,IAAI,GAAG,GAAG,EAAEqR,EAAEuD,UAAU,WAAW,OAAO,IAAItV,KAAK4M,MAAM7P,KAAKga,GAAGiE,oBAAoB,GAAG,EAAEjJ,EAAEkJ,KAAK,SAAStG,EAAEhD,EAAE1N,GAAG,IAAI7G,EAAEwX,EAAE7X,KAAK8X,EAAElO,EAAEgB,EAAEgK,GAAGI,EAAEuE,EAAE3B,GAAGS,GAAGrD,EAAEuD,YAAYvY,KAAKuY,aAAahV,EAAEuR,EAAE9U,KAAKgV,EAAEiE,EAAE,WAAW,OAAOrP,EAAEoL,EAAE6C,EAAE7C,EAAE,EAAE,OAAO8C,GAAG,KAAK/B,EAAE1V,EAAE4Y,IAAI,GAAG,MAAM,KAAKtE,EAAEtU,EAAE4Y,IAAI,MAAM,KAAKpE,EAAExU,EAAE4Y,IAAI,EAAE,MAAM,KAAKxH,EAAEpR,GAAGyU,EAAEuD,GAAG,OAAO,MAAM,KAAK3O,EAAErJ,GAAGyU,EAAEuD,GAAG,MAAM,MAAM,KAAKjN,EAAE/K,EAAEyU,EAAEG,EAAE,MAAM,KAAKnK,EAAEzK,EAAEyU,EAAEvR,EAAE,MAAM,KAAK0D,EAAE5G,EAAEyU,EAA18L,IAA88L,MAAM,QAAQzU,EAAEyU,EAAE,OAAO5N,EAAE7G,EAAEuJ,EAAEF,EAAErJ,EAAE,EAAE2U,EAAEsH,YAAY,WAAW,OAAOtc,KAAK0b,MAAM/G,GAAG8F,EAAE,EAAEzF,EAAEmH,QAAQ,WAAW,OAAOlD,EAAEjZ,KAAKyZ,GAAG,EAAEzE,EAAEwE,OAAO,SAAStB,EAAE3U,GAAG,IAAI2U,EAAE,OAAOlY,KAAKyZ,GAAG,IAAIxE,EAAEjV,KAAK6Y,QAAQjB,EAAEoB,EAAEd,EAAE3U,GAAE,GAAI,OAAOqU,IAAI3C,EAAEwE,GAAG7B,GAAG3C,CAAC,EAAED,EAAE6D,MAAM,WAAW,OAAOjP,EAAEoP,EAAEhZ,KAAKga,GAAGha,KAAK,EAAEgV,EAAEkH,OAAO,WAAW,OAAO,IAAIjC,KAAKja,KAAKgc,UAAU,EAAEhH,EAAEmJ,OAAO,WAAW,OAAOne,KAAKsb,UAAUtb,KAAKoe,cAAc,IAAI,EAAEpJ,EAAEoJ,YAAY,WAAW,OAAOpe,KAAKga,GAAGoE,aAAa,EAAEpJ,EAAEuG,SAAS,WAAW,OAAOvb,KAAKga,GAAGqE,aAAa,EAAEvG,CAAC,CAA/sJ,GAAmtJ/C,EAAEqE,EAAEzZ,UAAU,OAAO4Z,EAAE5Z,UAAUoV,EAAE,CAAC,CAAC,MAAM6C,GAAG,CAAC,KAAK3Q,GAAG,CAAC,KAAK6D,GAAG,CAAC,KAAKM,GAAG,CAAC,KAAK1B,GAAG,CAAC,KAAKiL,GAAG,CAAC,KAAKoB,GAAG,CAAC,KAAKnB,IAAI+B,SAAS,SAASuB,GAAGnD,EAAEmD,EAAE,IAAI,SAAS3U,GAAG,OAAOvD,KAAK6b,GAAGtY,EAAE2U,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAIqB,EAAE9Y,OAAO,SAASyX,EAAE3U,GAAG,OAAO2U,EAAEqG,KAAKrG,EAAE3U,EAAE6V,EAAEG,GAAGrB,EAAEqG,IAAG,GAAIhF,CAAC,EAAEA,EAAEC,OAAOR,EAAEO,EAAEiF,QAAQnF,EAAEE,EAAEwC,KAAK,SAAS7D,GAAG,OAAOqB,EAAE,IAAIrB,EAAE,EAAEqB,EAAEkF,GAAGxF,EAAEnE,GAAGyE,EAAEmF,GAAGzF,EAAEM,EAAE3O,EAAE,CAAC,EAAE2O,CAAC,CAAj6NhW,E,sBCAfmU,EAAOC,QAA8K,SAASjO,GAAG,aAAqF,IAAI0P,EAA5E,SAAW1P,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC4iH,QAAQ5iH,EAAE,CAAOnG,CAAEmG,GAAGwO,EAAE,CAACrF,KAAK,KAAKkF,SAAS,qEAAqEhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,+EAA+EjM,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKqQ,UAAU,EAAE6C,QAAQ,CAACL,GAAG,OAAOD,IAAI,UAAUE,EAAE,aAAaC,GAAG,iBAAiBC,IAAI,uBAAuBC,KAAK,8BAA8BO,aAAa,CAACJ,OAAO,WAAWC,KAAK,WAAWtU,EAAE,kBAAkBkK,EAAE,aAAa6I,GAAG,YAAY9H,EAAE,WAAW4H,GAAG,UAAU/I,EAAE,UAAUwI,GAAG,SAAStF,EAAE,SAASiF,GAAG,QAAQlF,EAAE,SAASwH,GAAG,SAASpH,QAAQ,SAASvO,GAAG,OAAOA,CAAC,GAAG,OAAO0P,EAAC,QAASI,OAAOtB,EAAE,MAAK,GAAIA,CAAC,CAAzhC3U,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI2U,EAA5E,SAAW3U,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO0R,CAAE1R,GAAGmG,EAAE,CAACoB,EAAE,oBAAoBkK,EAAE,CAAC,cAAc,gBAAgB6I,GAAG,aAAa9H,EAAE,CAAC,cAAc,gBAAgB4H,GAAG,aAAa/I,EAAE,CAAC,UAAU,aAAawI,GAAG,CAAC,UAAU,YAAYtF,EAAE,CAAC,YAAY,eAAeiF,GAAG,CAAC,YAAY,cAAclF,EAAE,CAAC,WAAW,cAAcwH,GAAG,CAAC,WAAW,cAAc,SAASpY,EAAE1D,EAAE0R,EAAEiD,GAAG,IAAIjR,EAAEyC,EAAEwO,GAAG,OAAOxY,MAAMU,QAAQ6G,KAAKA,EAAEA,EAAEgO,EAAE,EAAE,IAAIhO,EAAEtD,QAAQ,KAAKJ,EAAE,CAAC,IAAIqU,EAAE,CAAC/E,KAAK,KAAKkF,SAAS,8DAA8DhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,qFAAqFjM,MAAM,KAAKkR,YAAY,8DAA8DlR,MAAM,KAAKkM,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,EAAE6Y,UAAU,EAAEi7K,UAAU,EAAEp4K,QAAQ,CAACN,IAAI,WAAWC,GAAG,QAAQC,EAAE,aAAaC,GAAG,eAAeC,IAAI,qBAAqBC,KAAK,4BAA4BO,aAAa,CAACJ,OAAO,QAAQC,KAAK,SAAStU,EAAE7D,EAAE+N,EAAE/N,EAAE4W,GAAG5W,EAAE8O,EAAE9O,EAAE0W,GAAG1W,EAAE2N,EAAE3N,EAAEmW,GAAGnW,EAAE6Q,EAAE7Q,EAAE8V,GAAG9V,EAAE4Q,EAAE5Q,EAAEoY,GAAGpY,IAAI,OAAOiR,EAAC,QAASsB,OAAO5B,EAAE,MAAK,GAAIA,CAAC,CAAz0C3C,CAAEiqC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAIuH,EAA5E,SAAWvH,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAOkO,CAAElO,GAAGqR,EAAE,CAAC/B,KAAK,KAAKoK,YAAY,kDAAkDlR,MAAM,KAAKgM,SAAS,uDAAuDhM,MAAM,KAAKwR,cAAc,qCAAqCxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,2FAA2FjM,MAAM,KAAKqQ,UAAU,EAAE6C,QAAQ,CAACL,GAAG,OAAOD,IAAI,UAAUE,EAAE,aAAaC,GAAG,wBAAwBC,IAAI,6BAA6BC,KAAK,oCAAoCO,aAAa,CAACJ,OAAO,QAAQC,KAAK,UAAUtU,EAAE,gBAAgBkK,EAAE,YAAY6I,GAAG,aAAa9H,EAAE,WAAW4H,GAAG,WAAW/I,EAAE,SAASwI,GAAG,UAAUtF,EAAE,SAASiF,GAAG,WAAWlF,EAAE,SAASwH,GAAG,WAAWpH,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,GAAG,OAAOuH,EAAC,QAAS0O,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAArjCnD,CAAEytC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,qDAAqDhM,MAAM,KAAKwR,cAAc,qDAAqDxR,MAAM,KAAKsR,YAAY,gBAAgBtR,MAAM,KAAKqQ,UAAU,EAAEpE,OAAO,wEAAwEjM,MAAM,KAAKkR,YAAY,wEAAwElR,MAAM,KAAKkM,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAE6F,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,oBAAoBC,KAAK,2BAA2BO,aAAa,CAACJ,OAAO,QAAQC,KAAK,SAAStU,EAAE,YAAYkK,EAAE,WAAW6I,GAAG,WAAW9H,EAAE,UAAU4H,GAAG,UAAU/I,EAAE,SAASwI,GAAG,SAAStF,EAAE,SAASiF,GAAG,SAASlF,EAAE,SAASwH,GAAG,WAAW,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAnhCrR,CAAE27C,EAAQ,K,qBCAzBxnC,EAAOC,QAA8K,SAASvM,GAAG,aAAqF,IAAI8M,EAA5E,SAAW9M,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkhH,QAAQlhH,EAAE,CAAO7H,CAAE6H,GAAG,SAAS6J,EAAE7J,EAAE7H,EAAE2U,EAAEjD,GAAG,IAAIhO,EAAE,CAAC6D,EAAE,kBAAkBkK,EAAE,WAAW6I,GAAG,eAAe9H,EAAE,QAAQ4H,GAAG,YAAY/I,EAAE,QAAQwI,GAAG,YAAYtF,EAAE,WAAWiF,GAAG,eAAelF,EAAE,QAAQwH,GAAG,YAAYi4K,QAAQ,wEAAwEvrL,MAAM,MAAMrC,EAAE,CAACoB,EAAE,oBAAoBkK,EAAE,WAAW6I,GAAG,cAAc9H,EAAE,SAAS4H,GAAG,YAAY/I,EAAE,SAASwI,GAAG,YAAYtF,EAAE,YAAYiF,GAAG,eAAelF,EAAE,SAASwH,GAAG,YAAYi4K,QAAQ,+EAA+EvrL,MAAM,MAAMjB,EAAEmK,IAAI1R,EAAEmG,EAAEzC,EAAEmS,EAAEtO,EAAEoN,GAAG,OAAO9M,EAAE,GAAGgO,EAAEzV,QAAQ,KAAKmH,EAAEwsL,QAAQlsL,IAAIgO,EAAEzV,QAAQ,KAAKyH,EAAE,CAAC,IAAInE,EAAE,CAAC4L,KAAK,KAAKkF,SAAS,qEAAqEhM,MAAM,KAAKwR,cAAc,uBAAuBxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,2GAA2GjM,MAAM,KAAKkR,YAAY,uEAAuElR,MAAM,KAAKkM,QAAQ,SAAS7M,GAAG,OAAOA,EAAE,GAAG,EAAEgR,UAAU,EAAEi7K,UAAU,EAAE93K,aAAa,CAACJ,OAAO,YAAYC,KAAK,YAAYtU,EAAEmK,EAAED,EAAEC,EAAE4I,GAAG5I,EAAEc,EAAEd,EAAE0I,GAAG1I,EAAEL,EAAEK,EAAEmI,GAAGnI,EAAE6C,EAAE7C,EAAE8H,GAAG9H,EAAE4C,EAAE5C,EAAEoK,GAAGpK,GAAGgK,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,mBAAmBC,IAAI,gCAAgCC,KAAK,sCAAsC9X,EAAE,WAAW+gI,GAAG,cAAcC,IAAI,2BAA2BC,KAAK,kCAAkC,OAAOjwH,EAAC,QAASsB,OAAOvS,EAAE,MAAK,GAAIA,CAAC,CAA5tD1D,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI2U,EAA5E,SAAW3U,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO0R,CAAE1R,GAAG0D,EAAE,CAAC4L,KAAK,KAAKkF,SAAS,sDAAsDhM,MAAM,KAAKwR,cAAc,qCAAqCxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,uFAAuFjM,MAAM,KAAKkR,YAAY,iEAAiElR,MAAM,KAAKqQ,UAAU,EAAEi7K,UAAU,EAAEp4K,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,oBAAoBC,KAAK,0BAA0BO,aAAa,CAACJ,OAAO,UAAUC,KAAK,YAAYtU,EAAE,oBAAoBkK,EAAE,aAAa6I,GAAG,aAAa9H,EAAE,YAAY4H,GAAG,YAAY/I,EAAE,UAAUwI,GAAG,WAAWtF,EAAE,UAAUiF,GAAG,UAAUlF,EAAE,QAAQwH,GAAG,UAAUpH,QAAQ,SAAS1U,GAAG,OAASA,GAAG,IAAIA,EAAE,KAAK,GAAG,GAAG,OAAO2U,EAAC,QAASsB,OAAOvS,EAAE,MAAK,GAAIA,CAAC,CAAzkCgO,CAAEiqC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,uDAAuDhM,MAAM,KAAKiM,OAAO,8EAA8EjM,MAAM,KAAKwR,cAAc,kCAAkCxR,MAAM,KAAKkR,YAAY,6DAA6DlR,MAAM,KAAKsR,YAAY,qBAAqBtR,MAAM,KAAKkM,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAE6F,QAAQ,CAACL,GAAG,aAAaD,IAAI,gBAAgBE,EAAE,aAAaC,GAAG,cAAcC,IAAI,0BAA0BC,KAAK,iCAAiCO,aAAa,CAACJ,OAAO,SAASC,KAAK,UAAUtU,EAAE,cAAckK,EAAE,UAAU6I,GAAG,UAAU9H,EAAE,UAAU4H,GAAG,UAAU/I,EAAE,SAASwI,GAAG,SAAStF,EAAE,WAAWiF,GAAG,WAAWlF,EAAE,UAAUwH,GAAG,YAAY,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAphCrR,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI2U,EAA5E,SAAW3U,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO0R,CAAE1R,GAAGqU,EAAE,CAAC/E,KAAK,KAAKkF,SAAS,sDAAsDhM,MAAM,KAAKwR,cAAc,gCAAgCxR,MAAM,KAAKsR,YAAY,qBAAqBtR,MAAM,KAAKiM,OAAO,oGAAoGjM,MAAM,KAAKkR,YAAY,qDAAqDlR,MAAM,KAAKkM,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,EAAE6Y,UAAU,EAAEmD,aAAa,CAACJ,OAAO,WAAWC,KAAK,KAAKtU,EAAE,SAASvH,EAAE0R,EAAEiD,EAAEN,GAAG,MAAM,oBAAoBA,GAAG3C,EAAE,GAAG,IAAI,EAAED,EAAE,SAASzR,EAAE0R,EAAEiD,EAAEN,GAAG,MAAM,YAAYA,GAAG3C,EAAE,GAAG,IAAI,EAAE4I,GAAG,SAASta,EAAE0R,EAAEiD,EAAEN,GAAG,OAAOrU,EAAE,SAASqU,GAAG3C,EAAE,GAAG,IAAI,EAAEc,EAAE,SAASxS,EAAE0R,EAAEiD,EAAEN,GAAG,MAAM,QAAQA,GAAG3C,EAAE,MAAM,QAAQ,EAAE0I,GAAG,SAASpa,EAAE0R,EAAEiD,EAAEN,GAAG,OAAOrU,EAAE,KAAKqU,GAAG3C,EAAE,MAAM,QAAQ,EAAEL,EAAE,SAASrR,EAAE0R,EAAEiD,EAAEN,GAAG,MAAM,QAAQA,GAAG3C,EAAE,MAAM,QAAQ,EAAEmI,GAAG,SAAS7Z,EAAE0R,EAAEiD,EAAEN,GAAG,OAAOrU,EAAE,KAAKqU,GAAG3C,EAAE,MAAM,QAAQ,EAAE6C,EAAE,SAASvU,EAAE0R,EAAEiD,EAAEN,GAAG,MAAM,QAAQA,GAAG3C,EAAE,QAAQ,UAAU,EAAE8H,GAAG,SAASxZ,EAAE0R,EAAEiD,EAAEN,GAAG,OAAOrU,EAAE,KAAKqU,GAAG3C,EAAE,QAAQ,UAAU,EAAE4C,EAAE,SAAStU,EAAE0R,EAAEiD,EAAEN,GAAG,MAAM,QAAQA,GAAG3C,EAAE,KAAK,MAAM,EAAEoK,GAAG,SAAS9b,EAAE0R,EAAEiD,EAAEN,GAAG,OAAOrU,EAAE,KAAKqU,GAAG3C,EAAE,KAAK,MAAM,GAAGgK,QAAQ,CAACL,GAAG,OAAOD,IAAI,UAAUE,EAAE,cAAcC,GAAG,gBAAgBC,IAAI,qBAAqBC,KAAK,6BAA6B,OAAO9G,EAAC,QAASsB,OAAO5B,EAAE,MAAK,GAAIA,CAAC,CAA/+C3C,CAAEiqC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI2U,EAA5E,SAAW3U,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAOkO,CAAElO,GAAG0R,EAAE,CAACpC,KAAK,KAAKkF,SAAS,2DAA2DhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,gGAAgGjM,MAAM,KAAKqQ,UAAU,EAAEa,YAAY,kDAAkDlR,MAAM,KAAKkT,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,oBAAoBC,KAAK,0BAA0BO,aAAa,CAACJ,OAAO,SAASC,KAAK,QAAQtU,EAAE,kBAAkBkK,EAAE,YAAY6I,GAAG,YAAY9H,EAAE,UAAU4H,GAAG,SAAS/I,EAAE,YAAYwI,GAAG,YAAYtF,EAAE,UAAUiF,GAAG,UAAUlF,EAAE,UAAUwH,GAAG,WAAWpH,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,GAAG,OAAO2U,EAAC,QAASsB,OAAOvE,EAAE,MAAK,GAAIA,CAAC,CAA/hCxD,CAAEytC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI2U,EAA5E,SAAW3U,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO6V,CAAE7V,GAAGqR,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,8BAA8BhM,MAAM,KAAKwR,cAAc,gBAAgBxR,MAAM,KAAKsR,YAAY,gBAAgBtR,MAAM,KAAKiM,OAAO,yCAAyCjM,MAAM,KAAKkR,YAAY,yCAAyClR,MAAM,KAAKkM,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,EAAE0b,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,YAAYC,IAAI,kBAAkBC,KAAK,uBAAuB9X,EAAE,aAAa+gI,GAAG,YAAYC,IAAI,kBAAkBC,KAAK,wBAAwBvrH,SAAS,SAASrZ,GAAG,OAAOA,EAAE,GAAG,KAAK,IAAI,EAAEgc,aAAa,CAACJ,OAAO,MAAMC,KAAK,MAAMtU,EAAE,KAAKkK,EAAE,KAAK6I,GAAG,MAAM9H,EAAE,MAAM4H,GAAG,OAAO/I,EAAE,KAAKwI,GAAG,MAAMtF,EAAE,MAAMiF,GAAG,OAAOlF,EAAE,KAAKwH,GAAG,QAAQ,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAr9BwE,CAAE8lC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI0D,EAA5E,SAAW1D,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAOuH,CAAEvH,GAAGqR,EAAE,oGAAoG7I,MAAM,KAAKrC,EAAE,kGAAkGqC,MAAM,KAAK7E,EAAE,8DAA8D4Q,EAAE,SAASvU,EAAEuH,GAAG,OAAO5D,EAAE3C,KAAKuG,GAAG8J,EAAErR,EAAEqV,SAASlP,EAAEnG,EAAEqV,QAAQ,EAAEd,EAAEhN,EAAEpB,EAAEoO,EAAEjD,EAAED,EAAE,IAAIsD,EAAE,CAACrF,KAAK,KAAKkF,SAAS,2FAA2FhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,iBAAiBtR,MAAM,KAAKiM,OAAOF,EAAEmF,YAAY,kDAAkDlR,MAAM,KAAKkM,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,EAAE6Y,UAAU,EAAEmD,aAAa,CAACJ,OAAO,QAAQC,KAAK,WAAWtU,EAAE,kBAAkBkK,EAAE,SAAS6I,GAAG,aAAa9H,EAAE,UAAU4H,GAAG,cAAc/I,EAAE,QAAQwI,GAAG,YAAYtF,EAAE,SAASiF,GAAG,cAAclF,EAAE,QAAQwH,GAAG,YAAY3C,OAAO,CAACkC,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,wBAAwBC,IAAI,sCAAsCC,KAAK,4CAA4C9X,EAAE,aAAa+gI,GAAG,wBAAwBC,IAAI,sCAAsCC,KAAK,4CAA4ClpH,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,wBAAwBC,IAAI,sCAAsCC,KAAK,4CAA4C9X,EAAE,aAAa+gI,GAAG,wBAAwBC,IAAI,sCAAsCC,KAAK,6CAA6C,OAAOlhI,EAAC,QAASuS,OAAOtB,EAAE,MAAK,GAAIA,CAAC,CAA9xDpN,CAAEo0C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,wEAAwEhM,MAAM,KAAKiM,OAAO,yFAAyFjM,MAAM,KAAKwR,cAAc,2CAA2CxR,MAAM,KAAKkR,YAAY,yEAAyElR,MAAM,KAAKsR,YAAY,wBAAwBtR,MAAM,KAAKkM,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAE6F,QAAQ,CAACL,GAAG,aAAaD,IAAI,gBAAgBE,EAAE,aAAaC,GAAG,cAAcC,IAAI,0BAA0BC,KAAK,iCAAiCO,aAAa,CAACJ,OAAO,aAAaC,KAAK,WAAWtU,EAAE,gBAAgBkK,EAAE,eAAe6I,GAAG,cAAc9H,EAAE,eAAe4H,GAAG,cAAc/I,EAAE,YAAYwI,GAAG,WAAWtF,EAAE,WAAWiF,GAAG,UAAUlF,EAAE,WAAWwH,GAAG,YAAY,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAtmCrR,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAIqR,EAA5E,SAAWrR,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAOmG,CAAEnG,GAAG0R,EAAE,CAACpC,KAAK,KAAKkF,SAAS,6DAA6DhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,0FAA0FjM,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKkM,QAAQ,SAAS1U,GAAG,MAAM,IAAIA,GAAG,IAAIA,GAAG,IAAIA,GAAGA,GAAG,GAAG,MAAM,MAAM,GAAG,EAAE6Y,UAAU,EAAEi7K,UAAU,EAAEp4K,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,oBAAoBC,KAAK,0BAA0BO,aAAa,CAACJ,OAAO,UAAUC,KAAK,aAAatU,EAAE,oBAAoBkK,EAAE,aAAa6I,GAAG,aAAa9H,EAAE,UAAU4H,GAAG,SAAS/I,EAAE,UAAUwI,GAAG,WAAWtF,EAAE,YAAYiF,GAAG,aAAalF,EAAE,WAAWwH,GAAG,YAAY,OAAOzK,EAAC,QAAS4E,OAAOvE,EAAE,MAAK,GAAIA,CAAC,CAAxlCvL,CAAEw1C,EAAQ,K,sBCAzBxnC,EAAOC,QAAiL,SAASpU,GAAG,aAAqF,IAAImG,EAA5E,SAAWnG,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAOkO,CAAElO,GAAGuH,EAAE,CAAC+H,KAAK,QAAQkF,SAAS,iFAAiFhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,2FAA2FjM,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKkM,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,EAAE0b,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,wBAAwBC,IAAI,mCAAmCC,KAAK,0CAA0CO,aAAa,CAACJ,OAAO,QAAQC,KAAK,QAAQtU,EAAE,kBAAkBkK,EAAE,YAAY6I,GAAG,aAAa9H,EAAE,WAAW4H,GAAG,WAAW/I,EAAE,SAASwI,GAAG,UAAUtF,EAAE,SAASiF,GAAG,WAAWlF,EAAE,SAASwH,GAAG,YAAY,OAAO3V,EAAC,QAAS8P,OAAO1O,EAAE,MAAK,GAAIA,CAAC,CAAhlC2G,CAAEytC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAIkO,EAA5E,SAAWlO,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAOmG,CAAEnG,GAAG2U,EAAE,CAACrF,KAAK,KAAKkF,SAAS,iFAAiFhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,2FAA2FjM,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKkM,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,EAAE6Y,UAAU,EAAEi7K,UAAU,EAAEp4K,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,wBAAwBC,IAAI,mCAAmCC,KAAK,0CAA0CO,aAAa,CAACJ,OAAO,QAAQC,KAAK,QAAQtU,EAAE,kBAAkBkK,EAAE,YAAY6I,GAAG,aAAa9H,EAAE,WAAW4H,GAAG,WAAW/I,EAAE,SAASwI,GAAG,UAAUtF,EAAE,SAASiF,GAAG,WAAWlF,EAAE,SAASwH,GAAG,YAAY,OAAO5N,EAAC,QAAS+H,OAAOtB,EAAE,MAAK,GAAIA,CAAC,CAAlmCxO,CAAEw1C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI2U,EAA5E,SAAW3U,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO0D,CAAE1D,GAAG6V,EAAE,CAACvG,KAAK,KAAKkF,SAAS,kDAAkDhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,oGAAoGjM,MAAM,KAAKkR,YAAY,gEAAgElR,MAAM,KAAKqQ,UAAU,EAAE6C,QAAQ,CAACL,GAAG,OAAOD,IAAI,UAAUE,EAAE,aAAaC,GAAG,cAAcC,IAAI,mBAAmBC,KAAK,0BAA0BO,aAAa,CAACJ,OAAO,WAAWC,KAAK,UAAUtU,EAAE,iBAAiBkK,EAAE,WAAW6I,GAAG,YAAY9H,EAAE,QAAQ4H,GAAG,SAAS/I,EAAE,OAAOwI,GAAG,UAAUtF,EAAE,SAASiF,GAAG,UAAUlF,EAAE,QAAQwH,GAAG,UAAUpH,QAAQ,SAAS1U,GAAG,OAAOA,CAAC,GAAG,OAAO2U,EAAC,QAASsB,OAAOJ,EAAE,MAAK,GAAIA,CAAC,CAAthCnS,CAAEi4C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAI7V,EAA5E,SAAW6V,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAOlB,CAAEkB,GAAGnE,EAAE,oFAAoFlJ,MAAM,KAAKjB,EAAE,kFAAkFiB,MAAM,KAAK6L,EAAE,gEAAgE7L,MAAM,KAAK0F,EAAE,gEAAgE1F,MAAM,KAAK9E,EAAE,+BAA+B,SAAS2N,EAAEwE,EAAElB,EAAE3U,GAAG,IAAI0R,EAAEnK,EAAE,MAAM,MAAMvH,EAAE2U,EAAE,SAAS,SAASkB,EAAE,KAAKnE,GAAGmE,EAAEtO,EAAE,CAAC+S,GAAG3F,EAAE,sBAAsB,sBAAsByF,GAAG,iBAAiBP,GAAG,gBAAgBL,GAAG,uBAAuBsC,GAAG,gBAAgB9b,GAAGwI,MAAM,KAAKkJ,EAAE,IAAI,GAAGA,EAAE,KAAK,GAAGnK,EAAE,GAAGmK,EAAE,IAAI,GAAGA,EAAE,IAAI,IAAIA,EAAE,IAAI,IAAIA,EAAE,KAAK,IAAInK,EAAE,GAAGA,EAAE,GAAG,CAAC,IAAIM,EAAE,SAASgO,EAAElB,GAAG,OAAOjR,EAAE1C,KAAK2T,GAAGjD,EAAEmE,EAAER,SAAS9N,EAAEsO,EAAER,QAAQ,EAAExN,EAAEN,EAAEA,EAAEM,EAAEyJ,EAAEI,EAAE,IAAIvL,EAAE,SAAS0P,EAAElB,GAAG,OAAOjR,EAAE1C,KAAK2T,GAAGN,EAAEwB,EAAER,SAASnH,EAAE2H,EAAER,QAAQ,EAAElP,EAAEoB,EAAE2G,EAAE/H,EAAEmL,EAAE+C,EAAE,IAAI5C,EAAE,CAACnC,KAAK,KAAKkF,SAAS,gEAAgEhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO5M,EAAE6R,YAAYvT,EAAE0S,UAAU,EAAEi7K,UAAU,EAAEp4K,QAAQ,CAACL,GAAG,OAAOD,IAAI,UAAUE,EAAE,aAAaC,GAAG,iBAAiBC,IAAI,uBAAuBC,KAAK,8BAA8BO,aAAa,CAACJ,OAAO,WAAWC,KAAK,WAAWtU,EAAE,mBAAmBkK,EAAEJ,EAAEiJ,GAAGjJ,EAAEmB,EAAE,MAAM4H,GAAG/I,EAAEA,EAAE,OAAOwI,GAAGxI,EAAEkD,EAAE,QAAQiF,GAAGnI,EAAEiD,EAAE,MAAMwH,GAAGzK,GAAGqD,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAEwD,SAAS,SAASxD,GAAG,OAAOA,EAAE,EAAE,OAAOA,EAAE,GAAG,OAAOA,EAAE,GAAG,MAAM,QAAQ,GAAG,OAAO7V,EAAC,QAASiW,OAAOxE,EAAE,MAAK,GAAIA,CAAC,CAA1tDkD,CAAEgnC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,gEAAgEhM,MAAM,KAAKiM,OAAO,qEAAqEjM,MAAM,KAAKwR,cAAc,gCAAgCxR,MAAM,KAAKkR,YAAY,oDAAoDlR,MAAM,KAAKsR,YAAY,qBAAqBtR,MAAM,KAAKkM,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAE6F,QAAQ,CAACL,GAAG,SAASD,IAAI,YAAYE,EAAE,aAAaC,GAAG,cAAcC,IAAI,sBAAsBC,KAAK,sCAAsCO,aAAa,CAACJ,OAAO,SAASC,KAAK,WAAWtU,EAAE,eAAekK,EAAE,UAAU6I,GAAG,YAAY9H,EAAE,MAAM4H,GAAG,SAAS/I,EAAE,OAAOwI,GAAG,SAAStF,EAAE,OAAOiF,GAAG,SAASlF,EAAE,MAAMwH,GAAG,WAAW,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAp/BrR,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAI0R,EAA5E,SAAW1R,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO2U,CAAE3U,GAAG,SAASqU,EAAErU,GAAG,OAAOA,EAAE,GAAGA,EAAE,GAAG,MAAMA,EAAE,GAAG,CAAC,SAASkO,EAAElO,EAAE2U,EAAEjD,EAAExD,GAAG,IAAI/H,EAAEnG,EAAE,IAAI,OAAO0R,GAAG,IAAI,IAAI,OAAOiD,GAAGzG,EAAE,aAAa,gBAAgB,IAAI,IAAI,OAAOyG,EAAE,SAASzG,EAAE,SAAS,UAAU,IAAI,KAAK,OAAOyG,GAAGzG,EAAE/H,GAAGkO,EAAErU,GAAG,SAAS,SAASmG,EAAE,WAAW,IAAI,IAAI,OAAOwO,EAAE,SAASzG,EAAE,SAAS,UAAU,IAAI,KAAK,OAAOyG,GAAGzG,EAAE/H,GAAGkO,EAAErU,GAAG,SAAS,SAASmG,EAAE,WAAW,IAAI,IAAI,OAAOwO,GAAGzG,EAAE,MAAM,OAAO,IAAI,KAAK,OAAOyG,GAAGzG,EAAE/H,GAAGkO,EAAErU,GAAG,MAAM,OAAOmG,EAAE,QAAQ,IAAI,IAAI,OAAOwO,GAAGzG,EAAE,SAAS,WAAW,IAAI,KAAK,OAAOyG,GAAGzG,EAAE/H,GAAGkO,EAAErU,GAAG,UAAU,YAAYmG,EAAE,WAAW,IAAI,IAAI,OAAOwO,GAAGzG,EAAE,MAAM,QAAQ,IAAI,KAAK,OAAOyG,GAAGzG,EAAE/H,GAAGkO,EAAErU,GAAG,OAAO,SAASmG,EAAE,QAAQ,CAAC,IAAIA,EAAE,CAACmJ,KAAK,KAAKkF,SAAS,sDAAsDhM,MAAM,KAAKwR,cAAc,uBAAuBxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,oFAAoFjM,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKqQ,UAAU,EAAEi7K,UAAU,EAAEp/K,QAAQ,SAAS1U,GAAG,OAAOA,EAAE,GAAG,EAAE0b,QAAQ,CAACL,GAAG,OAAOD,IAAI,UAAUE,EAAE,aAAaC,GAAG,eAAeC,IAAI,oBAAoBC,KAAK,yBAAyB9X,EAAE,cAAcqY,aAAa,CAACJ,OAAO,QAAQC,KAAK,UAAUtU,EAAE2G,EAAEuD,EAAEvD,EAAEoM,GAAGpM,EAAEsE,EAAEtE,EAAEkM,GAAGlM,EAAEmD,EAAEnD,EAAE2L,GAAG3L,EAAEqG,EAAErG,EAAEsL,GAAGtL,EAAEoG,EAAEpG,EAAE4N,GAAG5N,IAAI,OAAOwD,EAAC,QAASuE,OAAO9P,EAAE,MAAK,GAAIA,CAAC,CAAljDwO,CAAEgnC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASpU,GAAG,aAAqF,IAAImG,EAA5E,SAAWnG,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO2U,CAAE3U,GAAGqR,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,oDAAoDhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,wFAAwFjM,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKqQ,UAAU,EAAEi7K,UAAU,EAAEp/K,QAAQ,SAAS1U,GAAG,IAAI2U,EAAE3U,EAAE,GAAG,MAAM,IAAIA,GAAG,IAAI2U,GAAG,IAAIA,EAAE,IAAI,KAAK,GAAG,EAAE+G,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,0BAA0BC,KAAK,+BAA+BkpH,IAAI,mBAAmBC,KAAK,wBAAwB5oH,aAAa,CAACJ,OAAO,QAAQC,KAAK,eAAetU,EAAE,iBAAiBkK,EAAE,WAAW6I,GAAG,aAAa9H,EAAE,WAAW4H,GAAG,YAAY/I,EAAE,SAASwI,GAAG,WAAWtF,EAAE,WAAWiF,GAAG,aAAalF,EAAE,SAASwH,GAAG,UAAU,OAAO3V,EAAC,QAAS8P,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAtoCsD,CAAEgnC,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,8FAA8FhM,MAAM,KAAKiM,OAAO,0FAA0FjM,MAAM,KAAKwR,cAAc,mDAAmDxR,MAAM,KAAKkR,YAAY,0FAA0FlR,MAAM,KAAKsR,YAAY,sBAAsBtR,MAAM,KAAKkM,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAE6F,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,qBAAqBC,KAAK,4BAA4BO,aAAa,CAACJ,OAAO,SAASC,KAAK,UAAUtU,EAAE,oBAAoBkK,EAAE,cAAc6I,GAAG,gBAAgB9H,EAAE,gBAAgB4H,GAAG,eAAe/I,EAAE,WAAWwI,GAAG,aAAatF,EAAE,YAAYiF,GAAG,cAAclF,EAAE,aAAawH,GAAG,gBAAgB,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAA9oCrR,CAAE27C,EAAQ,K,qBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,8DAA8DhM,MAAM,KAAKiM,OAAO,wFAAwFjM,MAAM,KAAKwR,cAAc,kCAAkCxR,MAAM,KAAKkR,YAAY,mEAAmElR,MAAM,KAAKsR,YAAY,qBAAqBtR,MAAM,KAAKkM,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAE6F,QAAQ,CAACL,GAAG,SAASD,IAAI,YAAYE,EAAE,aAAaC,GAAG,cAAcC,IAAI,sBAAsBC,KAAK,6BAA6BO,aAAa,CAACJ,OAAO,QAAQC,KAAK,YAAYtU,EAAE,iBAAiBkK,EAAE,YAAY6I,GAAG,cAAc9H,EAAE,SAAS4H,GAAG,WAAW/I,EAAE,UAAUwI,GAAG,YAAYtF,EAAE,SAASiF,GAAG,WAAWlF,EAAE,cAAcwH,GAAG,kBAAkB,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAjjCrR,CAAE27C,EAAQ,K,qBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,iDAAiDhM,MAAM,KAAKwR,cAAc,8CAA8CxR,MAAM,KAAKsR,YAAY,yBAAyBtR,MAAM,KAAKiM,OAAO,oGAAoGjM,MAAM,KAAKkR,YAAY,iEAAiElR,MAAM,KAAKkT,QAAQ,CAACL,GAAG,OAAOD,IAAI,UAAUE,EAAE,aAAaC,GAAG,cAAcC,IAAI,wBAAwBC,KAAK,oCAAoCO,aAAa,CAACJ,OAAO,SAASC,KAAK,YAAYtU,EAAE,eAAekK,EAAE,SAAS6I,GAAG,UAAU9H,EAAE,YAAY4H,GAAG,aAAa/I,EAAE,QAAQwI,GAAG,SAAStF,EAAE,UAAUiF,GAAG,WAAWlF,EAAE,OAAOwH,GAAG,SAASpH,QAAQ,SAASmB,GAAG,OAAOA,EAAE,GAAG,GAAG,OAAOlB,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAjjCrR,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASjO,GAAG,aAAqF,IAAIwO,EAA5E,SAAWxO,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC4iH,QAAQ5iH,EAAE,CAAOnG,CAAEmG,GAAG0P,EAAE,CAACvG,KAAK,KAAKkF,SAAS,wDAAwDhM,MAAM,KAAKwR,cAAc,8BAA8BxR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKiM,OAAO,6EAA6EjM,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKqQ,UAAU,EAAE6C,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,oBAAoBC,KAAK,2BAA2BO,aAAa,CAACJ,OAAO,WAAWC,KAAK,UAAUtU,EAAE,gBAAgBkK,EAAE,aAAa6I,GAAG,YAAY9H,EAAE,WAAW4H,GAAG,UAAU/I,EAAE,UAAUwI,GAAG,SAAStF,EAAE,SAASiF,GAAG,QAAQlF,EAAE,UAAUwH,GAAG,UAAUpH,QAAQ,SAASvO,GAAG,OAAOA,EAAE,GAAG,GAAG,OAAOwO,EAAC,QAASsB,OAAOJ,EAAE,MAAK,GAAIA,CAAC,CAAtgC7V,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,KAAKkF,SAAS,uDAAuDhM,MAAM,KAAKiM,OAAO,yEAAyEjM,MAAM,KAAKqQ,UAAU,EAAEmB,cAAc,8BAA8BxR,MAAM,KAAKkR,YAAY,kDAAkDlR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKkM,QAAQ,SAASmB,GAAG,OAAOA,CAAC,EAAE6F,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,cAAcC,IAAI,oBAAoBC,KAAK,2BAA2BO,aAAa,CAACJ,OAAO,gBAAgBC,KAAK,WAAWtU,EAAE,SAASkK,EAAE,aAAa6I,GAAG,YAAY9H,EAAE,WAAW4H,GAAG,UAAU/I,EAAE,UAAUwI,GAAG,SAAStF,EAAE,SAASiF,GAAG,QAAQlF,EAAE,UAAUwH,GAAG,WAAW,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAA5/BrR,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAA8K,SAASO,GAAG,aAAqF,IAAInC,EAA5E,SAAWmC,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACo0G,QAAQp0G,EAAE,CAAOjD,CAAEiD,GAAGkB,EAAE,CAACvG,KAAK,KAAKkF,SAAS,yDAAyDhM,MAAM,KAAKiM,OAAO,qGAAqGjM,MAAM,KAAKqQ,UAAU,EAAEmB,cAAc,uBAAuBxR,MAAM,KAAKkR,YAAY,8DAA8DlR,MAAM,KAAKsR,YAAY,uBAAuBtR,MAAM,KAAKkM,QAAQ,SAASC,GAAG,OAAOA,CAAC,EAAE+G,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,oBAAoBC,IAAI,0BAA0BC,KAAK,gCAAgC9X,EAAE,YAAY+gI,GAAG,aAAaC,IAAI,mBAAmBC,KAAK,yBAAyB5oH,aAAa,CAACJ,OAAO,SAASC,KAAK,WAAWtU,EAAE,WAAWkK,EAAE,WAAW6I,GAAG,UAAU9H,EAAE,UAAU4H,GAAG,SAAS/I,EAAE,WAAWwI,GAAG,UAAUtF,EAAE,YAAYiF,GAAG,WAAWlF,EAAE,UAAUwH,GAAG,WAAW,OAAOtJ,EAAC,QAASyD,OAAOJ,EAAE,MAAK,GAAIA,CAAC,CAAhoCnE,CAAEiqC,EAAQ,K,sBCAzBxnC,EAAOC,QAAiL,SAASpU,GAAG,aAAqF,IAAI2U,EAA5E,SAAW3U,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC+oH,QAAQ/oH,EAAE,CAAO6V,CAAE7V,GAAGqR,EAAE,CAAC/B,KAAK,QAAQkF,SAAS,8BAA8BhM,MAAM,KAAKwR,cAAc,uBAAuBxR,MAAM,KAAKsR,YAAY,gBAAgBtR,MAAM,KAAKiM,OAAO,wCAAwCjM,MAAM,KAAKkR,YAAY,yCAAyClR,MAAM,KAAKkM,QAAQ,SAAS1U,EAAE6V,GAAG,MAAM,MAAMA,EAAE7V,EAAE,IAAIA,EAAE,GAAG,EAAE6Y,UAAU,EAAEi7K,UAAU,EAAEp4K,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,YAAYC,IAAI,kBAAkBC,KAAK,sBAAsB9X,EAAE,WAAW+gI,GAAG,YAAYC,IAAI,kBAAkBC,KAAK,uBAAuB5oH,aAAa,CAACJ,OAAO,MAAMC,KAAK,MAAMtU,EAAE,KAAKkK,EAAE,OAAO6I,GAAG,QAAQ9H,EAAE,OAAO4H,GAAG,QAAQ/I,EAAE,MAAMwI,GAAG,OAAOtF,EAAE,OAAOiF,GAAG,QAAQlF,EAAE,MAAMwH,GAAG,QAAQzC,SAAS,SAASrZ,EAAE6V,GAAG,IAAIlB,EAAE,IAAI3U,EAAE6V,EAAE,OAAOlB,EAAE,IAAI,KAAKA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,KAAK,IAAI,GAAG,OAAOA,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAhlCwE,CAAE8lC,EAAQ,K,sBCAzBxnC,EAAOC,QAAiL,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,QAAQmF,OAAO,wCAAwCjM,MAAM,KAAKkR,YAAY,yCAAyClR,MAAM,KAAKgM,SAAS,8BAA8BhM,MAAM,KAAKwR,cAAc,uBAAuBxR,MAAM,KAAKsR,YAAY,gBAAgBtR,MAAM,KAAKkM,QAAQ,SAASmB,EAAE7V,GAAG,MAAM,MAAMA,EAAE6V,EAAE,IAAIA,EAAE,GAAG,EAAE6F,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,YAAYC,IAAI,kBAAkBC,KAAK,uBAAuBO,aAAa,CAACJ,OAAO,MAAMC,KAAK,MAAMtU,EAAE,KAAKkK,EAAE,MAAM6I,GAAG,QAAQ9H,EAAE,MAAM4H,GAAG,QAAQ/I,EAAE,KAAKwI,GAAG,OAAOtF,EAAE,MAAMiF,GAAG,QAAQlF,EAAE,KAAKwH,GAAG,SAAS,OAAOnH,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAA13BrR,CAAE27C,EAAQ,K,sBCAzBxnC,EAAOC,QAAiL,SAASyB,GAAG,aAAqF,IAAIlB,EAA5E,SAAWkB,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAACkzG,QAAQlzG,EAAE,CAAO7V,CAAE6V,GAAGxE,EAAE,CAAC/B,KAAK,QAAQkF,SAAS,8BAA8BhM,MAAM,KAAKwR,cAAc,uBAAuBxR,MAAM,KAAKsR,YAAY,gBAAgBtR,MAAM,KAAKiM,OAAO,wCAAwCjM,MAAM,KAAKkR,YAAY,yCAAyClR,MAAM,KAAKkM,QAAQ,SAASmB,EAAE7V,GAAG,MAAM,MAAMA,EAAE6V,EAAE,IAAIA,EAAE,GAAG,EAAE6F,QAAQ,CAACL,GAAG,QAAQD,IAAI,WAAWE,EAAE,aAAaC,GAAG,YAAYC,IAAI,kBAAkBC,KAAK,sBAAsB9X,EAAE,WAAW+gI,GAAG,YAAYC,IAAI,kBAAkBC,KAAK,uBAAuB5oH,aAAa,CAACJ,OAAO,MAAMC,KAAK,MAAMtU,EAAE,KAAKkK,EAAE,OAAO6I,GAAG,QAAQ9H,EAAE,OAAO4H,GAAG,QAAQ/I,EAAE,MAAMwI,GAAG,OAAOtF,EAAE,OAAOiF,GAAG,QAAQlF,EAAE,MAAMwH,GAAG,QAAQzC,SAAS,SAASxD,EAAE7V,GAAG,IAAI2U,EAAE,IAAIkB,EAAE7V,EAAE,OAAO2U,EAAE,IAAI,KAAKA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,KAAK,IAAI,GAAG,OAAOA,EAAC,QAASsB,OAAO5E,EAAE,MAAK,GAAIA,CAAC,CAAxjCrR,CAAE27C,EAAQ,K,kBCAzBxnC,EAAOC,QAA0J,WAAW,aAAa,IAAIpU,EAAE,CAACob,IAAI,YAAYC,GAAG,SAASC,EAAE,aAAaC,GAAG,eAAeC,IAAI,sBAAsBC,KAAK,6BAA6B,OAAO,SAAS9G,EAAEzG,EAAEwD,GAAG,IAAI2C,EAAEnG,EAAE9R,UAAUsH,EAAE2Q,EAAE8E,OAAOzH,EAAEwJ,GAAGQ,QAAQ1b,EAAEqU,EAAE8E,OAAO,SAASxE,QAAG,IAASA,IAAIA,EAAE,wBAAwB,IAAIzG,EAAEzR,KAAKmc,UAAU8C,QAAQhK,EAAE,SAASiD,EAAEzG,GAAG,OAAOyG,EAAEvU,QAAQ,qCAAqC,SAASuU,EAAEjD,EAAE2C,GAAG,IAAI3Q,EAAE2Q,GAAGA,EAAEsH,cAAc,OAAOjK,GAAGxD,EAAEmG,IAAIrU,EAAEqU,IAAInG,EAAExK,GAAGtD,QAAQ,kCAAkC,SAASJ,EAAE2U,EAAEzG,GAAG,OAAOyG,GAAGzG,EAAE8D,MAAM,EAAE,GAAG,GAAG,CAA5N,CAA8N2C,OAAE,IAASzG,EAAE,CAAC,EAAEA,GAAG,OAAOxK,EAAElH,KAAKC,KAAKiV,EAAE,CAAC,CAAC,CAAhtBiD,E,GCC/EqgD,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAGpE9gD,EAAOC,OACf,CCrBA6gD,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,E,mCCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,iDCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,C,wMCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,ICInC8jF,EAAmB,SAAAthE,GAAA,SAAAshE,IAAA,OAAAthE,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAA09H,EAAAthE,GAAA,IAAA7J,EAAAmrE,EAAA53L,UA6DrC,OA7DqCysH,EACtC7pE,OAAA,SAAOH,GACL6zE,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKw3L,SAAWpqI,IAAOoM,IAAIskB,QAAQhxB,KAAK0qI,WAC1C,EAACprE,EAEDtgG,UAAA,WACE,MAAO,kCACT,EAACsgG,EAEDjjH,MAAA,WACE,OAAOqwD,IAAIiH,WAAWC,MAAM,6CAC9B,EAAC0rD,EAEDh2F,QAAA,WACE,OACEphB,EAAA,OAAK8W,UAAU,cACb9W,EAAA,OAAK8W,UAAU,QACb9W,EAAA,OAAK8W,UAAU,cACb9W,EAAA,aAAQwkD,IAAIiH,WAAWC,MAAM,4DAC7B1rD,EAAA,SAAOhQ,KAAK,OAAO6N,KAAK,WAAWiZ,UAAU,cAAc+sC,KAAM74D,KAAKw3L,SAAUxuK,SAAUhpB,KAAK0+D,WAEjG1pD,EAAA,OAAK8W,UAAU,cACZ23C,IAAAA,UACC,CACE33C,UAAW,yBACX9mB,KAAM,SACN05D,QAAS1+D,KAAK0+D,SAEhBlF,IAAIiH,WAAWC,MAAM,yDAMjC,EAAC0rD,EAEDlnD,SAAA,SAAS3hE,GAAG,IAAA0jG,EAAA,KACV1jG,EAAEmC,iBAEE1F,KAAKw3L,aAAeh+H,IAAIskB,QAAQhxB,KAAK0qI,YAAkC,OAApBx3L,KAAKw3L,YAK5Dx3L,KAAK0+D,SAAU,EACf1+D,KAAK8oE,WAAa,KAElBtP,IAAIskB,QAAQhxB,KACTob,KAAK,CAAEsvH,SAAUx3L,KAAKw3L,YAAc,CAAExtH,aAAchqE,KAAK27C,QAAQjM,KAAK1vC,QACtEi3B,MAAK,WACJgwE,EAAKxtD,SAAU,EACfwtD,EAAKt6F,MACP,IAAE,OACK,WAAO,IACbsqB,KAAKj3B,KAAK8nE,OAAOp4B,KAAK1vC,QAdvBA,KAAK2M,MAeT,EAACy/G,EAEDzwE,QAAA,SAAQt3B,GACN4xG,EAAAt2H,UAAMg8C,QAAO57C,KAAC,KAAAskB,EAChB,EAACkzK,CAAA,CA7DqC,C,MAAS1uH,ICJjD,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCQnCgkF,EAAa,SAAA7oE,GAAA,SAAA6oE,IAAA,OAAA7oE,EAAAn7G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA49H,EAAA7oE,GAAA,IAAAxC,EAAAqrE,EAAA93L,UA+D/B,OA/D+BysH,EAChC7pE,OAAA,SAAOH,GACLwsE,EAAAjvH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAK0+D,SAAU,EAEf1+D,KAAKssG,MAAQ,GAEbtsG,KAAK03L,WAAW13L,KAAK23L,YACvB,EAACvrE,EAEDznF,KAAA,WACE,OAAI3kC,KAAK0+D,QACA1pD,EAAC0tD,IAAgB,MAIxB1tD,EAAA,OAAK8W,UAAU,iBACZ0hE,IAAAA,UAAoB7S,OACrB3lE,EAAA,OAAK8W,UAAU,aACb9W,EAAA,OAAK8W,UAAU,oBACb9W,EAAA,OAAK8W,UAAU,yBACb9W,EAAA,UAAKwoD,IAAUgwB,IAAAA,UAAoB9S,eAAez3D,aAEpDjO,EAAA,OAAK8W,UAAU,mCACb9W,EAAA,OAAK8W,UAAU,qBACb9W,EAAA,MAAI8W,UAAU,2BACX9rB,KAAKssG,MAAM1kG,KAAI,SAACklD,GAAI,OACnB93C,EAAA,UACEA,EAACqtC,IAAI,CAACjyB,KAAMopC,IAAIhZ,MAAMsM,KAAKA,IAAQ2R,IAAO3R,IAC1C93C,EAAA,OAAK8W,UAAU,0BACb9W,EAACqtC,IAAI,CAACjyB,KAAMopC,IAAIhZ,MAAMsM,KAAKA,IAAQtR,IAASsR,IAC5C93C,EAAA,MAAI8W,UAAU,aACZ9W,EAAA,UAAKwkD,IAAIiH,WAAWC,MAAM,kDAAmD,CAAEjqD,MAAOq2C,EAAK48B,qBAC3F10E,EAAA,UAAKwkD,IAAIiH,WAAWC,MAAM,4CAA6C,CAAEjqD,MAAOq2C,EAAK8wB,oBAGtF,SASvB,EAACwuC,EAEDurE,UAAA,WACE,IAAMC,EAAQn+H,QAAQ/8C,OAAO,cAC7B,OAAO88C,IAAImiB,MAAM96E,KAAK,QAAS,CAC7BiG,OAAQ,CACN0wL,SAAUI,IAGhB,EAACxrE,EAEDsrE,WAAA,SAAW7yK,GAAS,IAAAoiF,EAAA,KAClBpiF,EAAQoS,MAAK,SAACq1E,GACZrF,EAAKqF,MAAQA,EACbrF,EAAKvoC,SAAU,EACf1pD,EAAEwqC,QACJ,GACF,EAACi4I,CAAA,CA/D+B,CAAS97H,KC4C3ClC,IAAAA,OAAao+H,KAEbr+H,IAAAA,OAAWs+H,UAAY,CAAEz3I,KAAM,aAAcX,UAAW+3I,GACxDj+H,IAAAA,aAAiB1gD,IAAI,8BAA8B,WACjDmyF,IAAAA,UAAeusF,SAAW97G,IAAAA,UAAgB,YAC1CuvB,IAAAA,UAAe8sF,YAAcr8G,IAAAA,UAAgB,eAC7CuvB,IAAAA,UAAe+sF,YAAct8G,IAAAA,UAAgB,eAC7CuvB,IAAAA,UAAegtF,mBAAqBv8G,IAAAA,UAAgB,uBAEpDj7E,EAAAA,EAAAA,QAAOyoF,IAAAA,UAAoB,aAAa,SAAUvrB,GAAO,IAAAu6H,EACjDprI,EAAO9sD,KAAK0qB,MAAMoiC,KAClBqrI,GAA+B,OAAlBD,EAAAprI,EAAK2kC,oBAAa,EAAlBymG,EAAoB1+K,SAAUggD,IAAAA,WAAe4uC,UAAU5uF,OACpE2hI,EAAa3hF,IAAAA,MAAU4J,UAAU,mCAAqC,KACtEg1H,EAAqB5+H,IAAAA,MAAU4J,UAAU,2CAA6C,UACxFo0H,EAAW1qI,EAAK0qI,WACda,ECnEK,SAAsBb,GACnC,IAAII,EAAQ,IAAI39K,KACZq+K,EAAY,IAAIr+K,KAAKu9K,GACrBa,EAAMT,EAAMt9K,cAAgBg+K,EAAUh+K,cACtCtF,EAAI4iL,EAAMp9K,WAAa89K,EAAU99K,WAIrC,OAHIxF,EAAI,GAAY,IAANA,GAAW4iL,EAAMl9K,UAAY49K,EAAU59K,YACnD29K,IAEKA,CACT,CD0DgBE,CAAaf,GAIzB,GAFA/9H,IAAAA,OAAa0+H,GAEI,OAAbX,EAAJ,CAEA,GAAI1qI,EAAKirI,eAAiBjrI,EAAKkrI,cAAeR,EAAW/9H,IAAM+9H,GAAUh+K,OAAO2+K,GAAYz7K,OAAOy+H,QAC9F,IAA2B,IAAvBruF,EAAKirI,gBAAiD,IAAvBjrI,EAAKkrI,cAAyBR,EAAW/9H,IAAM+9H,GAAU96K,OAAO07K,OACnG,KAA2B,IAAvBtrI,EAAKirI,gBAAkD,IAAvBjrI,EAAKkrI,cACzC,OADiER,EAAW/9H,IAAM+9H,GAAUh+K,OAAO2+K,GAAYz7K,OAAO,OAChH,CAEXihD,EAAM7kD,IACJ,WACA9D,EAAAu+J,IAAA,KACGrzG,IAAK,wBACNlrD,EAAA,QAAM8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,+CAAgD,CAAEhoD,KAAM8+K,KACxG1qI,EAAKkrI,cAAgBhjL,EAAA,QAAM8W,UAAU,OAAM,IAAE0tC,IAAAA,WAAekH,MAAM,0CAA2C,CAAE23H,IAAKA,IAAO,KAAW,MAZ9G,CAe/B,KAEA53L,EAAAA,EAAAA,QAAO0nF,IAAAA,UAAyB,UAAU,WACxCnoF,KAAKw3L,SAAWpqI,IAAOptD,KAAK0qB,MAAMoiC,KAAK0qI,WACzC,KAEA/2L,EAAAA,EAAAA,QAAO0nF,IAAAA,UAAyB,UAAU,SAAUxqB,GAClDA,EAAM7kD,IACJ,WACA9D,EAAA,OAAK8W,UAAU,cACb9W,EAAA,aAAQwkD,IAAAA,WAAekH,MAAM,oDAC7B1rD,EAAA,SAAO8W,UAAU,cAAc9mB,KAAK,OAAO6zD,KAAM74D,KAAKw3L,YAExD,GAEJ,KAEA/2L,EAAAA,EAAAA,QAAO0nF,IAAAA,UAAyB,QAAQ,SAAUxmF,GAChDA,EAAK61L,SAAWx3L,KAAKw3L,UACvB,KAEA/2L,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,UAAU,WAClC1Q,IAAAA,MAAU4J,UAAU,mDACtBpjE,KAAKw3L,SAAWpqI,IAAOptD,KAAK0qB,MAAM8sK,UAAY,IAElD,KAEA/2L,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,UAAU,SAAUvM,GAC5CnE,IAAAA,MAAU4J,UAAU,kDACtBzF,EAAM7kD,IACJ,WACA9D,EAAA,OAAK8W,UAAU,cACb9W,EAAA,SACE8W,UAAU,uBACVjZ,KAAK,WACL7N,KAAK,OACL6zD,KAAM74D,KAAKw3L,SACXxuK,SAAUhpB,KAAK0+D,QACfkG,YAAapL,IAAAA,WAAekH,MAAM,qDAClC8hB,QAAS,SAACj/E,GACRA,EAAE5C,OAAOqE,KAAO,MAClB,KAGJ,GAGN,KAEAvE,EAAAA,EAAAA,QAAOypE,IAAAA,UAAuB,cAAc,SAAUvoE,GAChD63D,IAAAA,MAAU4J,UAAU,mDACtBzhE,EAAK61L,SAAWx3L,KAAKw3L,WAEzB,KAEA/2L,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,iBAAiB,SAAUt0B,GAAO,IAAAspC,EAAA,KAC3DjnG,KAAK8sD,KAAKmrI,sBACZt6H,EAAM7kD,IACJ,WACA9D,EAACo8E,IAAQ,CAACtlE,UAAU,oBAAoBg1C,MAAOtH,IAAAA,WAAekH,MAAM,mDAClE1rD,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAK8sD,KAAKirI,cACjBh/H,SAAU,SAAChyD,GACTkgG,EAAKuxF,oBAAqB,EAE1BvxF,EAAKn6C,KAAKob,KAAK,CAAE6vH,YAAahxL,IAASkwB,MAAK,WAC1CgwE,EAAKuxF,oBAAqB,EAC1BxjL,EAAEwqC,QACJ,GACF,EACAkf,QAAS1+D,KAAKw4L,oBAEbh/H,IAAAA,WAAekH,MAAM,2DAExB1rD,EAACm8E,IAAM,CACL94D,MAAOr4B,KAAK8sD,KAAKkrI,cACjBj/H,SAAU,SAAChyD,GACTkgG,EAAKwxF,oBAAqB,EAE1BxxF,EAAKn6C,KAAKob,KAAK,CAAE8vH,YAAajxL,IAASkwB,MAAK,WAC1CgwE,EAAKwxF,oBAAqB,EAC1BzjL,EAAEwqC,QACJ,GACF,EACAkf,QAAS1+D,KAAKy4L,oBAEbj/H,IAAAA,WAAekH,MAAM,2DAExB1rD,EAAA,QAAM8W,UAAU,YAAY0tC,IAAAA,WAAekH,MAAM,2DAIzD,KAEAjgE,EAAAA,EAAAA,QAAOwxF,IAAAA,UAAwB,gBAAgB,SAAUt0B,GACnD39D,KAAK8sD,KAAKmrI,sBACZt6H,EAAM7kD,IACJ,iBACA9D,EAACyuD,IAAM,CAAC33C,UAAU,SAASw2B,QAAS,kBAAMkX,IAAAA,MAAU9sD,KAAK6qL,EAAoB,GAC1E/9H,IAAAA,WAAekH,MAAM,wDAI9B,KAEAjgE,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,SAAC7vB,IAC1BnE,IAAAA,QAAY1M,MAEb0M,IAAAA,MAAU4J,UAAU,oBAC9BzF,EAAM7kD,IACJ,YACAuiE,IAAAA,UACE,CACEnb,KAAM,uBACN9vC,KAAMopC,IAAAA,MAAU,cAElBA,IAAAA,WAAekH,MAAM,2CAI7B,GACF,G;;;;;;;;UE/MI1yB,EACAo+H,mBCDJ,IAAIl5G,EAAUhU,EAAAA,KAAAA,QACd,SAASkU,IACP,aACA17C,EAAOC,QAAUy7C,EAAsB,WACrC,OAAOz7C,CACT,EAAGD,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACb07C,EAAK5xC,OAAO9hB,UACZkiB,EAASwxC,EAAG5mD,eACZyvB,EAAiBza,OAAOya,gBAAkB,SAAUnvB,EAAKD,EAAKi5C,GAC5Dh5C,EAAID,GAAOi5C,EAAKh/C,KAClB,EACAusD,EAAU,mBAAqBluC,OAASA,OAAS,CAAC,EAClDmuC,EAAiBD,EAAQjuC,UAAY,aACrCmuC,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQK,aAAe,gBAC7C,SAASC,EAAO7mD,EAAKD,EAAK/F,GACxB,OAAO0a,OAAOya,eAAenvB,EAAKD,EAAK,CACrC/F,MAAOA,EACPw8B,YAAY,EACZpH,cAAc,EACdsH,UAAU,IACR12B,EAAID,EACV,CACA,IACE8mD,EAAO,CAAC,EAAG,GACb,CAAE,MAAO5yB,GACP4yB,EAAS,SAAgB7mD,EAAKD,EAAK/F,GACjC,OAAOgG,EAAID,GAAO/F,CACpB,CACF,CACA,SAASu5B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GACpC,IAAIC,EAAiBF,GAAWA,EAAQn0D,qBAAqBs0D,EAAYH,EAAUG,EACjFC,EAAYzyC,OAAOugB,OAAOgyB,EAAer0D,WACzCkU,EAAU,IAAIsgD,EAAQJ,GAAe,IACvC,OAAO73B,EAAeg4B,EAAW,UAAW,CAC1CntD,MAAOqtD,EAAiBP,EAAS7mD,EAAM6G,KACrCqgD,CACN,CACA,SAASG,EAASxwD,EAAIkJ,EAAKmY,GACzB,IACE,MAAO,CACLlgB,KAAM,SACNkgB,IAAKrhB,EAAG9D,KAAKgN,EAAKmY,GAEtB,CAAE,MAAO8b,GACP,MAAO,CACLh8B,KAAM,QACNkgB,IAAK8b,EAET,CACF,CACArpB,EAAQ2oB,KAAOA,EACf,IAAIg0B,EAAmB,CAAC,EACxB,SAASL,IAAa,CACtB,SAASM,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBb,EAAOa,EAAmBlB,GAAgB,WACxC,OAAOvzD,IACT,IACA,IAAIwhB,EAAWC,OAAOC,eACpBgzC,EAA0BlzC,GAAYA,EAASA,EAASod,EAAO,MACjE81B,GAA2BA,IAA4BrB,GAAMxxC,EAAO9hB,KAAK20D,EAAyBnB,KAAoBkB,EAAoBC,GAC1I,IAAIC,EAAKH,EAA2B70D,UAAYs0D,EAAUt0D,UAAY8hB,OAAOugB,OAAOyyB,GACpF,SAASG,EAAsBj1D,GAC7B,CAAC,OAAQ,QAAS,UAAUgX,SAAQ,SAAUmgB,GAC5C88B,EAAOj0D,EAAWm3B,GAAQ,SAAU5R,GAClC,OAAOllB,KAAK60D,QAAQ/9B,EAAQ5R,EAC9B,GACF,GACF,CACA,SAAS4vC,EAAcZ,EAAWa,GAChC,SAASC,EAAOl+B,EAAQ5R,EAAKyR,EAASC,GACpC,IAAIq+B,EAASZ,EAASH,EAAUp9B,GAASo9B,EAAWhvC,GACpD,GAAI,UAAY+vC,EAAOjwD,KAAM,CAC3B,IAAIypB,EAASwmC,EAAO/vC,IAClBne,EAAQ0nB,EAAO1nB,MACjB,OAAOA,GAAS,UAAYmsD,EAAQnsD,IAAU8a,EAAO9hB,KAAKgH,EAAO,WAAaguD,EAAYp+B,QAAQ5vB,EAAMmuD,SAASj+B,MAAK,SAAUlwB,GAC9HiuD,EAAO,OAAQjuD,EAAO4vB,EAASC,EACjC,IAAG,SAAUoK,GACXg0B,EAAO,QAASh0B,EAAKrK,EAASC,EAChC,IAAKm+B,EAAYp+B,QAAQ5vB,GAAOkwB,MAAK,SAAUk+B,GAC7C1mC,EAAO1nB,MAAQouD,EAAWx+B,EAAQlI,EACpC,IAAG,SAAUpK,GACX,OAAO2wC,EAAO,QAAS3wC,EAAOsS,EAASC,EACzC,GACF,CACAA,EAAOq+B,EAAO/vC,IAChB,CACA,IAAIkwC,EACJl5B,EAAel8B,KAAM,UAAW,CAC9B+G,MAAO,SAAe+vB,EAAQ5R,GAC5B,SAASmwC,IACP,OAAO,IAAIN,GAAY,SAAUp+B,EAASC,GACxCo+B,EAAOl+B,EAAQ5R,EAAKyR,EAASC,EAC/B,GACF,CACA,OAAOw+B,EAAkBA,EAAkBA,EAAgBn+B,KAAKo+B,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAASjB,EAAiBP,EAAS7mD,EAAM6G,GACvC,IAAIwkB,EAAQ,iBACZ,OAAO,SAAUvB,EAAQ5R,GACvB,GAAI,cAAgBmT,EAAO,MAAM,IAAIxsB,MAAM,gCAC3C,GAAI,cAAgBwsB,EAAO,CACzB,GAAI,UAAYvB,EAAQ,MAAM5R,EAC9B,MAAO,CACLne,WAAO,EACPyf,MAAM,EAEV,CACA,IAAK3S,EAAQijB,OAASA,EAAQjjB,EAAQqR,IAAMA,IAAO,CACjD,IAAIo5B,EAAWzqC,EAAQyqC,SACvB,GAAIA,EAAU,CACZ,IAAIgX,EAAiBC,EAAoBjX,EAAUzqC,GACnD,GAAIyhD,EAAgB,CAClB,GAAIA,IAAmBhB,EAAkB,SACzC,OAAOgB,CACT,CACF,CACA,GAAI,SAAWzhD,EAAQijB,OAAQjjB,EAAQ2hD,KAAO3hD,EAAQ4hD,MAAQ5hD,EAAQqR,SAAS,GAAI,UAAYrR,EAAQijB,OAAQ,CAC7G,GAAI,mBAAqBuB,EAAO,MAAMA,EAAQ,YAAaxkB,EAAQqR,IACnErR,EAAQ6hD,kBAAkB7hD,EAAQqR,IACpC,KAAO,WAAarR,EAAQijB,QAAUjjB,EAAQ8hD,OAAO,SAAU9hD,EAAQqR,KACvEmT,EAAQ,YACR,IAAI48B,EAASZ,EAASR,EAAS7mD,EAAM6G,GACrC,GAAI,WAAaohD,EAAOjwD,KAAM,CAC5B,GAAIqzB,EAAQxkB,EAAQ2S,KAAO,YAAc,iBAAkByuC,EAAO/vC,MAAQovC,EAAkB,SAC5F,MAAO,CACLvtD,MAAOkuD,EAAO/vC,IACdsB,KAAM3S,EAAQ2S,KAElB,CACA,UAAYyuC,EAAOjwD,OAASqzB,EAAQ,YAAaxkB,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAClG,CACF,CACF,CACA,SAASqwC,EAAoBjX,EAAUzqC,GACrC,IAAIm3J,EAAan3J,EAAQijB,OACvBA,EAASwnB,EAASj5B,SAAS2lJ,GAC7B,QAAIl4J,IAAcgkB,EAAQ,OAAOjjB,EAAQyqC,SAAW,KAAM,UAAY0sH,GAAc1sH,EAASj5B,SAAiB,SAAMxR,EAAQijB,OAAS,SAAUjjB,EAAQqR,SAAMpS,EAAWyiD,EAAoBjX,EAAUzqC,GAAU,UAAYA,EAAQijB,SAAW,WAAak0I,IAAen3J,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAAsC4xI,EAAa,aAAc12G,EAClY,IAAIW,EAASZ,EAASv9B,EAAQwnB,EAASj5B,SAAUxR,EAAQqR,KACzD,GAAI,UAAY+vC,EAAOjwD,KAAM,OAAO6O,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM+vC,EAAO/vC,IAAKrR,EAAQyqC,SAAW,KAAMgW,EACjH,IAAIsB,EAAOX,EAAO/vC,IAClB,OAAO0wC,EAAOA,EAAKpvC,MAAQ3S,EAAQyqC,EAASuX,YAAcD,EAAK7uD,MAAO8M,EAAQqV,KAAOo1B,EAASwX,QAAS,WAAajiD,EAAQijB,SAAWjjB,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,GAAYe,EAAQyqC,SAAW,KAAMgW,GAAoBsB,GAAQ/hD,EAAQijB,OAAS,QAASjjB,EAAQqR,IAAM,IAAIkU,UAAU,oCAAqCvlB,EAAQyqC,SAAW,KAAMgW,EACrW,CACA,SAASyB,EAAaC,GACpB,IAAIvQ,EAAQ,CACVwQ,OAAQD,EAAK,IAEf,KAAKA,IAASvQ,EAAMyQ,SAAWF,EAAK,IAAK,KAAKA,IAASvQ,EAAM0Q,WAAaH,EAAK,GAAIvQ,EAAM2Q,SAAWJ,EAAK,IAAKh2D,KAAKq2D,WAAWnhD,KAAKuwC,EACrI,CACA,SAAS6Q,EAAc7Q,GACrB,IAAIwP,EAASxP,EAAM8Q,YAAc,CAAC,EAClCtB,EAAOjwD,KAAO,gBAAiBiwD,EAAO/vC,IAAKugC,EAAM8Q,WAAatB,CAChE,CACA,SAASd,EAAQJ,GACf/zD,KAAKq2D,WAAa,CAAC,CACjBJ,OAAQ,SACNlC,EAAYp9C,QAAQo/C,EAAc/1D,MAAOA,KAAKgxB,OAAM,EAC1D,CACA,SAAS4N,EAAO43B,GACd,GAAIA,GAAY,KAAOA,EAAU,CAC/B,IAAIC,EAAiBD,EAASjD,GAC9B,GAAIkD,EAAgB,OAAOA,EAAe12D,KAAKy2D,GAC/C,GAAI,mBAAqBA,EAASttC,KAAM,OAAOstC,EAC/C,IAAK/mD,MAAM+mD,EAAS/xD,QAAS,CAC3B,IAAIwC,GAAK,EACPiiB,EAAO,SAASA,IACd,OAASjiB,EAAIuvD,EAAS/xD,QAAS,GAAIod,EAAO9hB,KAAKy2D,EAAUvvD,GAAI,OAAOiiB,EAAKniB,MAAQyvD,EAASvvD,GAAIiiB,EAAK1C,MAAO,EAAI0C,EAC9G,OAAOA,EAAKniB,WAAQ+L,EAAWoW,EAAK1C,MAAO,EAAI0C,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAM,IAAIkQ,UAAU85B,EAAQsD,GAAY,mBAC1C,CACA,OAAOjC,EAAkB50D,UAAY60D,EAA4Bt4B,EAAey4B,EAAI,cAAe,CACjG5tD,MAAOytD,EACPr4B,cAAc,IACZD,EAAes4B,EAA4B,cAAe,CAC5DztD,MAAOwtD,EACPp4B,cAAc,IACZo4B,EAAkBoC,YAAc/C,EAAOY,EAA4Bd,EAAmB,qBAAsB/7C,EAAQi/C,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOjrD,YACjD,QAASkrD,IAASA,IAASvC,GAAqB,uBAAyBuC,EAAKH,aAAeG,EAAKjkD,MACpG,EAAG8E,EAAQo/C,KAAO,SAAUF,GAC1B,OAAOp1C,OAAOixC,eAAiBjxC,OAAOixC,eAAemE,EAAQrC,IAA+BqC,EAAOrK,UAAYgI,EAA4BZ,EAAOiD,EAAQnD,EAAmB,sBAAuBmD,EAAOl3D,UAAY8hB,OAAOugB,OAAO2yB,GAAKkC,CAC5O,EAAGl/C,EAAQq/C,MAAQ,SAAU9xC,GAC3B,MAAO,CACLgwC,QAAShwC,EAEb,EAAG0vC,EAAsBE,EAAcn1D,WAAYi0D,EAAOkB,EAAcn1D,UAAW6zD,GAAqB,WACtG,OAAOxzD,IACT,IAAI2X,EAAQm9C,cAAgBA,EAAen9C,EAAQs/B,MAAQ,SAAU4c,EAASC,EAAS9mD,EAAM+mD,EAAagB,QACxG,IAAWA,IAAgBA,EAAcpV,SACzC,IAAIsX,EAAO,IAAInC,EAAcx0B,EAAKuzB,EAASC,EAAS9mD,EAAM+mD,GAAcgB,GACxE,OAAOp9C,EAAQi/C,oBAAoB9C,GAAWmD,EAAOA,EAAK/tC,OAAO+N,MAAK,SAAUxI,GAC9E,OAAOA,EAAOjI,KAAOiI,EAAO1nB,MAAQkwD,EAAK/tC,MAC3C,GACF,EAAG0rC,EAAsBD,GAAKf,EAAOe,EAAIjB,EAAmB,aAAcE,EAAOe,EAAIpB,GAAgB,WACnG,OAAOvzD,IACT,IAAI4zD,EAAOe,EAAI,YAAY,WACzB,MAAO,oBACT,IAAIh9C,EAAQuI,KAAO,SAAUhgB,GAC3B,IAAIi3B,EAAS1V,OAAOvhB,GAClBggB,EAAO,GACT,IAAK,IAAIpT,KAAOqqB,EAAQjX,EAAKhL,KAAKpI,GAClC,OAAOoT,EAAKmW,UAAW,SAASnN,IAC9B,KAAOhJ,EAAKzb,QAAS,CACnB,IAAIqI,EAAMoT,EAAKtK,MACf,GAAI9I,KAAOqqB,EAAQ,OAAOjO,EAAKniB,MAAQ+F,EAAKoc,EAAK1C,MAAO,EAAI0C,CAC9D,CACA,OAAOA,EAAK1C,MAAO,EAAI0C,CACzB,CACF,EAAGvR,EAAQinB,OAASA,EAAQu1B,EAAQx0D,UAAY,CAC9CiM,YAAauoD,EACbnjC,MAAO,SAAekmC,GACpB,GAAIl3D,KAAKw1B,KAAO,EAAGx1B,KAAKkpB,KAAO,EAAGlpB,KAAKw1D,KAAOx1D,KAAKy1D,WAAQ3iD,EAAW9S,KAAKwmB,MAAO,EAAIxmB,KAAKs+C,SAAW,KAAMt+C,KAAK82B,OAAS,OAAQ92B,KAAKklB,SAAMpS,EAAW9S,KAAKq2D,WAAW1/C,QAAQ2/C,IAAiBY,EAAe,IAAK,IAAIrkD,KAAQ7S,KAAM,MAAQ6S,EAAKyyC,OAAO,IAAMzjC,EAAO9hB,KAAKC,KAAM6S,KAAUpD,OAAOoD,EAAK0C,MAAM,MAAQvV,KAAK6S,QAAQC,EACtU,EACAoqB,KAAM,WACJl9B,KAAKwmB,MAAO,EACZ,IAAI2wC,EAAan3D,KAAKq2D,WAAW,GAAGE,WACpC,GAAI,UAAYY,EAAWnyD,KAAM,MAAMmyD,EAAWjyC,IAClD,OAAOllB,KAAKo3D,IACd,EACA1B,kBAAmB,SAA2B2B,GAC5C,GAAIr3D,KAAKwmB,KAAM,MAAM6wC,EACrB,IAAIxjD,EAAU7T,KACd,SAASsT,EAAOgkD,EAAKC,GACnB,OAAOtC,EAAOjwD,KAAO,QAASiwD,EAAO/vC,IAAMmyC,EAAWxjD,EAAQqV,KAAOouC,EAAKC,IAAW1jD,EAAQijB,OAAS,OAAQjjB,EAAQqR,SAAMpS,KAAcykD,CAC5I,CACA,IAAK,IAAItwD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC1BguD,EAASxP,EAAM8Q,WACjB,GAAI,SAAW9Q,EAAMwQ,OAAQ,OAAO3iD,EAAO,OAC3C,GAAImyC,EAAMwQ,QAAUj2D,KAAKw1B,KAAM,CAC7B,IAAIgiC,EAAW31C,EAAO9hB,KAAK0lD,EAAO,YAChCgS,EAAa51C,EAAO9hB,KAAK0lD,EAAO,cAClC,GAAI+R,GAAYC,EAAY,CAC1B,GAAIz3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,GAC9D,GAAIl2D,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,MAAO,GAAIqB,GACT,GAAIx3D,KAAKw1B,KAAOiwB,EAAMyQ,SAAU,OAAO5iD,EAAOmyC,EAAMyQ,UAAU,OACzD,CACL,IAAKuB,EAAY,MAAM,IAAI5rD,MAAM,0CACjC,GAAI7L,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,OAAO7iD,EAAOmyC,EAAM0Q,WACxD,CACF,CACF,CACF,EACAR,OAAQ,SAAgB3wD,EAAMkgB,GAC5B,IAAK,IAAIje,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,QAAUj2D,KAAKw1B,MAAQ3T,EAAO9hB,KAAK0lD,EAAO,eAAiBzlD,KAAKw1B,KAAOiwB,EAAM0Q,WAAY,CACjG,IAAIuB,EAAejS,EACnB,KACF,CACF,CACAiS,IAAiB,UAAY1yD,GAAQ,aAAeA,IAAS0yD,EAAazB,QAAU/wC,GAAOA,GAAOwyC,EAAavB,aAAeuB,EAAe,MAC7I,IAAIzC,EAASyC,EAAeA,EAAanB,WAAa,CAAC,EACvD,OAAOtB,EAAOjwD,KAAOA,EAAMiwD,EAAO/vC,IAAMA,EAAKwyC,GAAgB13D,KAAK82B,OAAS,OAAQ92B,KAAKkpB,KAAOwuC,EAAavB,WAAY7B,GAAoBt0D,KAAKgP,SAASimD,EAC5J,EACAjmD,SAAU,SAAkBimD,EAAQmB,GAClC,GAAI,UAAYnB,EAAOjwD,KAAM,MAAMiwD,EAAO/vC,IAC1C,MAAO,UAAY+vC,EAAOjwD,MAAQ,aAAeiwD,EAAOjwD,KAAOhF,KAAKkpB,KAAO+rC,EAAO/vC,IAAM,WAAa+vC,EAAOjwD,MAAQhF,KAAKo3D,KAAOp3D,KAAKklB,IAAM+vC,EAAO/vC,IAAKllB,KAAK82B,OAAS,SAAU92B,KAAKkpB,KAAO,OAAS,WAAa+rC,EAAOjwD,MAAQoxD,IAAap2D,KAAKkpB,KAAOktC,GAAW9B,CACtQ,EACAvjB,OAAQ,SAAgBolB,GACtB,IAAK,IAAIlvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAM0Q,aAAeA,EAAY,OAAOn2D,KAAKgP,SAASy2C,EAAM8Q,WAAY9Q,EAAM2Q,UAAWE,EAAc7Q,GAAQ6O,CACrH,CACF,EACA,MAAS,SAAgB2B,GACvB,IAAK,IAAIhvD,EAAIjH,KAAKq2D,WAAW5xD,OAAS,EAAGwC,GAAK,IAAKA,EAAG,CACpD,IAAIw+C,EAAQzlD,KAAKq2D,WAAWpvD,GAC5B,GAAIw+C,EAAMwQ,SAAWA,EAAQ,CAC3B,IAAIhB,EAASxP,EAAM8Q,WACnB,GAAI,UAAYtB,EAAOjwD,KAAM,CAC3B,IAAI2yD,EAAS1C,EAAO/vC,IACpBoxC,EAAc7Q,EAChB,CACA,OAAOkS,CACT,CACF,CACA,MAAM,IAAI9rD,MAAM,wBAClB,EACA+rD,cAAe,SAAuBpB,EAAUX,EAAYC,GAC1D,OAAO91D,KAAKs+C,SAAW,CACrBj5B,SAAUuZ,EAAO43B,GACjBX,WAAYA,EACZC,QAASA,GACR,SAAW91D,KAAK82B,SAAW92B,KAAKklB,SAAMpS,GAAYwhD,CACvD,GACC38C,CACL,CACAD,EAAOC,QAAUy7C,EAAqB17C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,iBC1S3G,SAASu7C,EAAQnmD,GAGf,OAAQ2K,EAAOC,QAAUu7C,EAAU,mBAAqB9tC,QAAU,iBAAmBA,OAAOC,SAAW,SAAUtY,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqBqY,QAAUrY,EAAInB,cAAgBwZ,QAAUrY,IAAQqY,OAAOzlB,UAAY,gBAAkBoN,CAC1H,EAAG2K,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,QAAUu7C,EAAQnmD,EAC5F,CACA2K,EAAOC,QAAUu7C,EAASx7C,EAAOC,QAAQy6C,YAAa,EAAM16C,EAAOC,QAAiB,QAAID,EAAOC,uBCP/F,IAAIygD,EAAUlZ,EAAQ,IAARA,GACdxnC,EAAOC,QAAUygD,EAGjB,IACEC,mBAAqBD,CACvB,CAAE,MAAOE,GACmB,iBAAfx4C,WACTA,WAAWu4C,mBAAqBD,EAEhCr4C,SAAS,IAAK,yBAAdA,CAAwCq4C,EAE5C,ICbIG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB3lD,IAAjB4lD,EACH,OAAOA,EAAa/gD,QAGrB,IAAID,EAAS6gD,EAAyBE,GAAY,CAGjD9gD,QAAS,CAAC,GAOX,OAHAghD,EAAoBF,GAAU/gD,EAAQA,EAAOC,QAAS6gD,GAG/C9gD,EAAOC,OACf,CAGA6gD,EAAoBxjD,EAAI2jD,ECxBxBH,EAAoBvjD,EAAKyC,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAoB5jD,EAAI,CAAC+C,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAoB3jD,EAAI,CAAC,EAGzB2jD,EAAoBj1D,EAAK8oK,GACjB1sH,QAAQsF,IAAIxjC,OAAOvB,KAAKs4C,EAAoB3jD,GAAG/U,QAAO,CAACwsK,EAAUx/J,KACvE0rD,EAAoB3jD,EAAE/H,GAAKu/J,EAASC,GAC7BA,IACL,KCNJ9zG,EAAoBptD,EAAKihK,GAEjB,2CCHR7zG,EAAoB1jD,EAAI,WACvB,GAA0B,iBAAfgL,WAAyB,OAAOA,WAC3C,IACC,OAAO9f,MAAQ,IAAI+f,SAAS,cAAb,EAChB,CAAE,MAAOxc,GACR,GAAsB,iBAAXxB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBy2D,EAAoB/mD,EAAI,CAAC1E,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GVA9E4R,EAAa,CAAC,EACdo+H,EAAoB,kBAExB5zG,EAAoBtxD,EAAI,CAAC2vC,EAAKrwB,EAAM1Z,EAAKu/J,KACxC,GAAGr+H,EAAW6I,GAAQ7I,EAAW6I,GAAK3hC,KAAKsR,OAA3C,CACA,IAAI9D,EAAQ6pJ,EACZ,QAAWz5J,IAARhG,EAEF,IADA,IAAIqzB,EAAUv/B,SAASgpB,qBAAqB,UACpC3iB,EAAI,EAAGA,EAAIk5B,EAAQ17B,OAAQwC,IAAK,CACvC,IAAI6D,EAAIq1B,EAAQl5B,GAChB,GAAG6D,EAAE6X,aAAa,QAAUk0B,GAAO/rC,EAAE6X,aAAa,iBAAmBypJ,EAAoBt/J,EAAK,CAAE4V,EAAS5X,EAAG,KAAO,CACpH,CAEG4X,IACH6pJ,GAAa,GACb7pJ,EAAS9hB,SAAS0E,cAAc,WAEzB62C,QAAU,QACjBz5B,EAAO/Z,QAAU,IACb6vD,EAAoBg0G,IACvB9pJ,EAAOE,aAAa,QAAS41C,EAAoBg0G,IAElD9pJ,EAAOE,aAAa,eAAgBwpJ,EAAoBt/J,GAExD4V,EAAON,IAAMy0B,GAEd7I,EAAW6I,GAAO,CAACrwB,GACnB,IAAIimJ,EAAmB,CAACj3I,EAAMviB,KAE7ByP,EAAOi5B,QAAUj5B,EAAOg5B,OAAS,KACjCvuC,aAAaxE,GACb,IAAI+jK,EAAU1+H,EAAW6I,GAIzB,UAHO7I,EAAW6I,GAClBn0B,EAAOna,YAAcma,EAAOna,WAAWC,YAAYka,GACnDgqJ,GAAWA,EAAQ/1J,SAAS9S,GAAQA,EAAGoP,KACpCuiB,EAAM,OAAOA,EAAKviB,EAAM,EAExBtK,EAAU7F,WAAW2pK,EAAiB/8H,KAAK,UAAM58B,EAAW,CAAE9N,KAAM,UAAWrE,OAAQ+hB,IAAW,MACtGA,EAAOi5B,QAAU8wH,EAAiB/8H,KAAK,KAAMhtB,EAAOi5B,SACpDj5B,EAAOg5B,OAAS+wH,EAAiB/8H,KAAK,KAAMhtB,EAAOg5B,QACnD6wH,GAAc3rK,SAASiiB,KAAK9O,YAAY2O,EApCkB,CAoCX,EWvChD81C,EAAoB5gD,EAAKD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,QCL9D,IAAI4lK,EACAn0G,EAAoB1jD,EAAE83J,gBAAeD,EAAYn0G,EAAoB1jD,EAAEmb,SAAW,IACtF,IAAIrvB,EAAW43D,EAAoB1jD,EAAElU,SACrC,IAAK+rK,GAAa/rK,IACbA,EAASisK,gBACZF,EAAY/rK,EAASisK,cAAczqJ,MAC/BuqJ,GAAW,CACf,IAAIxsI,EAAUv/B,EAASgpB,qBAAqB,UAC5C,GAAGuW,EAAQ17B,OAEV,IADA,IAAIwC,EAAIk5B,EAAQ17B,OAAS,EAClBwC,GAAK,IAAM0lK,GAAWA,EAAYxsI,EAAQl5B,KAAKmb,GAExD,CAID,IAAKuqJ,EAAW,MAAM,IAAI9gK,MAAM,yDAChC8gK,EAAYA,EAAUhpK,QAAQ,OAAQ,IAAIA,QAAQ,QAAS,IAAIA,QAAQ,YAAa,KACpF60D,EAAoB5tD,EAAI+hK,YCbxB,IAAIG,EAAkB,CACrB,IAAK,GAGNt0G,EAAoB3jD,EAAEzM,EAAI,CAACikK,EAASC,KAElC,IAAIS,EAAqBv0G,EAAoB/mD,EAAEq7J,EAAiBT,GAAWS,EAAgBT,QAAWv5J,EACtG,GAA0B,IAAvBi6J,EAGF,GAAGA,EACFT,EAASp3J,KAAK63J,EAAmB,QAC3B,CAGL,IAAIh2I,EAAU,IAAI4oB,SAAQ,CAAChpB,EAASC,IAAYm2I,EAAqBD,EAAgBT,GAAW,CAAC11I,EAASC,KAC1G01I,EAASp3J,KAAK63J,EAAmB,GAAKh2I,GAGtC,IAAI8f,EAAM2hB,EAAoB5tD,EAAI4tD,EAAoBptD,EAAEihK,GAEpDhoJ,EAAQ,IAAIxY,MAgBhB2sD,EAAoBtxD,EAAE2vC,GAfF5jC,IACnB,GAAGulD,EAAoB/mD,EAAEq7J,EAAiBT,KAEf,KAD1BU,EAAqBD,EAAgBT,MACRS,EAAgBT,QAAWv5J,GACrDi6J,GAAoB,CACtB,IAAIC,EAAY/5J,IAAyB,SAAfA,EAAMjO,KAAkB,UAAYiO,EAAMjO,MAChEioK,EAAUh6J,GAASA,EAAMtS,QAAUsS,EAAMtS,OAAOyhB,IACpDiC,EAAMmW,QAAU,iBAAmB6xI,EAAU,cAAgBW,EAAY,KAAOC,EAAU,IAC1F5oJ,EAAMxR,KAAO,iBACbwR,EAAMrf,KAAOgoK,EACb3oJ,EAAMy+B,QAAUmqH,EAChBF,EAAmB,GAAG1oJ,EACvB,CACD,GAEwC,SAAWgoJ,EAASA,EAE/D,CACD,EAcF,IAAIa,EAAuB,CAACC,EAA4BxrK,KACvD,IAGI82D,EAAU4zG,GAHTe,EAAUC,EAAaj1G,GAAWz2D,EAGhBsF,EAAI,EAC3B,GAAGmmK,EAAS9rH,MAAM33B,GAAgC,IAAxBmjJ,EAAgBnjJ,KAAa,CACtD,IAAI8uC,KAAY40G,EACZ70G,EAAoB/mD,EAAE47J,EAAa50G,KACrCD,EAAoBxjD,EAAEyjD,GAAY40G,EAAY50G,IAG7CL,GAAsBA,EAAQI,EAClC,CAEA,IADG20G,GAA4BA,EAA2BxrK,GACrDsF,EAAImmK,EAAS3oK,OAAQwC,IACzBolK,EAAUe,EAASnmK,GAChBuxD,EAAoB/mD,EAAEq7J,EAAiBT,IAAYS,EAAgBT,IACrES,EAAgBT,GAAS,KAE1BS,EAAgBT,GAAW,CAC5B,EAIGiB,EAAqBtgK,KAAiC,2BAAIA,KAAiC,4BAAK,GACpGsgK,EAAmB32J,QAAQu2J,EAAqBx9H,KAAK,KAAM,IAC3D49H,EAAmBp4J,KAAOg4J,EAAqBx9H,KAAK,KAAM49H,EAAmBp4J,KAAKw6B,KAAK49H,oCCrFxE,SAASxzG,IAYtB,OAXAA,EAAWr4C,OAAOs+B,OAASt+B,OAAOs+B,OAAOrQ,OAAS,SAAU/uC,GAC1D,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GACvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,GAG3B,CACA,OAAOnM,CACT,EACOm5D,EAASrmD,MAAMzT,KAAM0T,UAC9B,CCbA,SAASotE,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQn0E,EAAKoY,GACpE,IACE,IAAI0wC,EAAOmrB,EAAIj0E,GAAKoY,GAChBne,EAAQ6uD,EAAK7uD,KACnB,CAAE,MAAOsd,GAEP,YADAuS,EAAOvS,EAET,CACIuxC,EAAKpvC,KACPmQ,EAAQ5vB,GAER44C,QAAQhpB,QAAQ5vB,GAAOkwB,KAAK+pD,EAAOC,EAEvC,CACe,SAASC,EAAkBr9E,GACxC,OAAO,WACL,IAAImJ,EAAOhN,KACTsZ,EAAO5F,UACT,OAAO,IAAIisC,SAAQ,SAAUhpB,EAASC,GACpC,IAAImqD,EAAMl9E,EAAG4P,MAAMzG,EAAMsM,GACzB,SAAS0nE,EAAMj6E,GACb+5E,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,OAAQl6E,EAClE,CACA,SAASk6E,EAAOjgD,GACd8/C,EAAmBC,EAAKpqD,EAASC,EAAQoqD,EAAOC,EAAQ,QAASjgD,EACnE,CACAggD,OAAMluE,EACR,GACF,CACF,8BC7BA,MAAM,EAA+BykG,OAAOC,KAAK/D,OAAO,0BCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,6CCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qDCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,kDCalDilF,EAA+B,CACnCC,gBAAgB,EAChBC,sBAAsB,EACtBC,aAAc,GACdC,MAAM,EAENC,WAAY,CACVlxL,GAAI,qBACJ7C,KAAM,YAGRg0L,WAAY,CACVC,OAAQ,sBACRC,OAAQ,wBAGRC,GAAkB,EAEhBC,EAAY,eAAArhG,EAAA7W,EAAA9tB,IAAAA,MAAG,SAAA0gG,IAAA,OAAA1gG,IAAAA,MAAA,SAAArkC,GAAA,cAAAA,EAAAyG,KAAAzG,EAAA7F,MAAA,OAIlB,OAHIiwK,IACHv4L,SAASiiB,KAAKnb,WAAa,4FAC3ByxL,GAAkB,GACnBpqK,EAAAyG,KAAA,EAAAzG,EAAA7F,KAAA,EChCDqlJ,EAAAA,EAA6B/0G,IAAAA,MAAU4J,UAAU,WAAU,+CAEpD,6BDiCmB,cAAAr0C,EAAA4mC,OAAA,SAAA5mC,EAAAymC,MAAA,OAAAzmC,EAAAyG,KAAA,EAAAzG,EAAAkvI,GAAAlvI,EAAA,SAExBuL,QAAQjW,MAAM,yBAAwB0K,EAAAkvI,IAAO,eAAAlvI,EAAA4mC,OAAA,SAGxC,MAAI,yBAAA5mC,EAAAmO,OAAA,GAAA42H,EAAA,kBACZ,kBAbiB,OAAA/7D,EAAAtkF,MAAA,KAAAC,UAAA,KAeZ2lL,EAAe,eAAA9xF,EAAArmB,EAAA9tB,IAAAA,MAAG,SAAAosG,EAAOtqF,EAAiCokH,GAAuB,IAAAC,EAAAC,EAAAC,EAAAC,EAAArqF,EAAAsqF,EAAAC,EAAAxqJ,EAAA,OAAAgkB,IAAAA,MAAA,SAAAqsG,GAAA,cAAAA,EAAAjqI,KAAAiqI,EAAAv2I,MAAA,OAC0D,IAAzIqwK,EAAYrkH,EAAWr0E,KAAK,+GAEnB4D,OAAQ,CAAFg7J,EAAAv2I,KAAA,eAAAu2I,EAAA9pG,OAAA,iBAE+B,OAA9C6jI,EAAUhgI,IAAAA,MAAU4J,UAAU,iBAAgBq8F,EAAAv2I,KAAA,EAEIkwK,IAAc,UAAA35B,EAAAxB,GAAAwB,EAAAjqG,KAAAiqG,EAAAxB,GAAE,CAAFwB,EAAAv2I,KAAA,QAAAu2I,EAAAxB,GAAK,CAAC,EAAC,OAAjC,GAAiCw7B,EAAAh6B,EAAAxB,GAArEy7B,EAAMD,EAANC,OAAQrqF,EAAUoqF,EAAVpqF,WAAYsqF,EAAUF,EAAVE,WAAYC,EAAIH,EAAJG,KAEnCF,EAAQ,CAAFj6B,EAAAv2I,KAAA,gBAAAu2I,EAAA9pG,OAAA,kBAELvmB,EAAI0qB,EAAA,CACRkwD,QAAS,CAAC3a,EAAYsqF,EAAYH,GAAWI,GAAM9yL,OAAOJ,UACvDgyL,GAGLa,EAAU93L,MAAK,WACb,IAAIzB,KAAKulH,aAAa,4BAAtB,CAEAvlH,KAAK4iB,aAAa,2BAA4B,IAE9C,IAAMi3K,EAASx5L,EAAEL,MAAMy0B,SAAS,2CAA2C3b,IAAI9Y,MAE/EK,EAAEw5L,GAAQplK,SAAS,MAAM5vB,SAEzBg1L,EAAOl/I,QAAQt6C,EAAE,UAAUwC,SAAS,mBAAmBy9B,KAAKjgC,EAAE,UAAUwC,SAAS,iBAE7E22L,GACFK,EAAOv5J,KAAKjgC,EAAE,UAAUwC,SAAS,0BAGnC,IAAMi3L,EAAgBz5L,EAAEL,MAAMqF,QAAQ,mBAAmB,GAEzDhF,EAAEy5L,GAAex5J,KAAKjgC,EAAE,UAAUwC,SAAS,WAE3C,IAAMk3L,EAAWD,EAAc5hG,cAE/B73F,EAAE05L,GACCtyJ,OAAOpnC,EAAE,UAAUwC,SAAS,sBAC5B4kC,OAAOpnC,EAAE,UAAUwC,SAAS,uBAC5B4kC,OAAOpnC,EAAE,UAAUwC,SAAS,uBAE/By2L,EAAUpkL,KAAK,IAAIwkL,EAAOK,EAAU3qJ,GAzBqB,CA0B3D,IAAG,yBAAAqwH,EAAAviI,OAAA,GAAAsiI,EAAA,KACJ,gBA5CoBzC,EAAAi9B,GAAA,OAAAzyF,EAAA9zF,MAAA,KAAAC,UAAA,KA8CfumL,EAAmB,SAACX,GAExB,OADS,MAATA,GAAAA,EAAW3iL,SAAQ,SAACujL,GAAO,OAAKA,EAAQjoL,SAAS,IAC1C,EACT,EAEMkoL,EAAkB,SAACx6L,IACvBc,EAAAA,EAAAA,QAAOd,EAAW,YAAY,WAC5BK,KAAKs5L,UAAYW,EAAiBj6L,KAAKs5L,UACzC,GACF,EAEMc,EAAW,SAACz6L,EAAgB0E,IAChC5D,EAAAA,EAAAA,QAAOd,EAAW,CAAC,WAAY,aAAa,WAC1C,IAAMu1E,EAAal1E,KAAKK,EAAEgE,GAEtB6wE,EAAWzwE,SACbzE,KAAKs5L,UAAYW,EAAiBj6L,KAAKq6L,cAEvChB,EAAgBnkH,EAAYl1E,KAAKs5L,WAErC,IAEAa,EAAgBx6L,EAClB,EAEA65D,IAAAA,aAAiB1gD,IAAI,mCAAmC,WACtDshL,EAASluG,IAAAA,UAAuB,cAChCkuG,EAASvsH,IAAAA,UAA8B,6BAEvCptE,EAAAA,EAAAA,QAAOmxE,IAAAA,UAA+B,YAAY,WAAqB,IAAAq1B,EAAA,MACrE0D,EAAAA,EAAAA,UAAS3qG,KAAK0qB,MAAO,YAAY,SAACqb,GAAkB,QAAA2pF,EAAAh8G,UAAAjP,OAAT6U,EAAI,IAAA5Z,MAAAgwH,EAAA,EAAAA,EAAA,KAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAJhiB,EAAIgiB,EAAA,GAAA5nB,UAAA4nB,GAC7CyK,EAAItyB,WAAC,EAAG6F,GAER2tF,EAAKqyF,UAAYW,EAAiBhzF,EAAKqyF,WAEvCD,EAAgBpyF,EAAK5mG,IAAK4mG,EAAKqyF,UACjC,GACF,KAEA74L,EAAAA,EAAAA,QAAOmxE,IAAAA,UAA+B,YAAY,WAChD5xE,KAAKs5L,UAAYW,EAAiBj6L,KAAKs5L,UACzC,KAEA74L,EAAAA,EAAAA,QAAO4xE,IAAAA,UAA4B,iBAAiB,WAClDryE,KAAKs5L,UAAYW,EAAiBj6L,KAAKs5L,WAEvCD,EAAgBr5L,KAAKK,EAAE,cAAeL,KAAKs5L,UAC7C,IAEAa,EAAgBvoH,IAAAA,WAChBuoH,EAAgB9nH,IAAAA,UAClB;;;;;;;ME9IA,IAAI7Z,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,GCLRomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,MCJ3E0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,M,+BCLvD,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,iC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,GAEFomD,EAAgBpmD,EAAG7G,GCL5B,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,2B,ICQnC6mF,EAAAA,SAAAA,GCPN,IAAwB3nI,EAAUC,E,kDAAAA,E,GAAVD,E,GAC5BhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,G,2BDKvB9mC,UAAA,WACI,MAAO,4B,EAGX3iB,MAAA,WACI,OAAOqwD,IAAAA,WAAAA,MAAqB,yD,EAGhCpjC,QAAA,WAAU,WACAmkK,EAAU/gI,IAAAA,MAAAA,UAAoB,qBAEpC,OAAOxkD,EAAE,cAAeulL,EAAQ3yL,KAAI,SAAA62D,GAAM,OAAIzpD,EAAE,8BAA+B,CAC3EstC,QAAS,WACL,EAAK53B,MAAMoiC,KAAKob,KAAK,CACjBsyH,iBAAkB/7H,IACnBxnC,MAAK,WACJ,EAAKtqB,YAGdqI,EAAE,MAAO,CACRoN,IAAKo3C,IAAAA,MAAAA,UAAoB,2BAA6BiF,EACtDI,IAAKrF,IAAAA,WAAAA,MAAqB,mE,EAtBjB8gI,C,MAAoBzxH,IEDzCrP,IAAAA,aAAAA,IAAqB,sCAAsC,YACvD/4D,EAAAA,EAAAA,QAAOmpF,IAAAA,UAAwB,gBAAgB,SAAUjsB,GAErD,IAAM7Q,EAAO9sD,KAAK0qB,MAAMoiC,KAGlBA,EAAK8R,cAAepF,IAAAA,MAAAA,UAAoB,wBAA0BmE,EAAMjoC,IAAI,WAC9EioC,EAAM94D,OAAO,UAGb20D,IAAAA,MAAAA,UAAoB,0BAA4BmE,EAAMjoC,IAAI,WAC1DioC,EAAM94D,OAAO,UAGb20D,IAAAA,MAAAA,UAAoB,2BACpBmE,EAAM7kD,IAAI,qBAAsB2qD,IAAAA,UAAiB,CAC7CvD,KAAM,qBACN5d,QAAS,WACLkX,IAAAA,MAAAA,KAAe8gI,EAAa,CACxBxtI,KAAAA,MAGT0M,IAAAA,WAAAA,MAAqB,6EAIhCmxC,EAAAA,EAAAA,UAAS/gB,IAAAA,UAAwB,eAAe,SAA8B1hD,EAAej1B,GACzF,IAAKumD,IAAAA,MAAAA,UAAoB,0BACrB,OAAOtxB,EAASj1B,GAIpB,IAAM65C,EAAO9sD,KAAK0qB,MAAMoiC,KAGxB,OACI0M,IAAAA,MAAAA,UAAoB,0BAClB1M,EAAK8R,cAAepF,IAAAA,MAAAA,UAAoB,2BAF9C,GAIIvmD,EAAMvN,iBACNuN,EAAMtN,uBAEN6zD,IAAAA,MAAAA,KAAe8gI,EAAa,CACxBxtI,KAAAA,Y;;;;;;;MCjDhB,IAAI0L,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,qDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oC,aCQnCgnF,EAAS,SAAAxkE,GAAA,SAAAwkE,IAAA,OAAAxkE,EAAAxiH,MAAA,KAAAC,YAAA,KAAAmmD,EAAA4gI,EAAAxkE,GAAA,IAAA7J,EAAAquE,EAAA96L,UAkBzB,OAlByBysH,EAC1BtgG,UAAA,WACI,MAAO,uCACX,EAACsgG,EAEDjjH,MAAA,WACI,OAAOqwD,IAAAA,WAAAA,MAAqB,sDAChC,EAAC4yD,EAEDh2F,QAAA,WACI,MAAO,CACHphB,EAAE,mBAAoBkrD,IAAK,yBAC3BlrD,EAAE,cAAe,CACbA,EAAE,KAAMwkD,IAAAA,WAAAA,MAAqB,sDAAuD,CAChFkhI,gBAAiB16L,KAAK0qB,MAAMgwK,qBAI5C,EAACD,CAAA,CAlByB,CAAS5xH,KCRvC,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,gB,aCEnCknF,EAAK,SAAAlrE,GAAA,SAAAkrE,IAAA,QAAA1zF,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GACkB,OADlB2rE,EAAAwoB,EAAA1vH,KAAA0T,MAAAg8G,EAAA,OAAAtvH,OAAAmZ,KAAA,MACtBuwD,MAAQ6R,IAAAA,UAAwB,SAAQurB,CAAA,QADlBptC,EAAA8gI,EAAAlrE,GACkBkrE,CAAA,CADlB,CAASj/G,KCY7Bk/G,EAAe,2IASAC,EAAc,SAAA5kE,GAAA,SAAA4kE,IAAA,QAAA5zF,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAYL,OAZK2rE,EAAAgvB,EAAAl2H,KAAA0T,MAAAwiH,EAAA,OAAA91H,OAAAmZ,KAAA,MAC/BwhL,SAAmB,EAAK7zF,EACxB+tE,WAA0B,GAAE/tE,EAC5B1oB,QAAkB,GAAE0oB,EACpB8zF,YAAsB,GAAE9zF,EACxB+zF,QAAkB,EAAK/zF,EACvB2mB,YAAsB,EAAC3mB,EACvBrlB,UAAiC,IAAInC,KAAqBwnB,EAC1DngG,OAAiB,GAAEmgG,EACnB3kB,SAAmB,EAAK2kB,EACxBg0F,gBAA0B,EAAKh0F,EAC/Bi0F,cAAuB,GAAEj0F,EACzBplB,eAAyB,EAAColB,CAAA,CAZKptC,EAAAghI,EAAA5kE,GAYL,IAAA7J,EAAAyuE,EAAAl7L,UAqTzB,OArTyBysH,EAE1B7pE,OAAA,SAAOH,GAAc,IAAAoqE,EAAA,KASjB,GARAyJ,EAAAt2H,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKg1K,WAAa,GAEdh1K,KAAK0qB,MAAMoiC,MACX9sD,KAAKg1K,WAAW9/J,KAAKlV,KAAK0qB,MAAMoiC,MAGhC9sD,KAAK0qB,MAAMywK,OAAQ,CACnB,IAAMC,EAAe5hI,IAAAA,MAAAA,QAAyB,SAAUsuB,IAAAA,WAExD9nF,KAAKg1K,WAAW9/J,KAAKkmL,EACzB,CAEAp7L,KAAK4hF,UACA/nD,MAAK,SAAA5mB,GAGF,MAAqB,QAAdA,EAAMnG,OAAmB0/G,EAAK1lH,MACzC,IACC84E,MAAK,WACE4sC,EAAKoB,YAAc,IACnBpB,EAAKoB,cACL54G,EAAEwqC,SAEV,IACCsgC,QAAO,WACA0sC,EAAKoB,YAAcpB,EAAK0uE,cAAcz2L,OAAS,IAC/C+nH,EAAKoB,cACL54G,EAAEwqC,SAEV,IACCwgC,UAAS,WACNwsC,EAAKvpC,aAAaupC,EAAK0uE,cAAc1uE,EAAKoB,aAC9C,IACCrtC,UAAS,WACNisC,EAAKwoD,WAAWp/J,KACpB,GACR,EAACw2G,EAEDtgG,UAAA,WACI,MAAO,mCACX,EAACsgG,EAEDjjH,MAAA,WACI,OAAOqwD,IAAAA,WAAAA,MAAqB,sDAChC,EAAC4yD,EAEDnjD,QAAA,WAEIjpE,KAAKK,EAAE,QAAQQ,KAAK,qBAAqB4iB,QAAQ9X,QAAQka,QAC7D,EAACumG,EAEDiC,eAAA,SAAeF,GACX,OAAQA,EAAUxsH,KAAKqD,MACnB,IAAK,QACD,OAAOgQ,EAAE,kBAAmBwmC,IAAS2yE,IACzC,IAAK,SACD,IAAM1vC,EAAQ0vC,EACd,OAAOn5G,EAAE,kBAAmBypE,EAAMpnE,QAAU,CACxCyU,UAAW,UACX/Y,MAAO,CACHi/C,gBAAiBysB,EAAMpnE,UAE3B,CAAC,EAAG,CACJonE,EAAMve,OAAS,CACXA,IAAKue,EAAMve,QACX,KACA,KACJue,EAAMsJ,eAEd,IAAK,iCACD,OAAO/yE,EAAE,kBAAoBm5G,EAAoBtkD,SAGzD,MAAO,WACX,EAACuiD,EAEDgC,iBAAA,SAAiBD,GACb,OAAQA,EAAUxsH,KAAKqD,MACnB,IAAK,QACD,OAAOw0D,IAAAA,WAAAA,MAAqB,sDAChC,IAAK,SACD,OAAOA,IAAAA,WAAAA,MAAqB,uDAChC,IAAK,iCACD,OAAOA,IAAAA,WAAAA,MAAqB,uDAGpC,MAAO,WACX,EAAC4yD,EAEDnpC,aAAA,SAAax0D,GACJA,IAILzuB,KAAKg1K,WAAW9/J,KAAKuZ,GACrBzuB,KAAK8G,OAAS,GACd9G,KAAKk7L,cAAgB,GACzB,EAAC9uE,EAEDh2F,QAAA,WAAU,IAAAq4F,EAAA,KACN,OAAOz5G,EAAE,cAAeA,EAAE,YAAa,CACnCkwD,SAAUllE,KAAKklE,SAASx1B,KAAK1vC,OAC9B,CACCgV,EAAE,cAAe,CACbA,EAAE,QAASwkD,IAAAA,WAAAA,MAAqB,8DAChCxkD,EAAE,+BAAgC,CAC9B8W,UAAW9rB,KAAKsiF,QAAU,QAAU,IACrC,CACCttE,EAAE,gCAAiChV,KAAKg1K,WAAWptK,KAAI,SAACumH,EAAWtoH,GAAK,OAAKmP,EAAE,iCAAkC,CAC7GstC,QAAS,WACLmsE,EAAKumD,WAAWjxJ,OAAOle,EAAO,EAClC,EACAsD,MAAOslH,EAAKL,iBAAiBD,IAC9BM,EAAKJ,eAAeF,GAAW,KAClCn5G,EAAE,oBAAqB,CACnB4vD,YAAapL,IAAAA,WAAAA,MAAqB,mEAClCzyD,MAAO/G,KAAK8G,OACZmyD,QAAS,SAAChmD,GACNw7G,EAAK3nH,OAAUmM,EAAMtS,OAA4BoG,MACjD0nH,EAAKH,kBACT,EACA/gC,UAAWvtF,KAAK4hF,UAAUhB,SAASlxC,KAAK1vC,KAAK4hF,WAC7CY,QAAS,WACLisC,EAAKnsC,SAAU,CACnB,EACAG,OAAQ,WACJgsC,EAAKnsC,SAAU,CACnB,EACAt5D,SAAUhpB,KAAK86L,UAEnB96L,KAAKi7L,eAAiBv4H,IAAAA,UAA2B,CAC7C7sD,KAAM,UACL,KACL7V,KAAKk7L,cAAcz2L,OAASuQ,EAAE,mBAAoBhV,KAAKk7L,cAActzL,KACjE,SAAC6mB,EAAQ5oB,GAAK,OAAKmP,EAAE,KAAM,CACvB8W,UAAW2iG,EAAKb,cAAgB/nH,EAAQ,SAAW,GACnDy8C,QAAS,WACLmsE,EAAKxrC,aAAax0D,EACtB,GACDzZ,EAAE,sBAAuB,CACxBA,EAAE,wBAAyBy5G,EAAKL,iBAAiB3/F,IACjDggG,EAAKJ,eAAe5/F,KACrB,KACF,SAGbzZ,EAAE,cAAe,CACbA,EAAE,QAASwkD,IAAAA,WAAAA,MAAqB,2DAChCxkD,EAAE,gDAAiD,CAC/CjO,MAAO/G,KAAKu+E,QACZtlB,QAAS,SAAChmD,GACNw7G,EAAKlwC,QAAWtrE,EAAMtS,OAA4BoG,KACtD,EACA69D,YAAapL,IAAAA,WAAAA,MAAqB,4DAClCxwC,SAAUhpB,KAAK86L,YAGvB9lL,EAAE,cAAe,CACbA,EAAE,QAASwkD,IAAAA,WAAAA,MAAqB,2DAChCxkD,EAAE,uBAAwB,CACtBirG,KAAM,GACNl5G,MAAO/G,KAAK+6L,YACZ9hI,QAAS,SAAChmD,GACNw7G,EAAKssE,YAAe9nL,EAAMtS,OAA4BoG,KAC1D,EACAiiB,SAAUhpB,KAAK86L,YAGvB9lL,EAAE,cAAe,CACbm8E,IAAAA,UAAiB,CACb94D,MAAOr4B,KAAKg7L,OACZjiI,SAAU,SAAChyD,GACP0nH,EAAKusE,OAASj0L,CAClB,EACAiiB,SAAUhpB,KAAK86L,SAChBthI,IAAAA,WAAAA,MAAqB,6DAE5BxkD,EAAE,cAAe,CACbyuD,IAAAA,UAAiB,CACbz+D,KAAM,SACN8mB,UAAW,+CACX4yC,QAAS1+D,KAAK86L,QACd9xK,SAAqC,IAA3BhpB,KAAKg1K,WAAWvwK,QAAqC,KAArBzE,KAAK+6L,aAChDvhI,IAAAA,WAAAA,MAAqB,+DAGpC,EAAC4yD,EAEDkC,iBAAA,WAAmB,IAAAI,EAAA,KACf1uH,KAAK4tH,YAAc,EAEnB,IAAMtqE,EAAQtjD,KAAK8G,OAAON,cAE1BxG,KAAKq7L,mBAAmB/3I,GAExBn2C,aAAanN,KAAK6hF,eACdv+B,EAAM7+C,QAAU,IAChBzE,KAAK6hF,cAAgB/+E,YAAW,WAC5B4rH,EAAKusE,gBAAiB,EACtBjmL,EAAEwqC,SAEFga,IAAAA,MAAAA,KAAe,QAAS,CACpB1yD,OAAQ,CAACkqD,EAAG1N,GACZw2B,KAAM,CAACsH,MAAO,KACfnqD,MAAK,WACJy3F,EAAKusE,gBAAiB,EACtBvsE,EAAK2sE,mBAAmB/3I,GACxBtuC,EAAEwqC,QACN,GACJ,GAAG,KAEX,EAAC4sE,EAEDivE,mBAAA,SAAmB/3I,GAAe,IAAAy6E,EAAA,KAC9B,GAAKz6E,EAAL,CAKA,IAAMz+B,EAAuB,GAEzB20C,IAAAA,MAAAA,6BACAA,IAAAA,MAAAA,IAAqB,UAAU7iD,SAAQ,SAAA8nE,GAE/BA,EAAM90D,OAASm+D,IAAAA,YAIwC,IAAvDrJ,EAAMoJ,eAAerhF,cAAc0a,QAAQoiC,KAAsE,IAArDm7B,EAAMsJ,aAAavhF,cAAc0a,QAAQoiC,IACrGz+B,EAAQ3P,KAAKupE,GAErB,IAGJjlB,IAAAA,MAAAA,IAAoB,SAAS7iD,SAAQ,SAAAm2C,IACqB,IAAlDA,EAAKtR,WAAWh1C,cAAc0a,QAAQoiC,IACtCz+B,EAAQ3P,KAAK43C,EAErB,IAEI8tI,EAAar2L,KAAKvE,KAAK8G,SACvB+d,EAAQ3P,KAAKskD,IAAAA,MAAAA,aAAuB,iCAAkC,CAClEtxD,WAAY,CACR2hE,MAAO7pE,KAAK8G,WAKxB9G,KAAKk7L,cAAgBr2K,EAAQ/d,QAAO,SAAA2nB,GAChC,OAAIA,aAAkBksK,GACV58D,EAAKi3C,WAAW1zH,MACpB,SAAA6sE,GAAS,OAAKA,aAAqBwsE,GAAUxsE,EAAUtkD,UAAYp7C,EAAOo7C,OAAO,KAIjFk0D,EAAKi3C,WAAW1zH,MACpB,SAAA6sE,GAAS,OAAIA,EAAUxsH,KAAKqD,OAASypB,EAAO9sB,KAAKqD,MAAQmpH,EAAUxkG,OAAS8E,EAAO9E,IAAI,GAE/F,IAEA3U,EAAEwqC,QA3CF,MAFIx/C,KAAKk7L,cAAgB,EA8C7B,EAAC9uE,EAEDlnD,SAAA,SAASjyD,GAAoB,IAAAisH,EAAA,KACzBjsH,EAAMvN,iBAEN1F,KAAK86L,SAAU,EAEfthI,IAAAA,QAAiB,CACb1iC,OAAQ,OACR+f,IAAK2iB,IAAAA,MAAAA,UAAoB,UAAY,cACrCr2D,KAAM,CACFxB,KAAM,CACFqzK,WAAYh1K,KAAKg1K,WAAWptK,KAAI,SAAAumH,GAC5B,OAAIA,aAAqBwsE,EACd,CACH31L,KAAMmpH,EAAUxsH,KAAKqD,KACrBkD,WAAY,CACR2hE,MAAOskD,EAAUtkD,UAKtB,CACH7kE,KAAMmpH,EAAUxsH,KAAKqD,KACrB2kB,GAAIwkG,EAAUxkG,KAEtB,IACA40D,QAASv+E,KAAKu+E,QACdhuE,KAAMvQ,KAAK+6L,YACXC,OAAQh7L,KAAKg7L,WAGtB/jK,MACC,SAAA6iB,GACI0f,IAAAA,MAAAA,KAAeihI,EAAW,CACtBC,gBAAiB5gJ,EAAS4gJ,iBAElC,IACA,SAAA5gJ,GACIolF,EAAK47D,SAAU,EACf57D,EAAKvjF,QAAQ7B,EACjB,GAER,EAAC+gJ,CAAA,CAjU8B,CAAShyH,KCvB5C,MAAM,EAA+B0uC,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCIxD,UACI,IAAIgF,IAAAA,QACC3/F,IAAI,iCAAkC6hL,GAC3C,IAAIliF,IAAAA,OAAa5N,KACZznC,UAAU,6BACVA,UAAU,qCCJnB5J,IAAAA,aAAAA,IAAqB,2BAA2B,YCEjC,YACX/4D,EAAAA,EAAAA,QAAOoqF,IAAc,sBAAsB,SAACltB,EAAO7Q,GAC3C0M,IAAAA,MAAAA,oCACAmE,EAAM7kD,IAAI,0BAA2B2qD,IAAAA,UAAiB,CAClDvD,KAAM,kBACN5d,QAAO,WACHkX,IAAAA,MAAAA,KAAeqhI,EAAgB,CAC3B/tI,KAAAA,GAER,GACD0M,IAAAA,WAAAA,MAAqB,wDAEhC,KAEA/4D,EAAAA,EAAAA,QAAO66E,IAAAA,UAA2B,SAAS,SAAA3d,GACnCnE,IAAAA,MAAAA,6BACAmE,EAAM7kD,IAAI,0BAA2B2qD,IAAAA,UAAiB,CAClDvD,KAAM,kBACN5d,QAAO,WACHkX,IAAAA,MAAAA,KAAeqhI,EAAgB,CAC3BM,QAAQ,GAEhB,GACD3hI,IAAAA,WAAAA,MAAqB,iDAEhC,IAEA,IAAM8hI,EAAgB/jF,OAAOjK,WAAW,sBACpCguF,GAAiBA,EAAc3sE,oBAC/BluH,EAAAA,EAAAA,QAAO66L,EAAc3sE,kBAAkBhvH,UAAW,eAAe,SAAAg+D,GACzDnE,IAAAA,MAAAA,6BACAmE,EAAM7kD,IAAI,0BAA2B2qD,IAAAA,UAAiB,CAClD33C,UAAW,SACXo0C,KAAM,kBACN5d,QAAO,WACHkX,IAAAA,MAAAA,KAAeqhI,EAAgB,CAC3BM,QAAQ,GAEhB,GACD3hI,IAAAA,WAAAA,MAAqB,iDAAkD,GAElF,GAER,CD5CI+hI,EACJ,G;;;;;;;MENA,IAAI/iI,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,GCLRomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,MCJ3E0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,M,+BCLvD,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCKxDj6C,IAAAA,aAAAA,IAAqB,kCAAkC,YACnD/4D,EAAAA,EAAAA,QAAOyoF,IAAAA,UAAoB,aAAa,SAAUvrB,GAC9C,IAAMgsD,EAAQ3pH,KAAK0qB,MAAMoiC,KAAKsW,UAAU,iBAEpC5mD,OAAOg/K,UAAU7xE,IACjBhsD,EAAM7kD,IAAI,gBAAiB9D,EAAE,8BAA+B,CACxDkrD,GAAAA,CAAK,oBACL,IACA1G,IAAAA,WAAAA,MAAqB,uDAAwD,CACzEmwD,MAAAA,c;;;;;;;2BCblB,IAAII,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,G,gBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,c,eCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,iC,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,kB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,6B,+FCO9BojD,EAAoB,sCAEtB4kC,GAAqB,EA0BzBjiI,IAAI4yC,aAAatzF,IAAI,gCAAgC,WACjD8tD,IAAWjnE,UAAU+7L,2BAA6B,SAAUzoL,GAExD,GAAKjT,KAAK27L,cAAiB37L,KAAK27L,aAAav3K,QAA7C,CAIA,IAAMtjB,EAAUT,EAAE4S,EAAMtS,QAGpBG,EAAQiC,GAAG,kBAAoBjC,EAAQg1B,QAAQ,iBAAiBrxB,QAAU3D,EAAQg1B,QAAQ,wBAAwBrxB,QAItHzE,KAAK27L,aAAaC,eAGtBh1H,IAAWjnE,UAAUk8L,sBAAwB,WAAY,WACrD,GAAI77L,KAAK27L,aACL,OAAOh8I,QAAQhpB,UAGnB,IAAMu+C,EAAa70E,EAAE,qDAGrB,OAFAL,KAAKK,EAAE,wBAAwBunC,OAAOstC,GAE/B,IAAIv1B,SAAQ,SAAAhpB,GACf,IAAMhtB,EAAOtJ,EAAE,WAAWs7L,aAAa,CACnCn1D,YAAY,EACZ/kF,OAAQ+X,IAAI2J,MAAMC,UAAU,4BAC5B04H,kBAAmBtiI,IAAIiH,WAAWC,MAAMm2F,EAAoB,sBAC5DklC,YAAaviI,IAAIiH,WAAWC,MAAMm2F,EAAoB,iBACtDmlC,aAAcxiI,IAAI2J,MAAMC,UAAU,4BAClC64H,gBAAiBziI,IAAI2J,MAAMC,UAAU,qCAAuC,SAAW,MACvF84H,eAAgB1iI,IAAI2J,MAAMC,UAAU,oCAAsC,SAAW,MACrF95D,UAAW4rE,EACXinH,MAAO3iI,IAAI2J,MAAMC,UAAU,2BAC3BqH,cAAc,EACd2xH,QAAQ,EACRz6J,OAAQ,CACJ06J,eAAgB,WAEZ,EAAK3xK,MAAMq8C,SAASC,OAAO1B,eAAe,EAAKq2H,aAAal2K,YAEhE0P,MAAOwB,KAIf,EAAKglK,aAAehyL,EAAKhI,KAAK,oBAItClB,iBAAOmmE,IAAWjnE,UAAW,YAAY,WACrCK,KAAK27L,aAAe,KACpB37L,KAAKs8L,qBAAsB,EAE3B17L,SAASgrB,iBAAiB,QAAS5rB,KAAK07L,2BAA2BhsJ,KAAK1vC,UAG5ES,iBAAOmmE,IAAWjnE,UAAW,YAAY,WACrCiB,SAASg6B,oBAAoB,QAAS56B,KAAK07L,+BAG/Cj7L,iBAAOmmE,IAAWjnE,UAAW,gBAAgB,SAAUg+D,GAAO,WAE1DA,EAAM7kD,IAAI,+BAAgC2qD,IAAO/jB,UAAU,CACvD4C,QAAS,WAED,EAAKg6I,sBAIL,EAAKX,cAAgB,EAAKA,aAAav4J,OAAOrgC,GAAG,WACjD,EAAK44L,aAAaC,cAElB,EAAKU,qBAAsB,GAjGvCb,EACO97I,QAAQhpB,WAGnB8kK,GAAqB,EAEd,IAAI97I,SAAQ,SAAAhpB,GACf,IAAM5jB,EAAQnS,SAAS0E,cAAc,QACrCyN,EAAMimJ,IAAM,aACZjmJ,EAAMw4F,YAAc,YACpBx4F,EAAMwpL,UAAY,sDAClBxpL,EAAMqd,KAAO,4EACbxvB,SAASiiB,KAAK9O,YAAYhB,GAE1B,IAAM2P,EAAS9hB,SAAS0E,cAAc,UACtCod,EAAO6oF,YAAc,YACrB7oF,EAAO65K,UAAY,sDACnB75K,EAAON,IAAM,2EACbM,EAAOg5B,OAAS/kB,EAChB/1B,SAASuC,KAAK4Q,YAAY2O,QAgFKuU,MAAK,WACpB,EAAK4kK,wBAAwB5kK,MAAK,WAC9B,IAAM30B,EAAW,EAAKjC,EAAE,wBAAwBiC,WAChD,EAAKjC,EAAE,wBAAwBgD,IAAI,OAAQf,EAAS0L,KAAO,KAC3D,EAAK2tL,aAAaa,aAGlBn8L,EAAE,8BAA8BsL,QAEhC,EAAK2wL,qBAAsB,EAC3BtnL,EAAEwqC,kBAKlB1zB,UAAW,uDACXo0C,KAAMlgE,KAAKs8L,oBAAsB,0BAA4B,oBAC7DnzL,MAAOqwD,IAAIiH,WAAWC,MAAMm2F,EAAoB,0BAK5Dr9F,IAAI4yC,aAAatzF,IAAI,sCAAsC,WACvDrY,iBAAOmmE,IAAWjnE,UAAW,gBAAgB,SAAUg+D,GAC/CnE,IAAI2J,MAAMC,UAAU,iCAAmCzF,EAAMjoC,IAAI,UACjEioC,EAAM94D,OAAO,eAGrB;;;;;;;MC1IJ,IAAI2zD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,uDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,sC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uB,aCcnCgpF,EAAU,SAAAhxE,GAAA,SAAAgxE,IAAA,OAAAhxE,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA4iI,EAAAhxE,GAAA,IAAAW,EAAAqwE,EAAA98L,UAuB5B,OAvB4BysH,EAC7BznF,KAAA,WACE,OACE3vB,EAAA,OAAK69G,MAAO70D,IAAU,aAAc,CAAE,wCAAyCxE,IAAAA,MAAAA,UAAoB,+BAChGx5D,KAAKo2B,UAAUnT,UAGtB,EAACmpG,EAEDh2F,QAAA,WACE,IAAMunC,EAAQ,IAAIlB,KAYlB,OAVAkB,EAAM7kD,IAAI,QAAS9D,EAAA,OAAK69G,MAAM,oBAAoB7yH,KAAK0qB,MAAMjU,OAAc,KAC3EknD,EAAM7kD,IACJ,QACA9D,EAAA,OAAK69G,MAAM,oBACT79G,EAAA,QAAM8W,UAAU,2BAA2Bo0C,IAAKlgE,KAAK0qB,MAAMw1C,OAC3DlrD,EAAA,QAAM8W,UAAU,2BAA2B9rB,KAAK0qB,MAAMo2C,QAExD,IAGKnD,CACT,EAAC8+H,CAAA,CAvB4B,CAASphI,KCdxC,MAAM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,2B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,uBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,6B,aCiBnCipF,EAAoB,SAAAjxE,GAAA,SAAAixE,IAAA,QAAAz1F,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAI5B,OAJ4B2rE,EAAAwkB,EAAA1rH,KAAA0T,MAAAg4G,EAAA,OAAAtrH,OAAAmZ,KAAA,MAIvC6xE,iBAAW,EAAA8b,CAAA,CAJ4BptC,EAAA6iI,EAAAjxE,GAI5B,IAAAW,EAAAswE,EAAA/8L,UA8GV,OA9GUysH,EAEX7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKmrF,aAAc,CACrB,EAACihC,EAEDznF,KAAA,WAAO,IAAAg4J,EACCz+H,EAAal+D,KAAK0qB,MAAMwzC,WAE9B,OAAKA,GAIQA,EAAWyf,iBAGtB3oE,EAACqtC,IAAI,CAACwwE,MAAM,iBAAiBziG,KAAMopC,IAAAA,MAAAA,WAAqB0E,EAAuC,OAA7By+H,EAAEz+H,EAAWmR,kBAAgBstH,EAAI,IAChG38L,KAAKo2B,UAAUnT,YAPXjO,EAAA,OAAK69G,MAAM,kBAAkBr5D,IAAAA,WAAAA,MAAqB,qEAU7D,EAAC4yD,EAEDh2F,QAAA,WACE,IAAMunC,EAAQ,IAAIlB,KAEZyB,EAAal+D,KAAK0qB,MAAMwzC,WACxBpR,EAAOoR,EAAWyf,iBAExBhgB,EAAM7kD,IACJ,SACA9D,EAACqtC,IAAI,CAACv2B,UAAU,wBAAwBsE,KAAM08B,EAAO0M,IAAAA,MAAAA,KAAe1M,GAAQ,IAAK,aAAYuT,IAAY7kB,IAASsR,OAC7GA,GAAQ2R,IAAO3R,IAEpB,KAGF6Q,EAAM7kD,IACJ,cACA9D,EAAA,OAAK69G,MAAM,0BACT79G,EAAA,OAAK69G,MAAM,4BACRzyD,IAAUlC,EAAWwf,gBAAkB,IACxC1oE,EAACqtC,IAAI,CAACv2B,UAAU,8BAA8BsE,KAAM08B,EAAO0M,IAAAA,MAAAA,KAAe1M,GAAQ,KAChF93C,EAAA,QAAMjC,MAAO,CAAE9E,QAAS,SAAU6+B,OAAQ,SAAWg2B,KAAK,gBAAe,KAGxEtnB,IAASsR,KAGd93C,EAAA,OAAK69G,MAAM,0BAAyBr+F,EAAAA,EAAAA,UAAS0pC,EAAW/0D,QAAS,MAEnE,IAGF,IAAIyzL,EAAyB,KAY7B,OAVI9vI,GAAQ9sD,KAAKmrF,cACfyxG,EAAO1zG,IAAAA,UAAmB,CACxBp8B,KAAAA,EACAhhC,UAAW,oBACXs9D,wBAAyB,sCAI7BzrB,EAAM7kD,IAAI,OAAQ9D,EAAA,OAAK69G,MAAM,oCAAoC+pE,GAAa,IAEvEj/H,CACT,EAACyuD,EAEDjqE,SAAA,SAASC,GAAO,IAGVz5C,EAHU6jH,EAAA,KACdf,EAAA9rH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,GAIfpiD,KAAKK,IACFU,GAAG,YAAa,sFAAsF,WACrGoM,aAAaxE,GACbA,EAAU5G,OAAOe,WAAW0pH,EAAKphC,SAAS17C,KAAK88E,GAAO,IACxD,IACCzrH,GAAG,WAAY,sFAAsF,WACpGoM,aAAaxE,GACbA,EAAU5G,OAAOe,WAAW0pH,EAAKnhC,SAAS37C,KAAK88E,GAAO,IACxD,GACJ,EAACJ,EAEDprE,SAAA,SAASoB,GACPqpE,EAAA9rH,UAAMqhD,SAAQjhD,KAAC,KAAAqiD,GAEfpiD,KAAKK,IAAI6R,IAAI,qBACf,EAEAk6G,EAGAhhC,SAAA,WAAW,IAAAqjC,EAAA,KACTzuH,KAAKmrF,aAAc,EAEnBn2E,EAAEwqC,SAEF18C,YAAW,kBAAM2rH,EAAKpuH,EAAE,aAAawC,SAAS,KAAK,GACrD,EAEAupH,EAGA/gC,SAAA,WACEhrF,EAAE,aAAauC,YAAY,MAC3B5C,KAAKmrF,aAAc,EACnBn2E,EAAEwqC,QACJ,EAACk9I,CAAA,CAlHsC,CAASrhI,KCc7BwhI,EAAQ,SAAApxE,GAAA,SAAAoxE,IAAA,QAAA51F,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAKlB,OALkB2rE,EAAAwkB,EAAA1rH,KAAA0T,MAAAg4G,EAAA,OAAAtrH,OAAAmZ,KAAA,MAC3B8S,SAAG,EAAA66E,EACHmS,aAAO,EAAAnS,EACP61F,eAAS,EAAA71F,EACT81F,uBAAiB,EAAA91F,EACjB+1F,eAAS,EAAA/1F,CAAA,CALkBptC,EAAAgjI,EAAApxE,GAKlB,IAAAW,EAAAywE,EAAAl9L,UAwSR,OAxSQysH,EAET7pE,OAAA,SAAOH,GACLqpE,EAAA9rH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEbpiD,KAAKosB,IAAMpsB,KAAK0qB,MAAMsxD,MAEtBh8E,KAAKo5G,QAA+B,MAArBp5G,KAAK0qB,MAAMhmB,QAAuCoO,MAArB9S,KAAK0qB,MAAMhmB,OAEvD1E,KAAK88L,WAAY,EAGiB,mBAAvB98L,KAAKosB,IAAI6wK,cACbj9L,KAAKosB,IAAI8wK,qBAAsBl9L,KAAKosB,IAAI+wK,uBAA2Bn9L,KAAKosB,IAAI6wK,eAC/Ej9L,KAAKg9L,UAAY,CACf98H,KAAMlgE,KAAKosB,IAAI+wK,sBAAwBj9H,IAAK,eAAiBA,IAAK,oBAClE3vD,KAAMvQ,KAAKosB,IAAI+wK,sBAAwB3jI,IAAAA,WAAAA,MAAqB,8DAAgEA,IAAAA,WAAAA,MAAqB,2DACjJuY,UAA4D,GAAjD/xE,KAAKosB,IAAIgxK,wCAK1Br7L,OAAO6pB,iBAAiB,UAAU,WAChC5W,EAAEwqC,QACJ,GACF,EAAC4sE,EAEDznF,KAAA,WACE,IAAMvY,EAAMpsB,KAAKosB,IAEjB,OAAKA,EAEMpsB,KAAKg9L,YAAch9L,KAAKg9L,UAAUjrH,UAEpC,MAGT/xE,KAAK+8L,oBAAsBvjI,IAAAA,MAAAA,UAAoB,4BAG7CxkD,EAAA,MACE8W,UAAWkyC,IAAU,cAAe,eAAe5xC,EAAI0yC,OAAU,CAC/Du+H,YAAar9L,KAAKo5G,QAClBkkF,gBAAiBt9L,KAAKo5G,QACtBmkF,cAAev9L,KAAK+8L,qBAGrB/8L,KAAKw9L,gBAAgBv6K,YAhBjB,IAmBX,EAACmpG,EAEDoxE,cAAA,WAAgB,IAAAhxE,EAAA,KACR7uD,EAAQ,IAAIlB,KACZrwC,EAAMpsB,KAAKosB,IAEXkJ,EAAWt1B,KAAKo5G,QAAU,GAAKI,IAASptF,EAAIkJ,YAAc,IAsBhE,OApBAqoC,EAAM7kD,IACJ,OACA9D,EAACqtC,IAAI,CACHv2B,UAAS,wBAAyB0tC,IAAAA,MAAAA,UAAoB,4BAA6B,gBAAkB,IAAE,wBAAyBptC,EAAI0yC,OACpI/rD,MAAO/S,KAAKo5G,QAAU,CAAC,EAAI,CAAEpnD,gBAAiB5lC,EAAI/U,SAClD+Y,KAAMopC,IAAAA,MAAAA,IAAcptC,IAEnBpsB,KAAKg6G,eAAe/2F,WAEvB,KAGGjjB,KAAK+8L,mBAAsB/8L,KAAKo5G,SACnCz7C,EAAM7kD,IACJ,WACA9D,EAAA,MAAI8W,UAAU,0BAA0BwJ,EAAS1tB,KAAI,SAAC86C,GAAK,MAAK,CAACm6I,EAASn9I,UAAU,CAAEs8B,MAAOt5B,EAAOh+C,OAAQ8nH,IAAQ,KACpH,IAIG7uD,CACT,EAACyuD,EAEDpS,aAAA,WAAe,IAAAyU,EAAA,KACP9wD,EAAQ,IAAIlB,KAEZrwC,EAAMpsB,KAAKosB,IACXkJ,EAAWt1B,KAAKo5G,QAAU,GAAKI,IAASptF,EAAIkJ,YAAc,IAgBhE,OAdAqoC,EAAM7kD,IAAI,aAAc9D,EAAA,OAAK8W,UAAU,0BAA0B9rB,KAAKy9L,kBAAkBx6K,WAAkB,KAE1G06C,EAAM7kD,IAAI,WAAY9D,EAAA,OAAK8W,UAAU,wBAAwB9rB,KAAK09L,gBAAgBz6K,WAAkB,KAEzEjjB,KAAKo5G,SAAWp5G,KAAK+8L,oBAEtB/8L,KAAK88L,WAC7Bn/H,EAAM7kD,IACJ,WACA9D,EAAA,MAAI8W,UAAU,0BAA0BwJ,EAAS1tB,KAAI,SAAC86C,GAAK,MAAK,CAACm6I,EAASn9I,UAAU,CAAEs8B,MAAOt5B,EAAOh+C,OAAQ+pH,IAAQ,KACpH,IAIG9wD,CACT,EAACyuD,EAEDqxE,gBAAA,WAAkB,IAAA/uE,EAAA,KACV/wD,EAAQ,IAAIlB,KAEZrwC,EAAMpsB,KAAKosB,IACXkJ,EAAWt1B,KAAKo5G,QAAU,GAAKI,IAASptF,EAAIkJ,YAAc,IAqBhE,OAnBAqoC,EAAM7kD,IAAI,OAAQ9D,EAAA,QAAM8W,UAAU,oBAAoB9rB,KAAK29L,YAAY16K,WAAmB,KAE1F06C,EAAM7kD,IAAI,OAAQ9D,EAAA,OAAK8W,UAAU,oBAAoB9rB,KAAK49L,YAAY36K,WAAkB,IAElFqS,EAAS7wB,QACbk5D,EAAM7kD,IACJ,cACA9D,EAAA,UACE8W,UAAU,2CACVw2B,QAAS,SAAC/+C,GACRmrH,EAAKmvE,YAAYt6L,EACnB,GAEC28D,IAAKlgE,KAAK88L,UAAY,oBAAsB,oBAE/C,IAIGn/H,CACT,EAACyuD,EAEDsxE,cAAA,WACE,IAAM//H,EAAQ,IAAIlB,KAElB,GAAIz8D,KAAKg9L,UAEP,OADAr/H,EAAM7kD,IAAI,SAAU9D,EAAA,OAAK8W,UAAU,sBAAsB9rB,KAAK89L,cAAc76K,WAAkB,KACvF06C,EAGT,IAAMvxC,EAAMpsB,KAAKosB,IAUjB,OARAuxC,EAAM7kD,IAAI,QAAS9D,EAAA,OAAK8W,UAAU,oCAAoC9rB,KAAK+9L,YAAY96K,WAAkB,KAEzG06C,EAAM7kD,IACJ,iBACA9D,EAAA,OAAK8W,UAAWkyC,IAAU,6BAA8B,CAAEjmC,OAAQ3L,EAAIiuF,0BAA4Br6G,KAAKg+L,sBAAsB/6K,WAC7H,IAGK06C,CACT,EAACyuD,EAED0xE,YAAA,WACE,IAAMngI,EAAQ,IAAIlB,KACZlW,EAAUvmD,KAAK+8L,kBAAoB,iBAAmB,iBAgB5D,OAfAp/H,EAAM7kD,IACJ,OACA9D,EAAA,QAAM8W,UAAWy6B,GAEbvxC,EAAA,KAAG8W,UAAU,cAAc/Y,MAAO,CAAEsE,MAAOrX,KAAKosB,IAAI/U,WAErDrX,KAAKg9L,UAAU98H,MAElB,IAEFvC,EAAM7kD,IACJ,aACA9D,EAAA,OAAK8W,UAAWkyC,IAAU,2BAA4Bh+D,KAAKg9L,UAAUzsL,MACrE,IAEKotD,CACT,EAACyuD,EAEDuxE,UAAA,WACE,IAAMhgI,EAAQ,IAAIlB,KAElB,GAAIz8D,KAAKosB,IAAI8zC,QAAUlgE,KAAKo5G,QAAS,CACnC,IAAMrmG,EAAiC,CAAC,EAEpCkrL,EAAc,2BAEdzkI,IAAAA,MAAAA,UAAoB,6BACtBykI,GAAe,4BACflrL,EAAMsE,MAAQ,WAEdtE,EAAMsE,MAAQrX,KAAKosB,IAAI/U,QAGzB,IAAMkvC,EAAUvmD,KAAK+8L,kBAAoB,iBAAmB,iBAE5Dp/H,EAAM7kD,IACJ,OACA9D,EAAA,QAAM8W,UAAWy6B,KACZiT,IAAAA,MAAAA,UAAoB,6BACrBxkD,EAAA,KAAG8W,UAAU,2CAA2C/Y,MAAO,CAAEsE,MAAOrX,KAAKosB,IAAI/U,WAElF6oD,IAAKlgE,KAAKosB,IAAI8zC,OAAQ,CAAEp0C,UAAWmyK,EAAalrL,MAAOA,KAE1D,GAEJ,MAAO,GAAI/S,KAAKosB,IAAI8zC,SAAW1G,IAAAA,MAAAA,UAAoB,+BAAgC,CACjF,IAAMjT,EAAUvmD,KAAK+8L,kBAAoB,iBAAmB,iBAE5Dp/H,EAAM7kD,IAAI,OAAQ9D,EAAA,QAAM8W,UAAWy6B,GAAU2Z,IAAKlgE,KAAKosB,IAAI8zC,OAAQ,CAAEp0C,UAAW,8BAAuC,GACzH,CAEA,OAAO6xC,CACT,EAACyuD,EAEDwxE,UAAA,WACE,IAAMjgI,EAAQ,IAAIlB,KAQlB,OANAkB,EAAM7kD,IAAI,OAAQ9D,EAAA,MAAI8W,UAAU,oBAAoB9rB,KAAKosB,IAAIvZ,QAAc,KAEvE7S,KAAKosB,IAAIuoD,gBAAkB30E,KAAKo5G,SAAY5/C,IAAAA,MAAAA,UAAoB,uCAClEmE,EAAM7kD,IAAI,cAAe9D,EAAA,OAAK8W,UAAU,2BAA2B9rB,KAAKosB,IAAIuoD,eAAsB,IAG7FhX,CACT,EAACyuD,EAED2xE,UAAA,WACE,IAAMpgI,EAAQ,IAAIlB,KAwBlB,OAtBIz8D,KAAKo5G,SAAY5/C,IAAAA,MAAAA,UAAoB,kCACvCmE,EAAM7kD,IACJ,kBACA2jL,EAAW/8I,UAAU,CACnBjpC,MAAOm/D,KAAKC,eAAen5D,OAAO1c,KAAKosB,IAAIs9D,mBAC3C5oB,MAAOtH,IAAAA,WAAAA,MAAqB,6DAC5B0G,KAAM,oBAER,IAGFvC,EAAM7kD,IACJ,YACA2jL,EAAW/8I,UAAU,CACnBjpC,MAAOm/D,KAAKC,eAAen5D,OAAO1c,KAAKosB,IAAI8xK,aAC3Cp9H,MAAOtH,IAAAA,WAAAA,MAAqB,uDAC5B0G,KAAM,mBAER,KAIGvC,CACT,EAACyuD,EAED4xE,oBAAA,WACE,IAAMrgI,EAAQ,IAAIlB,KAYlB,OAVIz8D,KAAKo5G,SAAY5/C,IAAAA,MAAAA,UAAoB,0CACvCmE,EAAM7kD,IACJ,iBACA4jL,EAAqBh9I,UAAU,CAC7Bwe,WAAYl+D,KAAKosB,IAAIiuF,yBAEvB,IAIG18C,CACT,EAACyuD,EAEDjqE,SAAA,SAASC,GACPqpE,EAAA9rH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,GAEfpiD,KAAKK,EAAE,iDAAiDU,GAAG,cAAc,SAAUwC,GACjFlD,EAAEL,MAAM6C,SAAS,UACbxC,EAAEL,MAAM0E,SAASK,SAAS,gBAAkB1E,EAAEL,MAAM+E,SAAS,6BAC/D1E,EAAEL,MAAMqF,QAAQ,mBAAmBiwB,SAAS,wBAAwB1yB,YAAY,QAEpF,IAEA5C,KAAKK,EAAE,iDAAiDU,GAAG,cAAc,SAAUwC,GACjFlD,EAAEL,MAAM4C,YAAY,UAChBvC,EAAEL,MAAM0E,SAASK,SAAS,gBAAkB1E,EAAEL,MAAM+E,SAAS,6BAC/D1E,EAAEL,MAAMqF,QAAQ,mBAAmBiwB,SAAS,wBAAwBzyB,SAAS,QAEjF,GACF,EAACupH,EAEDprE,SAAA,SAASoB,GACPqpE,EAAA9rH,UAAMqhD,SAAQjhD,KAAC,KAAAqiD,GAEfpiD,KAAKK,EAAE,iDAAiD6R,IAAI,cAC5DlS,KAAKK,EAAE,iDAAiD6R,IAAI,aAC9D,EAACk6G,EAEDyxE,YAAA,SAAYt6L,GACVA,EAAEmC,iBACFnC,EAAEoC,kBACF3F,KAAK88L,WAAa98L,KAAK88L,UACvB9nL,EAAEwqC,QACJ,EAACq9I,CAAA,CA7S0B,CAASxhI,KCjBjB8iI,EAAc,SAAAvvE,GAAA,SAAAuvE,IAAA,QAAAl3F,EAAAyoB,EAAAh8G,UAAAjP,OAAA6U,EAAA,IAAA5Z,MAAAgwH,GAAAp0F,EAAA,EAAAA,EAAAo0F,EAAAp0F,IAAAhiB,EAAAgiB,GAAA5nB,UAAA4nB,GAE1B,OAF0B2rE,EAAA2nB,EAAA7uH,KAAA0T,MAAAm7G,EAAA,OAAAzuH,OAAAmZ,KAAA,MACjC+/F,UAAI,EAAApS,EACJvoC,aAAO,EAAAuoC,CAAA,CAF0BptC,EAAAskI,EAAAvvE,GAE1B,IAAAxC,EAAA+xE,EAAAx+L,UAwFN,OAxFMysH,EAEP7pE,OAAA,SAAOH,GAAO,IAAAoqE,EAAA,KACZoC,EAAAjvH,UAAM4iD,OAAMxiD,KAAC,KAAAqiD,GAEboX,IAAAA,QAAAA,KAAiB,aAAc6G,IAAY7G,IAAAA,WAAAA,MAAqB,iEAEhEx5D,KAAKq5G,KAAO,GAEZ,IAAMS,EAAYtgD,IAAAA,uBAEdsgD,EACF95G,KAAKq5G,KAAOG,IAASM,EAAUhzG,QAAO,SAACslB,GAAQ,OAAMA,EAAIgtF,SAAS,MAIpEp5G,KAAK0+D,SAAU,EAEflF,IAAAA,QAAAA,KAAiB,CAAC,SAAU,WAAY,uBAAwB,wCAAwCviC,MAAK,WAC3Gu1F,EAAKnT,KAAOG,IAAShgD,IAAAA,MAAAA,IAAc,QAAQ1yD,QAAO,SAACslB,GAAG,OAAMA,EAAIgtF,SAAS,KAEzEoT,EAAK9tD,SAAU,EAEf1pD,EAAEwqC,QACJ,IACF,EAAC4sE,EAEDznF,KAAA,WACE,OAAI3kC,KAAK0+D,QACA1pD,EAAC0tD,IAAgB,MAKnB1tD,EAAA,OAAK8W,UAAWkyC,IAFP,CAAC,oBAE2Bh+D,KAAKo+L,YAAYn7K,UAC/D,EAACmpG,EAEDgyE,UAAA,WACE,IAAMzgI,EAAQ,IAAIlB,KAYlB,OAVAkB,EAAM7kD,IAAI,OAAQ00E,IAAAA,UAAAA,OAA4B,KAE9C7vB,EAAM7kD,IACJ,YACA9D,EAAA,OAAK8W,UAAW0tC,IAAAA,MAAAA,UAAoB,8BAAgC,4BAA8B,8BAC/Fx5D,KAAKq+L,iBAAiBp7K,WAEzB,IAGK06C,CACT,EAACyuD,EAEDiyE,eAAA,WACE,IAAM1gI,EAAQ,IAAIlB,KAEZ5B,EAAS76D,KAAKq5G,KAAKvyG,QAAO,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,UAAmB,IAC1D23G,EAAQj6G,KAAKq5G,KAAKvyG,QAAO,SAACslB,GAAG,OAAwB,OAAnBA,EAAI9pB,UAAmB,IAwB/D,OAtBAq7D,EAAM7kD,IACJ,UACE9D,EAAA,OAAK8W,UAAW0tC,IAAAA,MAAAA,UAAoB,8BAAgC,0CAA4C,4CAC9GxkD,EAAA,UAAKwoD,IAAUgwB,IAAAA,UAAAA,eAAmCvqE,aAEtD,KAGF06C,EAAM7kD,IACJ,iBACA9D,EAAA,OAAK8W,UAAU,wCACb9W,EAAA,MAAI8W,UAAU,mBACX+uC,EAAOjzD,KAAI,SAACwkB,GACX,OAAOywK,EAASn9I,UAAU,CAAEs8B,MAAO5vD,GACrC,KAGD6tF,EAAMx1G,OAASuQ,EAAA,OAAK8W,UAAU,YAAYmuF,EAAMryG,KAAI,SAACwkB,GAAG,MAAK,CAACktF,IAASltF,EAAK,CAAE6xD,MAAM,IAAS,IAAI,KAAW,IAE/G,IAGKtgB,CACT,EAACyuD,EAEDjqE,SAAA,SAASC,GACPwsE,EAAAjvH,UAAMwiD,SAAQpiD,KAAC,KAAAqiD,GAEfoX,IAAAA,SAAa6G,IAAY7G,IAAAA,WAAAA,MAAqB,+DAChD,EAAC2kI,CAAA,CA1FgC,CAASxiI,KCd5C,MAAM,EAA+B47C,OAAOC,KAAK/D,OAAO,kC,aCWxD,SAAS6qF,GAAc3gI,EAAOxlC,GAC5B,IAAMomK,EAAoB/kI,IAAI2J,MAAMC,UAAU,0BAExCo7H,EAAsBhlI,IAAInf,QAAQr1B,QAAQm5K,IAAmB3kI,IAAInf,QAAQr1B,QAAQ60F,KACvF,IAAK,IAAM53F,KAAQ07C,EAAMA,MACnBxlC,EAAKlW,KACI,QAARA,EAKIs8K,GACH5gI,EAAM94D,OAAOod,GAMXu8K,GACF7gI,EAAM94D,OAAOod,GAKvB,CAEAu3C,IAAI4yC,aAAatzF,IAAI,gCAAgC,WACnD0gD,IAAIzY,OAAO0xE,WAAa,CACtBpyE,KAAM,cACNX,UAAWy+I,GAGbrgI,IAAAA,UAAAA,UAA0B4d,IAAAA,UAAgB,cAE1Cj7E,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,YAAY,SAAU7vB,GAehD,OAdAA,EAAM7kD,IACJ,aACA9D,EAACqmE,IAAU,CAACnb,KAAK,iBAAiB9vC,KAAMopC,IAAIhZ,MAAM,eAC/CgZ,IAAIiH,WAAWC,MAAM,uDAEvB,KAGC/C,EAAMjoC,IAAI,aACZioC,EAAMh6D,QAAQ,WAAYqR,EAACqmE,IAAU,CAACjrD,KAAMopC,IAAIhZ,MAAM,eAAgBgZ,IAAIiH,WAAWC,MAAM,uCAG7F49H,GAAc3gI,GAAO,SAAC17C,GAAI,OAAKA,EAAKuiF,WAAW,MAAM,IAE9C7mC,CACT,KAEAl9D,EAAAA,EAAAA,QAAO+sF,IAAAA,UAAqB,gBAAgB,SAAU7vB,GAEpD,OADA2gI,GAAc3gI,GAAO,SAAC17C,GAAI,MAAc,kBAATA,GAAqC,QAATA,CAAc,IAClE07C,CACT,GACF,IAEA,UACE,4BAA6BwgI,EAC7B,sBAAuBtB,EACvB,kCAAmCH,EACnC,wBAAyBD,E;;;;;;;2BCxEzB,IAAI1yE,EAAmB,GAGvB,SAASvxD,EAAoBC,GAG5B,GAAGsxD,EAAiBtxD,GACnB,OAAOsxD,EAAiBtxD,GAAU9gD,QAGnC,IAAID,EAASqyG,EAAiBtxD,GAAY,CACzCxxD,EAAGwxD,EACHvxD,GAAG,EACHyQ,QAAS,IAUV,OANAqyG,EAAQvxD,GAAU14D,KAAK2X,EAAOC,QAASD,EAAQA,EAAOC,QAAS6gD,GAG/D9gD,EAAOxQ,GAAI,EAGJwQ,EAAOC,QA0Df,OArDA6gD,EAAoBxjD,EAAIg1G,EAGxBxxD,EAAoB7jD,EAAIo1G,EAGxBvxD,EAAoB5jD,EAAI,SAAS+C,EAAS9E,EAAMu/B,GAC3ComB,EAAoB/mD,EAAEkG,EAAS9E,IAClC4O,OAAOya,eAAevkB,EAAS9E,EAAM,CAAE0wB,YAAY,EAAMhnB,IAAK61B,KAKhEomB,EAAoB5gD,EAAI,SAASD,GACX,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,KAQvDyxD,EAAoBtgD,EAAI,SAASnR,EAAOg4D,GAEvC,GADU,EAAPA,IAAUh4D,EAAQyxD,EAAoBzxD,IAC/B,EAAPg4D,EAAU,OAAOh4D,EACpB,GAAW,EAAPg4D,GAA8B,iBAAVh4D,GAAsBA,GAASA,EAAMqrD,WAAY,OAAOrrD,EAChF,IAAIugD,EAAK7lC,OAAOugB,OAAO,MAGvB,GAFAw2B,EAAoB5gD,EAAE0vC,GACtB7lC,OAAOya,eAAeorB,EAAI,UAAW,CAAE/jB,YAAY,EAAMx8B,MAAOA,IACtD,EAAPg4D,GAA4B,iBAATh4D,EAAmB,IAAI,IAAI+F,KAAO/F,EAAOyxD,EAAoB5jD,EAAE0yC,EAAIx6C,EAAK,SAASA,GAAO,OAAO/F,EAAM+F,IAAQ4iC,KAAK,KAAM5iC,IAC9I,OAAOw6C,GAIRkR,EAAoBvjD,EAAI,SAASyC,GAChC,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,WAAwB,OAAO16C,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,IAAKA,GAC5BA,GAIRomB,EAAoB/mD,EAAI,SAAS0lB,EAAQ+lC,GAAY,OAAOz7C,OAAO9hB,UAAU8M,eAAe1M,KAAKo3B,EAAQ+lC,IAGzG1E,EAAoB5tD,EAAI,GAIjB4tD,EAAoBA,EAAoB1tD,EAAI,I,iBClFrD4M,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,8D,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,e,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,2B,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,wB,cCApC/7F,EAAOC,QAAU4/F,OAAOC,KAAK/D,OAAO,iE,iDCArB,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,IAGcA,EAAG7G,G,2ECEP6zL,E,YCPN,IAAwB9rI,EAAUC,E,wIDQvC8rI,e,IACAvrF,U,IACAwrF,e,ICVuC/rI,E,GAAVD,E,GAC5BhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,G,2BDSzBrQ,OAAA,SAAOH,GACL,YAAMG,OAAN,UAAaH,GAEbpiD,KAAK0+L,UAAYllI,IAAI2J,MAAMC,UAAU,2BACrCpjE,KAAKmzG,KAAO/lD,IAAO,CAAEvnD,MAAO,EAAG0K,KAAMvQ,KAAK0+L,UAAU,KACpD1+L,KAAK2+L,WAAY,G,EAGnB7yK,UAAA,WACE,MAAO,oB,EAGTo0C,KAAA,WACE,MAAO,mB,EAGT/2D,MAAA,WACE,MAAO,I,EAGTitB,QAAA,WAA4B,IAatBwoK,EAbsB,OAmB1B,OAlBI5+L,KAAK0+L,UAAUj6L,OAAS,IAAMzE,KAAK2+L,YACrC3+L,KAAK2+L,WAAY,EAEjB77L,YAAW,WACT,IAAM+7L,GAAgB,EAAK1rF,OAAOttG,MAAQ,GAAK,EAAK64L,UAAUj6L,OAE9D,EAAKk6L,WAAY,EACjB,EAAKxrF,KAAK,CAAEttG,MAAOg5L,EAActuL,KAAM,EAAKmuL,UAAUG,KACtD7pL,EAAEwqC,WACD,MAKDx/C,KAAK0+L,UAAUj6L,OAAS,IAC1Bm6L,EAAW5+L,KAAK0+L,WAAW1+L,KAAKmzG,OAAOttG,MAAQ,EAAI7F,KAAK0+L,UAAUj6L,QAAUzE,KAAK0+L,UAAUj6L,SAI3F,SAAKqnB,UAAU,4BACb,SAAKA,UAAU,yBAAyBo0C,IAAK,oBAC7C,SAAKp0C,UAAU,mCACZ9rB,KAAK0+L,UAAU92L,KAAI,SAACurG,EAAMttG,GAAP,OAClB,SACEimB,UAAWkyC,IAAU,CACnB,wBACA,EAAKm1C,OAAOttG,QAAUA,EAAQ,iCAAmC,GACjE+4L,IAAazrF,EAAO,kCAAoC,KAE1DrmG,IAAKjH,GAEJmP,EAAE6tC,MAAMswD,U,UAzDwCuX,GEHhD,aAAUlxD,IACvB,IAAIixD,KACD3xG,IAAI,CACHhM,IAAK,OACL4yC,UAAW++I,EACXtzK,WAAY,kBAAOquC,EAAI2J,MAAMC,UAAU,2BAA2B3+D,QAClEqpJ,UAAU,EACV7kJ,UAAW,MACX3G,SAAU,IAEX7B,OAAO+4D,EAAK,uB,iDCbjBA,IAAI4yC,aAAatzF,IAAI,qBAAqB,WACxCu1I,YAAe70F;;;;;;;MCFjB,IAAIhB,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,GCLRomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,MCJ3E0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,M,+BCLvD,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,iBCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAMzC,OALAitD,EAAkBp2C,OAAOixC,gBAAkB,SAAyBjhD,EAAG7G,GAErE,OADA6G,EAAE+6C,UAAY5hD,EACP6G,GAGFomD,EAAgBpmD,EAAG7G,GCN5B,MAAM,EAA+B2sG,OAAOC,KAAK/D,OAAO,oB,aCAnB8D,OAAOC,KAAK/D,OAAO,0B,ICGnCqrF,EAAAA,SAAAA,GCFN,IAAwBnsI,EAAUC,E,kDAAAA,E,GAAVD,E,GAC5BhzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,G,2BDAzBjuB,KAAA,WACE,OAAK3kC,KAAK++L,YAAe/+L,KAAKg/L,kBAAqBh/L,KAAKi/L,gBAKtD,SAAKnzK,UAAU,mBACZ9rB,KAAK6jG,YACN,SAAK/3E,UAAU,uCACZ9rB,KAAKk/L,QACJ1lI,IAAI2J,MAAMC,UAAU,sCACpBpjE,KAAKm/L,SACL,KAVC,I,EAgBXt7F,UAAA,a,EAIAq7F,MAAA,WACE,IAAM1vG,GAASh2B,IAAI2J,MAAMC,UAAU,iCAAmC,IACnEt8D,QAAO,SAACmb,GAAD,OAAmB,OAATA,KACjBra,KAAI,SAACqa,GAGJ,OAFIA,EAAKutE,QAAOvtE,EAAKutE,MAAQvtE,EAAKutE,MAAM1oF,QAAO,SAACmb,GAAD,OAAmB,OAATA,MAElDA,KAGX,OACE,SAAK6J,UAAU,yBACb,SACEA,UAAW,CACT,wBACA9rB,KAAK++L,WAAa,GAAK,gCACvB3mL,KAAK,MAEP,SACE0T,UAAW,CACT,uBACA9rB,KAAKg/L,iBAAmB,GAAK,+BAC7B5mL,KAAK,MAENohD,IAAI2J,MAAMC,UAAU,WACnB,SAAKhhD,IAAKo3C,IAAI2J,MAAMC,UAAU,WAAYvE,IAAI,SAE9C,QAAI/yC,UAAU,yBACX0tC,IAAI2J,MAAMC,UAAU,WAI1BpjE,KAAKg/L,iBACJ,OAAGlzK,UAAU,oCACV0tC,IAAI2J,MAAMC,UAAU,uCAGvB,IAGHpjE,KAAK++L,WACJ,SAAKjzK,UAAU,yBACZ0jE,EAAM5nF,KAAI,SAAC62E,GAAD,OACT,SAAK3yD,UAAU,6BACb,QAAIA,UAAU,mCACX2yD,EAAMt1E,OAET,YACGs1E,EAAM+Q,MAAM5nF,KAAI,SAACq2E,GAAD,OACf,QAAInyD,UAAU,8BACZ,OAAGsE,KAAM6tD,EAAKpnC,IAAKmiH,IAAI,YACpB/6E,EAAKnd,iBASpB,K,EAMRq+H,MAAA,WACE,OACE,SAAKrzK,UAAU,yBACb,OAAGA,UAAU,8BACV0tC,IAAI2J,MAAMC,UAAU,wC,EAM7B27H,SAAA,WACE,OACEvlI,IAAI2J,MAAMC,UAAU,iCACpB5J,IAAI2J,MAAMC,UAAU,gCAAgC3+D,Q,EAIxDu6L,eAAA,WACE,OAAOt4L,QAAQ8yD,IAAI2J,MAAMC,UAAU,wC,EAGrC67H,cAAA,WACE,OAAOv4L,QAAQ8yD,IAAI2J,MAAMC,UAAU,uC,EA9GlB07H,CAAezjI,KEHpC,MAAM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,0B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCExD,SACE,sDAAuDqrF,GCHnD,EAA+BvnF,OAAOC,KCK5Ch+C,IAAI4yC,aAAatzF,IAAI,oBAAoB,YACvCrY,EAAAA,EAAAA,QAAO+vG,IAAAA,UAA4B,SAAS,WACtCh3C,IAAI2J,MAAMC,UAAU,kCACtBpuD,EAAEyqC,MAAM7+C,SAASgR,eAAe,UAAWktL,OAG/Cr+L,EAAAA,EAAAA,QAAO2sF,IAAAA,UAAuB,QAAQ,SAAU9sB,GAE3C9G,IAAI2J,MAAMC,UAAU,oBACnB9C,GAAwB,iBAATA,GAAqB,UAAWA,IAInDA,EAAK51C,MAAMoB,WAAa,gBACxBw0C,EAAK51C,MAAM3X,MAAQutD,EAAK51C,MAAM3X,OAAS,GACvCutD,EAAK51C,MAAM3X,MAAM,gBAAjB,QAA2CymD,IAAI2J,MAAMC,UACnD,mBADF,KAII5J,IAAI2J,MAAMC,UAAU,6BACtB9C,EAAK51C,MAAM3X,MAAM,qBAAuBymD,IAAI2J,MAAMC,UAChD,mCAUR3hD,OAAOs+B,OAAO0zD,EAAAA,OAAQ2X,I;;;;;;;MCnCtB,IAAI5yD,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,GCLRomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,MCJ3E0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,M,wBCLxC,SAAS+yD,IAetB,OAdAA,EAAWr4C,OAAOs+B,QAAU,SAAUp/C,GACpC,IAAK,IAAIsG,EAAI,EAAGA,EAAIyM,UAAUjP,OAAQwC,IAAK,CACzC,IAAIs2B,EAAS7pB,UAAUzM,GAEvB,IAAK,IAAI6F,KAAOywB,EACV9b,OAAO9hB,UAAU8M,eAAe1M,KAAKw9B,EAAQzwB,KAC/CnM,EAAOmM,GAAOywB,EAAOzwB,IAK3B,OAAOnM,GAGFm5D,EAASrmD,MAAMzT,KAAM0T,W,OCf9B,MAAM,EAA+B6jG,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,uC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,wB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,mB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,qB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,8B,aCUnCoG,EAAAA,W,iCACnBl1E,KAAA,WACE,GAAI3kC,KAAK0+D,QACP,OAAO,EAAC,IAAD,MAGT,IAAM7D,EAAS76D,KAAKq5G,KAAKvyG,QAAO,SAACslB,GAAD,OAA4B,OAAnBA,EAAI9pB,cACvC23G,EAAQj6G,KAAKq5G,KAAKvyG,QAAO,SAACslB,GAAD,OAA4B,OAAnBA,EAAI9pB,cAE5C,OACE,SAAKwpB,UAAU,mBACZ0hE,IAAAA,UAAAA,OACD,SAAK1hE,UAAU,8BACb,SAAKA,UAAU,sCACb,YAAK0xC,GAAAA,CAAUgwB,IAAAA,UAAAA,eAAmCvqE,aAGpD,SAAK6I,UAAU,kCACb,QAAIA,UAAU,mBACX+uC,EAAOjzD,KAAI,SAACwkB,GACX,IAAMiuF,EAAuBjuF,EAAIiuF,uBAC3B/kF,EAAWkkF,GAAAA,CAASptF,EAAIkJ,YAAc,IACtC8pK,EAAcnmF,GAAAA,CAAQ7sF,EAAK,GAAI,CAAE8sF,UAAU,IAMjD,OAJIkmF,EAAY10K,MAAM3X,OAASqsL,EAAY10K,MAAM3X,MAAMi/C,wBAC9CotI,EAAY10K,MAAM3X,MAAMi/C,gBAI/B,QAAIlmC,UAAW,mBAAqBM,EAAI/U,QAAU,UAAY,IAAKtE,MAAO,CAAE,WAAYqZ,EAAI/U,UAC1F,EAAC,IAAD,CAAMyU,UAAU,sBAAsBsE,KAAMopC,IAAIhZ,MAAMp0B,IAAIA,IACxD,SAAKN,UAAU,uBAAuBszK,GACtC,SAAKtzK,UAAU,0BACb,QAAIA,UAAU,uBAAuBM,EAAIvZ,QACzC,OAAGiZ,UAAU,8BAA8BM,EAAIuoD,eAC9Cr/C,GAAYA,EAAS7wB,OACpB,SAAKqnB,UAAU,2BACZwJ,EAAS1tB,KAAI,SAAC86C,GAAD,MAAW,CACvB,EAAC,IAAD,CAAMtyB,KAAMopC,IAAIhZ,MAAMp0B,IAAIs2B,GAAQ52B,UAAU,YACzC42B,EAAM7vC,QAET,SAIJ,GAEDwnG,EACC,EAAC,IAAD,CACEvuF,UAAU,sCACVsE,KAAMopC,IAAIhZ,MAAM0d,WAAWm8C,EAAsBA,EAAqBhrC,mBAEtE,UAAMvjD,UAAU,6CAA6CuuF,EAAqBlxG,SACjFi3D,GAAAA,CAAUi6C,EAAqB38B,iBAGlC,UAAM5xD,UAAU,+CAS7BmuF,EAAMx1G,OAAS,SAAKqnB,UAAU,mBAAmBmuF,EAAMryG,KAAI,SAACwkB,GAAD,MAAS,CAACktF,GAAAA,CAASltF,EAAK,CAAE6xD,MAAM,IAAS,SAAe,O,EAjE3G47B,GCVrB,MAAM,EAA+BtC,OAAOC,KAAK/D,OAAO,gBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,uD,aCQxDj6C,IAAI4yC,aAAatzF,IAAI,gBAAgB,YACnCrY,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,QAAQ,SAAUzrB,GACrD,IAAMi9I,EAA4Bj9I,EAAM9sB,SAASz0B,MAC/C,SAAC0C,GAAD,OAAOA,GAAe,QAAVA,EAAE6oB,KAAiB7oB,EAAEmnB,OAASnnB,EAAEmnB,MAAMoB,UAAUouC,SAAS,iCAGvEmlI,EAA0B/pK,SAAS,GACjC,SAAKxJ,UAAU,uCAAuC,CAACuzK,EAA0B/pK,SAAS,GAAI+pK,EAA0B/pK,SAAS,YAG5H+pK,EAA0B/pK,SAAS,GAE1C+pK,EAA0B/pK,SAAS,GAAK,SAAKxJ,UAAU,4BAA4BuzK,EAA0B/pK,SAAS,IAElHt1B,KAAK0qB,MAAMwzC,WAAWm7C,QAAUr5G,KAAK0qB,MAAMwzC,WAAWm7C,OAAO,IAAMr5G,KAAK0qB,MAAMwzC,WAAWm7C,OAAO,GAAGhiG,UACrG+qC,EAAM13B,MAAM3X,MAAZ,GAAsB,cAAe/S,KAAK0qB,MAAMwzC,WAAWm7C,OAAO,GAAGhiG,SAAa+qC,EAAM13B,MAAM3X,OAAS,KAGrG/S,KAAK0qB,MAAMwzC,WAAWqQ,aACxBnsB,EAAM13B,MAAMoB,WAAa,mCAI7BrrB,EAAAA,EAAAA,QAAOotE,IAAAA,UAA8B,aAAa,SAAUlQ,GAC1D,IAAKA,EAAMjoC,IAAI,WAAY,CACzB,IAAMg6C,EAAY1vE,KAAK0qB,MAAMwzC,WAAWwR,YAExC,GAAIA,EAAW,CACb,IAAMC,GAAUn7C,EAAAA,EAAAA,UAASk7C,EAAUE,eAAgB,KAEnDjS,EAAM7kD,IAAI,UAAW,aAAM62D,IAAiB,WAKlDg7B,EAAAA,EAAAA,UAASm0F,IAAAA,UAAkB,aAAa,WACtC,OACE,SAAK73I,MAAM,6BAA6Br4C,MAAM,OAAO1M,OAAO,MAAM4pB,UAAU,sBAC1E,UACE,eAAa,IACblX,EAAE,+vBAMV+1F,EAAAA,EAAAA,UAASkP,IAAAA,UAAoB,OAAQylF,EAAAA,UAAAA,U;;;;;;;MCrDvC,IAAI9mI,EAAsB,CCA1BA,EAAyB9gD,IACxB,IAAI06B,EAAS16B,GAAUA,EAAO06C,WAC7B,IAAO16C,EAAiB,QACxB,IAAM,EAEP,OADA8gD,EAAoB5jD,EAAEw9B,EAAQ,CAAE1oC,EAAG0oC,IAC5BA,CAAM,ECLdomB,EAAwB,CAAC7gD,EAASihD,KACjC,IAAI,IAAI9rD,KAAO8rD,EACXJ,EAAoB/mD,EAAEmnD,EAAY9rD,KAAS0rD,EAAoB/mD,EAAEkG,EAAS7K,IAC5E2U,OAAOya,eAAevkB,EAAS7K,EAAK,CAAEy2B,YAAY,EAAMhnB,IAAKq8C,EAAW9rD,IAE1E,ECND0rD,EAAwB,CAACzrD,EAAKqvB,IAAU3a,OAAO9hB,UAAU8M,eAAe1M,KAAKgN,EAAKqvB,GCClFo8B,EAAyB7gD,IACH,oBAAXyN,QAA0BA,OAAOuuC,aAC1ClyC,OAAOya,eAAevkB,EAASyN,OAAOuuC,YAAa,CAAE5sD,MAAO,WAE7D0a,OAAOya,eAAevkB,EAAS,aAAc,CAAE5Q,OAAO,GAAO,G,yDCL9D,MAAM,EAA+BwwG,OAAOC,KAAK/D,OAAO,a,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,iBCAlD,EAA+B8D,OAAOC,KAAK/D,OAAO,sB,aCAzC,SAAS57C,EAAgBpmD,EAAG7G,GAKzC,OAJAitD,EAAkBp2C,OAAOixC,eAAiBjxC,OAAOixC,eAAehjB,OAAS,SAAyBj+B,EAAG7G,GAEnG,OADA6G,EAAE+6C,UAAY5hD,EACP6G,CACT,EACOomD,EAAgBpmD,EAAG7G,EAC5B,CCLe,SAASivD,EAAelH,EAAUC,GAC/CD,EAAShzD,UAAY8hB,OAAOugB,OAAO4wB,EAAWjzD,WAC9CgzD,EAAShzD,UAAUiM,YAAc+mD,EACjCD,EAAeC,EAAUC,EAC3B,CCLA,MAAM,EAA+B2kD,OAAOC,KAAK/D,OAAO,oB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,gC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,4B,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,+B,aCWnC8rF,EAAa,SAAA9zE,GAAA,SAAA8zE,IAAA,OAAA9zE,EAAAh4G,MAAA,KAAAC,YAAA,KAQ/B,OAR+BmmD,EAAA0lI,EAAA9zE,GAAA8zE,EAAA5/L,UAChCglC,KAAA,SAAKyd,GACH,IAAAspE,EAA+B1rH,KAAK0qB,MAA5B81B,EAAKkrE,EAALlrE,MAAO0f,EAAIwrD,EAAJxrD,KAAMY,EAAK4qD,EAAL5qD,MACrB,OACE9rD,EAACqmE,IAAU,CAACjrD,KAAMowB,EAAO0f,KAAMA,EAAM/2D,MAAO23D,GACzCA,EAGP,EAACy+H,CAAA,CAR+B,CAASlkI,KCX3C,MAAM,EAA+Bk8C,OAAOC,KAAK/D,OAAO,oC,aCAxD,MAAM,EAA+B8D,OAAOC,KAAK/D,OAAO,yB,aCInC+rF,EAAwB,SAAAC,GAAA,SAAAD,IAAA,OAAAC,EAAAhsL,MAAA,KAAAC,YAAA,KAM1C,OAN0CmmD,EAAA2lI,EAAAC,GAAAD,EAAA7/L,UAC3CkiE,iBAAA,WACE,IAAM/U,EAAO0M,IAAAA,QAAY1M,KAGzB,MAAO,CAAC2R,IAAO3R,GAAO,IAAK93C,EAAA,QAAM8W,UAAU,gBAAgB0tC,IAAAA,WAAekH,MAAM,kCAClF,EAAC8+H,CAAA,CAN0C,CAASlkH,KCWjCokH,EAAS,SAAAj0E,GAAA,SAAAi0E,IAAA,OAAAj0E,EAAAh4G,MAAA,KAAAC,YAAA,KAAAmmD,EAAA6lI,EAAAj0E,GAAA,IAAAW,EAAAszE,EAAA//L,UA+D3B,OA/D2BysH,EAC5BznF,KAAA,SAAKyd,GACH,OACEptC,EAAA,OAAK8W,UAAU,aACb9W,EAAA,MAAI8W,UAAU,mBAAmB0xC,IAAUx9D,KAAK29D,QAAQ16C,YAG9D,EAACmpG,EAEDzuD,MAAA,WACE,IAAMA,EAAQ,IAAIlB,KAwBlB,GAtBAkB,EAAM7kD,IAAI,OAAQ9D,EAACuqL,EAAa,CAAC/+I,MAAM,IAAI0f,KAAK,cAAcY,MAAOtH,IAAAA,WAAekH,MAAM,gCAAmC,KAE/F,SAA1BlH,IAAAA,OAAW3zD,MAAMw6C,KACnBsd,EAAM7kD,IACJ,MACA9D,EAACuqL,EAAa,CAAC/+I,MAAOgZ,IAAAA,MAAU,SAAU0G,KAAK,kBAAkBY,MAAOtH,IAAAA,WAAekH,MAAM,2CAC7F,IAEO,0BAA2B62C,OAAOjK,WAC3C3vC,EAAM7kD,IACJ,aACA9D,EAACuqL,EAAa,CAAC/+I,MAAOgZ,IAAAA,MAAU,cAAe0G,KAAK,iBAAiBY,MAAOtH,IAAAA,WAAekH,MAAM,sCACjG,IAEO,gBAAiB62C,OAAOjK,YACjC3vC,EAAM7kD,IACJ,OACA9D,EAACuqL,EAAa,CAAC/+I,MAAOgZ,IAAAA,MAAU,QAAS0G,KAAK,cAAcY,MAAOtH,IAAAA,WAAekH,MAAM,gCACxF,IAIAlH,IAAAA,QAAY1M,KAAM,CACpB,IAAM4hB,EAASlV,IAAAA,QAAY1M,KAAKi6B,0BAEhCppB,EAAM7kD,IACJ,gBACA9D,EAACqmE,IAAU,CACTjrD,KAAMopC,IAAAA,MAAU,iBAChB0G,KAAK,cACL/2D,MAAOqwD,IAAAA,WAAekH,MAAM,uCAC5B50C,UAAU,kCAET4iD,EAAS15D,EAAA,QAAM8W,UAAU,gCAAgC4iD,GAAiB,GAC1ElV,IAAAA,WAAekH,MAAM,wCAExB,IAGF/C,EAAM7kD,IAAI,UAAW9D,EAACwqL,EAAwB,MAAK,GACrD,MACE7hI,EAAM7kD,IACJ,QACA9D,EAACyuD,IAAM,CAACvD,KAAK,cAAcp0C,UAAU,sBAAsBw2B,QAAS,kBAAMkX,IAAAA,MAAU9sD,KAAKk+D,IAAY,CAAC,EAAE,GACrGpR,IAAAA,WAAekH,MAAM,iCAExB,IAIJ,OAAO/C,CACT,EAAC+hI,CAAA,CA/D2B,CAASrkI,KCX1Bs0D,EAAa,CACxB+vE,UAAAA,EACAH,cAAAA,EACAC,yBAAAA,GCDFhmI,IAAAA,aAAiB1gD,IAAI,mBAAmB,YAEtCrY,EAAAA,EAAAA,QAAO0rG,IAAAA,UAAuB,SAAS,WACrC,IAAMwzF,EAAO/+L,SAAS0E,cAAc,OACpC0P,EAAEyqC,MAAM7+C,SAASuC,KAAK4Q,YAAY4rL,GAAOD,EAC3C,GACF,G","sourcesContent":["// Based off of the polyfill on MDN\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat#reduce_concat_isarray_recursivity\n//\n// Needed to provide support for Safari on iOS < 12\n\n// ts-ignored because we can afford to encapsulate some messy logic behind the clean typings.\n\nif (!Array.prototype['flat']) {\n Array.prototype['flat'] = function flat<A, D extends number = 1>(this: A, depth?: D | unknown): any[] {\n // @ts-ignore\n return (depth ?? 1) > 0\n ? // @ts-ignore\n Array.prototype.reduce.call(this, (acc, val): any[] => acc.concat(Array.isArray(val) ? flat.call(val, depth - 1) : val), [])\n : // If no depth is provided, or depth is 0, just return a copy of\n // the array. Spread is supported in all major browsers (iOS 8+)\n // @ts-ignore\n [...this];\n };\n}\n","/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","/*!\r\n * Color Thief v2.0\r\n * by Lokesh Dhakar - http://www.lokeshdhakar.com\r\n *\r\n * Thanks\r\n * ------\r\n * Nick Rabinowitz - For creating quantize.js.\r\n * John Schulz - For clean up and optimization. @JFSIII\r\n * Nathan Spady - For adding drag and drop support to the demo page.\r\n *\r\n * License\r\n * -------\r\n * Copyright 2011, 2015 Lokesh Dhakar\r\n * Released under the MIT license\r\n * https://raw.githubusercontent.com/lokesh/color-thief/master/LICENSE\r\n *\r\n */\r\nvar CanvasImage=function(a){this.canvas=document.createElement(\"canvas\"),this.context=this.canvas.getContext(\"2d\"),document.body.appendChild(this.canvas),this.width=this.canvas.width=a.width,this.height=this.canvas.height=a.height,this.context.drawImage(a,0,0,this.width,this.height)};CanvasImage.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)},CanvasImage.prototype.update=function(a){this.context.putImageData(a,0,0)},CanvasImage.prototype.getPixelCount=function(){return this.width*this.height},CanvasImage.prototype.getImageData=function(){return this.context.getImageData(0,0,this.width,this.height)},CanvasImage.prototype.removeCanvas=function(){this.canvas.parentNode.removeChild(this.canvas)};var ColorThief=function(){};/*!\r\n * quantize.js Copyright 2008 Nick Rabinowitz.\r\n * Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php\r\n */\r\n/*!\r\n * Block below copied from Protovis: http://mbostock.github.com/protovis/\r\n * Copyright 2010 Stanford Visualization Group\r\n * Licensed under the BSD License: http://www.opensource.org/licenses/bsd-license.php\r\n */\r\nif(ColorThief.prototype.getColor=function(a,b){var c=this.getPalette(a,5,b),d=c[0];return d},ColorThief.prototype.getPalette=function(a,b,c){\"undefined\"==typeof b&&(b=10),(\"undefined\"==typeof c||1>c)&&(c=10);for(var d,e,f,g,h,i=new CanvasImage(a),j=i.getImageData(),k=j.data,l=i.getPixelCount(),m=[],n=0;l>n;n+=c)d=4*n,e=k[d+0],f=k[d+1],g=k[d+2],h=k[d+3],h>=125&&(e>250&&f>250&&g>250||m.push([e,f,g]));var o=MMCQ.quantize(m,b),p=o?o.palette():null;return i.removeCanvas(),p},!pv)var pv={map:function(a,b){var c={};return b?a.map(function(a,d){return c.index=d,b.call(c,a)}):a.slice()},naturalOrder:function(a,b){return b>a?-1:a>b?1:0},sum:function(a,b){var c={};return a.reduce(b?function(a,d,e){return c.index=e,a+b.call(c,d)}:function(a,b){return a+b},0)},max:function(a,b){return Math.max.apply(null,b?pv.map(a,b):a)}};var MMCQ=function(){function a(a,b,c){return(a<<2*i)+(b<<i)+c}function b(a){function b(){c.sort(a),d=!0}var c=[],d=!1;return{push:function(a){c.push(a),d=!1},peek:function(a){return d||b(),void 0===a&&(a=c.length-1),c[a]},pop:function(){return d||b(),c.pop()},size:function(){return c.length},map:function(a){return c.map(a)},debug:function(){return d||b(),c}}}function c(a,b,c,d,e,f,g){var h=this;h.r1=a,h.r2=b,h.g1=c,h.g2=d,h.b1=e,h.b2=f,h.histo=g}function d(){this.vboxes=new b(function(a,b){return pv.naturalOrder(a.vbox.count()*a.vbox.volume(),b.vbox.count()*b.vbox.volume())})}function e(b){var c,d,e,f,g=1<<3*i,h=new Array(g);return b.forEach(function(b){d=b[0]>>j,e=b[1]>>j,f=b[2]>>j,c=a(d,e,f),h[c]=(h[c]||0)+1}),h}function f(a,b){var d,e,f,g=1e6,h=0,i=1e6,k=0,l=1e6,m=0;return a.forEach(function(a){d=a[0]>>j,e=a[1]>>j,f=a[2]>>j,g>d?g=d:d>h&&(h=d),i>e?i=e:e>k&&(k=e),l>f?l=f:f>m&&(m=f)}),new c(g,h,i,k,l,m,b)}function g(b,c){function d(a){var b,d,e,f,g,h=a+\"1\",j=a+\"2\",k=0;for(i=c[h];i<=c[j];i++)if(o[i]>n/2){for(e=c.copy(),f=c.copy(),b=i-c[h],d=c[j]-i,g=d>=b?Math.min(c[j]-1,~~(i+d/2)):Math.max(c[h],~~(i-1-b/2));!o[g];)g++;for(k=p[g];!k&&o[g-1];)k=p[--g];return e[j]=g,f[h]=e[j]+1,[e,f]}}if(c.count()){var e=c.r2-c.r1+1,f=c.g2-c.g1+1,g=c.b2-c.b1+1,h=pv.max([e,f,g]);if(1==c.count())return[c.copy()];var i,j,k,l,m,n=0,o=[],p=[];if(h==e)for(i=c.r1;i<=c.r2;i++){for(l=0,j=c.g1;j<=c.g2;j++)for(k=c.b1;k<=c.b2;k++)m=a(i,j,k),l+=b[m]||0;n+=l,o[i]=n}else if(h==f)for(i=c.g1;i<=c.g2;i++){for(l=0,j=c.r1;j<=c.r2;j++)for(k=c.b1;k<=c.b2;k++)m=a(j,i,k),l+=b[m]||0;n+=l,o[i]=n}else for(i=c.b1;i<=c.b2;i++){for(l=0,j=c.r1;j<=c.r2;j++)for(k=c.g1;k<=c.g2;k++)m=a(j,k,i),l+=b[m]||0;n+=l,o[i]=n}return o.forEach(function(a,b){p[b]=n-a}),d(h==e?\"r\":h==f?\"g\":\"b\")}}function h(a,c){function h(a,b){for(var c,d=1,e=0;k>e;)if(c=a.pop(),c.count()){var f=g(i,c),h=f[0],j=f[1];if(!h)return;if(a.push(h),j&&(a.push(j),d++),d>=b)return;if(e++>k)return}else a.push(c),e++}if(!a.length||2>c||c>256)return!1;var i=e(a),j=0;i.forEach(function(){j++});var m=f(a,i),n=new b(function(a,b){return pv.naturalOrder(a.count(),b.count())});n.push(m),h(n,l*c);for(var o=new b(function(a,b){return pv.naturalOrder(a.count()*a.volume(),b.count()*b.volume())});n.size();)o.push(n.pop());h(o,c-o.size());for(var p=new d;o.size();)p.push(o.pop());return p}var i=5,j=8-i,k=1e3,l=.75;return c.prototype={volume:function(a){var b=this;return(!b._volume||a)&&(b._volume=(b.r2-b.r1+1)*(b.g2-b.g1+1)*(b.b2-b.b1+1)),b._volume},count:function(b){var c=this,d=c.histo;if(!c._count_set||b){var e,f,g,h=0;for(e=c.r1;e<=c.r2;e++)for(f=c.g1;f<=c.g2;f++)for(g=c.b1;g<=c.b2;g++)index=a(e,f,g),h+=d[index]||0;c._count=h,c._count_set=!0}return c._count},copy:function(){var a=this;return new c(a.r1,a.r2,a.g1,a.g2,a.b1,a.b2,a.histo)},avg:function(b){var c=this,d=c.histo;if(!c._avg||b){var e,f,g,h,j,k=0,l=1<<8-i,m=0,n=0,o=0;for(f=c.r1;f<=c.r2;f++)for(g=c.g1;g<=c.g2;g++)for(h=c.b1;h<=c.b2;h++)j=a(f,g,h),e=d[j]||0,k+=e,m+=e*(f+.5)*l,n+=e*(g+.5)*l,o+=e*(h+.5)*l;k?c._avg=[~~(m/k),~~(n/k),~~(o/k)]:c._avg=[~~(l*(c.r1+c.r2+1)/2),~~(l*(c.g1+c.g2+1)/2),~~(l*(c.b1+c.b2+1)/2)]}return c._avg},contains:function(a){var b=this,c=a[0]>>j;return gval=a[1]>>j,bval=a[2]>>j,c>=b.r1&&c<=b.r2&&gval>=b.g1&&gval<=b.g2&&bval>=b.b1&&bval<=b.b2}},d.prototype={push:function(a){this.vboxes.push({vbox:a,color:a.avg()})},palette:function(){return this.vboxes.map(function(a){return a.color})},size:function(){return this.vboxes.size()},map:function(a){for(var b=this.vboxes,c=0;c<b.size();c++)if(b.peek(c).vbox.contains(a))return b.peek(c).color;return this.nearest(a)},nearest:function(a){for(var b,c,d,e=this.vboxes,f=0;f<e.size();f++)c=Math.sqrt(Math.pow(a[0]-e.peek(f).color[0],2)+Math.pow(a[1]-e.peek(f).color[1],2)+Math.pow(a[2]-e.peek(f).color[2],2)),(b>c||void 0===b)&&(b=c,d=e.peek(f).color);return d},forcebw:function(){var a=this.vboxes;a.sort(function(a,b){return pv.naturalOrder(pv.sum(a.color),pv.sum(b.color))});var b=a[0].color;b[0]<5&&b[1]<5&&b[2]<5&&(a[0].color=[0,0,0]);var c=a.length-1,d=a[c].color;d[0]>251&&d[1]>251&&d[2]>251&&(a[c].color=[255,255,255])}},{quantize:h}}();\r\nmodule.exports = ColorThief;\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),l=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?l(1,0):l(31,11);case f:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,l=this;r=Number(r);var $=O.p(h),y=function(t){var e=w(l);return O.w(e.date(e.date()+Math.round(t*r)),l)};if($===f)return this.set(f,this.$M+r);if($===c)return this.set(c,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||$[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,v=this-M,g=O.m(this,M);return g=($={},$[c]=g/12,$[f]=g,$[h]=g/3,$[o]=(v-m)/6048e5,$[a]=(v-m)/864e5,$[u]=v/n,$[s]=v/e,$[i]=v/t,$)[y]||v,l?g:O.a(g)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[g],w.Ls=D,w.p={},w}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === \"object\") {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n\n return g;\n}();","/*jslint browser: true*/\r\n/*jslint jquery: true*/\r\n\r\n/*\r\n * jQuery Hotkeys Plugin\r\n * Copyright 2010, John Resig\r\n * Dual licensed under the MIT or GPL Version 2 licenses.\r\n *\r\n * Based upon the plugin by Tzury Bar Yochay:\r\n * https://github.com/tzuryby/jquery.hotkeys\r\n *\r\n * Original idea by:\r\n * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/\r\n */\r\n\r\n/*\r\n * One small change is: now keys are passed by object { keys: '...' }\r\n * Might be useful, when you want to pass some other data to your handler\r\n */\r\n\r\n(function(jQuery) {\r\n\r\n jQuery.hotkeys = {\r\n version: \"0.2.0\",\r\n\r\n specialKeys: {\r\n 8: \"backspace\",\r\n 9: \"tab\",\r\n 10: \"return\",\r\n 13: \"return\",\r\n 16: \"shift\",\r\n 17: \"ctrl\",\r\n 18: \"alt\",\r\n 19: \"pause\",\r\n 20: \"capslock\",\r\n 27: \"esc\",\r\n 32: \"space\",\r\n 33: \"pageup\",\r\n 34: \"pagedown\",\r\n 35: \"end\",\r\n 36: \"home\",\r\n 37: \"left\",\r\n 38: \"up\",\r\n 39: \"right\",\r\n 40: \"down\",\r\n 45: \"insert\",\r\n 46: \"del\",\r\n 59: \";\",\r\n 61: \"=\",\r\n 96: \"0\",\r\n 97: \"1\",\r\n 98: \"2\",\r\n 99: \"3\",\r\n 100: \"4\",\r\n 101: \"5\",\r\n 102: \"6\",\r\n 103: \"7\",\r\n 104: \"8\",\r\n 105: \"9\",\r\n 106: \"*\",\r\n 107: \"+\",\r\n 109: \"-\",\r\n 110: \".\",\r\n 111: \"/\",\r\n 112: \"f1\",\r\n 113: \"f2\",\r\n 114: \"f3\",\r\n 115: \"f4\",\r\n 116: \"f5\",\r\n 117: \"f6\",\r\n 118: \"f7\",\r\n 119: \"f8\",\r\n 120: \"f9\",\r\n 121: \"f10\",\r\n 122: \"f11\",\r\n 123: \"f12\",\r\n 144: \"numlock\",\r\n 145: \"scroll\",\r\n 173: \"-\",\r\n 186: \";\",\r\n 187: \"=\",\r\n 188: \",\",\r\n 189: \"-\",\r\n 190: \".\",\r\n 191: \"/\",\r\n 192: \"`\",\r\n 219: \"[\",\r\n 220: \"\\\\\",\r\n 221: \"]\",\r\n 222: \"'\"\r\n },\r\n\r\n shiftNums: {\r\n \"`\": \"~\",\r\n \"1\": \"!\",\r\n \"2\": \"@\",\r\n \"3\": \"#\",\r\n \"4\": \"$\",\r\n \"5\": \"%\",\r\n \"6\": \"^\",\r\n \"7\": \"&\",\r\n \"8\": \"*\",\r\n \"9\": \"(\",\r\n \"0\": \")\",\r\n \"-\": \"_\",\r\n \"=\": \"+\",\r\n \";\": \": \",\r\n \"'\": \"\\\"\",\r\n \",\": \"<\",\r\n \".\": \">\",\r\n \"/\": \"?\",\r\n \"\\\\\": \"|\"\r\n },\r\n\r\n // excludes: button, checkbox, file, hidden, image, password, radio, reset, search, submit, url\r\n textAcceptingInputTypes: [\r\n \"text\", \"password\", \"number\", \"email\", \"url\", \"range\", \"date\", \"month\", \"week\", \"time\", \"datetime\",\r\n \"datetime-local\", \"search\", \"color\", \"tel\"],\r\n\r\n // default input types not to bind to unless bound directly\r\n textInputTypes: /textarea|input|select/i,\r\n\r\n options: {\r\n filterInputAcceptingElements: true,\r\n filterTextInputs: true,\r\n filterContentEditable: true\r\n }\r\n };\r\n\r\n function keyHandler(handleObj) {\r\n if (typeof handleObj.data === \"string\") {\r\n handleObj.data = {\r\n keys: handleObj.data\r\n };\r\n }\r\n\r\n // Only care when a possible input has been specified\r\n if (!handleObj.data || !handleObj.data.keys || typeof handleObj.data.keys !== \"string\") {\r\n return;\r\n }\r\n\r\n var origHandler = handleObj.handler,\r\n keys = handleObj.data.keys.toLowerCase().split(\" \");\r\n\r\n handleObj.handler = function(event) {\r\n // Don't fire in text-accepting inputs that we didn't directly bind to\r\n if (this !== event.target &&\r\n (jQuery.hotkeys.options.filterInputAcceptingElements &&\r\n jQuery.hotkeys.textInputTypes.test(event.target.nodeName) ||\r\n (jQuery.hotkeys.options.filterContentEditable && jQuery(event.target).attr('contenteditable')) ||\r\n (jQuery.hotkeys.options.filterTextInputs &&\r\n jQuery.inArray(event.target.type, jQuery.hotkeys.textAcceptingInputTypes) > -1))) {\r\n return;\r\n }\r\n\r\n var special = event.type !== \"keypress\" && jQuery.hotkeys.specialKeys[event.which],\r\n character = String.fromCharCode(event.which).toLowerCase(),\r\n modif = \"\",\r\n possible = {};\r\n\r\n jQuery.each([\"alt\", \"ctrl\", \"shift\"], function(index, specialKey) {\r\n\r\n if (event[specialKey + 'Key'] && special !== specialKey) {\r\n modif += specialKey + '+';\r\n }\r\n });\r\n\r\n // metaKey is triggered off ctrlKey erronously\r\n if (event.metaKey && !event.ctrlKey && special !== \"meta\") {\r\n modif += \"meta+\";\r\n }\r\n\r\n if (event.metaKey && special !== \"meta\" && modif.indexOf(\"alt+ctrl+shift+\") > -1) {\r\n modif = modif.replace(\"alt+ctrl+shift+\", \"hyper+\");\r\n }\r\n\r\n if (special) {\r\n possible[modif + special] = true;\r\n }\r\n else {\r\n possible[modif + character] = true;\r\n possible[modif + jQuery.hotkeys.shiftNums[character]] = true;\r\n\r\n // \"$\" can be triggered as \"Shift+4\" or \"Shift+$\" or just \"$\"\r\n if (modif === \"shift+\") {\r\n possible[jQuery.hotkeys.shiftNums[character]] = true;\r\n }\r\n }\r\n\r\n for (var i = 0, l = keys.length; i < l; i++) {\r\n if (possible[keys[i]]) {\r\n return origHandler.apply(this, arguments);\r\n }\r\n }\r\n };\r\n }\r\n\r\n jQuery.each([\"keydown\", \"keyup\", \"keypress\"], function() {\r\n jQuery.event.special[this] = {\r\n add: keyHandler\r\n };\r\n });\r\n\r\n})(jQuery || this.jQuery || window.jQuery);\r\n","/*!\n * jQuery JavaScript Library v3.6.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-08-26T17:52Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\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// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\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\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\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\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\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\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\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\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\t// trim whitespace for custom property (issue gh-4926)\n\t\tif ( isCustomProp ) {\n\n\t\t\t// rtrim treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" );\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\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\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\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\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\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 this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\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\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\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\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar rendering = false\n\tvar pending = false\n\n\tfunction sync() {\n\t\tif (rendering) throw new Error(\"Nested m.redraw.sync() call\")\n\t\trendering = true\n\t\tfor (var i = 0; i < subscriptions.length; i += 2) {\n\t\t\ttry { render(subscriptions[i], Vnode(subscriptions[i + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\trendering = false\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount(element, component) expects a component, not a vnode\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\trender(root, [], redraw)\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\nvar Promise = require(\"../promise/promise\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar assign = require(\"../pathname/assign\")\n\nvar sentinel = {}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar fireAsync\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (fireAsync != null) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (root == null) throw new Error(\"Ensure the DOM element that was passed to `m.route` is not undefined\")\n\t\t// 0 = start\n\t\t// 1 = init\n\t\t// 2 = ready\n\t\tvar state = 0\n\n\t\tvar compiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a `/`\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either `/`, `.`, or `-`\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\t\tvar p = Promise.resolve()\n\t\tvar scheduled = false\n\t\tvar onremove\n\n\t\tfireAsync = null\n\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes\")\n\t\t\t}\n\t\t}\n\n\t\tfunction resolveRoute() {\n\t\t\tscheduled = false\n\t\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t\t// but that's not our problem.\n\t\t\tvar prefix = $window.location.hash\n\t\t\tif (route.prefix[0] !== \"#\") {\n\t\t\t\tprefix = $window.location.search + prefix\n\t\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t\t}\n\t\t\t}\n\t\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t\t// since the representation is consistently a relatively poorly\n\t\t\t// optimized cons string.\n\t\t\tvar path = prefix.concat()\n\t\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponent)\n\t\t\t\t.slice(route.prefix.length)\n\t\t\tvar data = parsePathname(path)\n\n\t\t\tassign(data.params, $window.history.state)\n\n\t\t\tfunction fail() {\n\t\t\t\tif (path === defaultRoute) throw new Error(\"Could not resolve default route \" + defaultRoute)\n\t\t\t\tsetPath(defaultRoute, null, {replace: true})\n\t\t\t}\n\n\t\t\tloop(0)\n\t\t\tfunction loop(i) {\n\t\t\t\t// 0 = init\n\t\t\t\t// 1 = scheduled\n\t\t\t\t// 2 = done\n\t\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\t\tvar localComp = payload\n\t\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t\t}).then(update, fail)\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse update(\"div\")\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfail()\n\t\t\t}\n\t\t}\n\n\t\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t\t// cleared if `hashchange` is used, since that makes it automatically\n\t\t// async.\n\t\tfireAsync = function() {\n\t\t\tif (!scheduled) {\n\t\t\t\tscheduled = true\n\t\t\t\tcallAsync(resolveRoute)\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\tfireAsync = null\n\t\t\tonremove = function() {\n\t\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t\t}\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\treturn mountRedraw.mount(root, {\n\t\t\tonbeforeupdate: function() {\n\t\t\t\tstate = state ? 2 : 1\n\t\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t\t},\n\t\t\toncreate: resolveRoute,\n\t\t\tonremove: onremove,\n\t\t\tview: function() {\n\t\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\t\treturn vnode\n\t\t\t},\n\t\t})\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\tvar options = vnode.attrs.options\n\t\t\t// Remove these so they don't get overwritten\n\t\t\tvar attrs = {}, onclick, href\n\t\t\tassign(attrs, vnode.attrs)\n\t\t\t// The first two are internal, but the rest are magic attributes\n\t\t\t// that need censored to not screw up rendering.\n\t\t\tattrs.selector = attrs.options = attrs.key = attrs.oninit =\n\t\t\tattrs.oncreate = attrs.onbeforeupdate = attrs.onupdate =\n\t\t\tattrs.onbeforeremove = attrs.onremove = null\n\n\t\t\t// Do this now so we can get the most current `href` and `disabled`.\n\t\t\t// Those attributes may also be specified in the selector, and we\n\t\t\t// should honor that.\n\t\t\tvar child = m(vnode.attrs.selector || \"a\", attrs, vnode.children)\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want to do this on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t\tchild.attrs.onclick = null\n\t\t\t} else {\n\t\t\t\tonclick = child.attrs.onclick\n\t\t\t\thref = child.attrs.href\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.jsonp = request.jsonp\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.PromisePolyfill = require(\"./promise/polyfill\")\n\nmodule.exports = m\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, requestAnimationFrame, console)\n","\"use strict\"\n\nmodule.exports = Object.assign || function(target, source) {\n\tif(source) Object.keys(source).forEach(function(key) { target[key] = source[key] })\n}\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\nvar assign = require(\"./assign\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names *must* be separated\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tassign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t\tif (path.length > 1 && path[path.length - 1] === \"/\") path = path.slice(0, -1)\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with `new`\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function\")\n\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved w/ itself\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\n\nmodule.exports = PromisePolyfill\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./polyfill\")\n\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = global.Promise\n} else {\n\tmodule.exports = PromisePolyfill\n}\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponent(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponent(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(window)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\nvar hasOwn = {}.hasOwnProperty\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar children = Vnode.normalizeChildren(vnode.children)\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\tvnode.attrs = null\n\tvnode.children = undefined\n\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\n\t\tattrs = newAttrs\n\t}\n\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\n\tif (hasClass) attrs.class = null\n\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif (Array.isArray(children) && children.length === 1 && children[0] != null && children[0].tag === \"#\") {\n\t\tvnode.text = children[0].children\n\t} else {\n\t\tvnode.children = children\n\t}\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function($window) {\n\tvar $doc = $window && $window.document\n\tvar currentRedraw\n\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"`vnode.state` must not be modified\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement() {\n\t\ttry {\n\t\t\treturn $doc.activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"<td>i</td><td>j</td>\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no <td> in sight.\n\t\tvar temp = $doc.createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\">\" + vnode.children + \"</svg>\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvnode.instance = []\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tvnode.instance.push(child)\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = attrs && attrs.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertNode(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.text != null) {\n\t\t\t\tif (vnode.text !== \"\") element.textContent = vnode.text\n\t\t\t\telse vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t}\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\t//\n\t// The fourth part of the diff currently inserts nodes unconditionally, leading to issues\n\t// like #1791 and #1999. We need to be smarter about those situations where adjascent old\n\t// nodes remain together in the new list in a way that isn't covered by parts one and\n\t// three of the diff algo.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isKeyed === null && isOldKeyed == null) return // both lists are full of nulls\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveNodes(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveNodes(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveNodes(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\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\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveHTML(parent, old)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t\tif (vnode.text != null) {\n\t\t\t\tvnode.attrs.value = vnode.text //FIXME handle multiple children\n\t\t\t\tvnode.text = undefined\n\t\t\t}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (old.text != null && vnode.text != null && vnode.text !== \"\") {\n\t\t\t\tif (old.text.toString() !== vnode.text.toString()) old.dom.firstChild.nodeValue = vnode.text\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (old.text != null) old.children = [Vnode(\"#\", undefined, undefined, old.text, undefined, old.dom.firstChild)]\n\t\t\t\tif (vnode.text != null) vnode.children = [Vnode(\"#\", undefined, undefined, vnode.text, undefined, undefined)]\n\t\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequece\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This covers a really specific edge case:\n\t// - Parent node is keyed and contains child\n\t// - Child is removed, returns unresolved promise in `onbeforeremove`\n\t// - Parent node is moved in keyed diff\n\t// - Remaining children still need moved appropriately\n\t//\n\t// Ideally, I'd track removed nodes as well, but that introduces a lot more\n\t// complexity and I'm not exactly interested in doing that.\n\tfunction moveNodes(parent, vnode, nextSibling) {\n\t\tvar frag = $doc.createDocumentFragment()\n\t\tmoveChildToFrag(parent, frag, vnode)\n\t\tinsertNode(parent, frag, nextSibling)\n\t}\n\tfunction moveChildToFrag(parent, frag, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\t\t\tfrag.appendChild(vnode.instance[i])\n\t\t\t\t}\n\t\t\t} else if (vnode.tag !== \"[\") {\n\t\t\t\t// Don't recurse for text nodes *or* elements, just fragments\n\t\t\t\tfrag.appendChild(vnode.dom)\n\t\t\t} else if (vnode.children.length === 1) {\n\t\t\t\tvnode = vnode.children[0]\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\tif (child != null) moveChildToFrag(parent, frag, child)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (vnode.text != null || children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar mask = 0\n\t\tvar original = vnode.state\n\t\tvar stateResult, attrsResult\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.state.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tmask = 1\n\t\t\t\tstateResult = result\n\t\t\t}\n\t\t}\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.attrs.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tmask |= 2\n\t\t\t\tattrsResult = result\n\t\t\t}\n\t\t}\n\t\tcheckState(vnode, original)\n\n\t\t// If we can, try to fast-path it and avoid all the overhead of awaiting\n\t\tif (!mask) {\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t} else {\n\t\t\tif (stateResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 1) { mask &= 2; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tstateResult.then(next, next)\n\t\t\t}\n\t\t\tif (attrsResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 2) { mask &= 1; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tattrsResult.then(next, next)\n\t\t\t}\n\t\t}\n\n\t\tfunction reallyRemove() {\n\t\t\tcheckState(vnode, original)\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t}\n\t}\n\tfunction removeHTML(parent, vnode) {\n\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\tparent.removeChild(vnode.instance[i])\n\t\t}\n\t}\n\tfunction removeChild(parent, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tremoveHTML(parent, vnode)\n\t\t\t} else {\n\t\t\t\tif (vnode.tag !== \"[\") {\n\t\t\t\t\tparent.removeChild(vnode.dom)\n\t\t\t\t\tif (!Array.isArray(vnode.children)) break\n\t\t\t\t}\n\t\t\t\tif (vnode.children.length === 1) {\n\t\t\t\t\tvnode = vnode.children[0]\n\t\t\t\t\tif (vnode != null) continue\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\t\tif (child != null) removeChild(parent, child)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value && vnode.dom === activeElement()) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\tif (vnode.tag === \"input\" && key === \"type\") vnode.dom.setAttribute(key, value)\n\t\t\telse vnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\" && !isLifecycleMethod(key)) updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement()\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\tif (attrs != null) {\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === activeElement() || vnode.tag === \"option\" && vnode.dom.parentNode === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.attrs != null && vnode.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tvar uppercaseRegex = /[A-Z]/g\n\tfunction toLowerCase(capital) { return \"-\" + capital.toLowerCase() }\n\tfunction normalizeKey(key) {\n\t\treturn key[0] === \"-\" && key[1] === \"-\" ? key :\n\t\t\tkey === \"cssFloat\" ? \"float\" :\n\t\t\t\tkey.replace(uppercaseRegex, toLowerCase)\n\t}\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style.cssText = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style.cssText = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) element.style.setProperty(normalizeKey(key), String(value))\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\telement.style.setProperty(normalizeKey(key), value)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\telement.style.removeProperty(normalizeKey(key))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tif (this._ && ev.redraw !== false) (0, this._)()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"Ensure the DOM element being passed to m.route/m.mount/m.render is not undefined.\")\n\t\tvar hooks = []\n\t\tvar active = activeElement()\n\t\tvar namespace = dom.namespaceURI\n\n\t\t// First time rendering into a node clears it out\n\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\n\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\tvar prevRedraw = currentRedraw\n\t\ttry {\n\t\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t}\n\t\tdom.vnodes = vnodes\n\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\tif (active != null && activeElement() !== active && typeof active.focus === \"function\") active.focus()\n\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\"Vnodes must either always have keys or never have keys!\")\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./promise/promise\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(window, PromisePolyfill, mountRedraw.redraw)\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\n\nmodule.exports = function($window, Promise, oncompletion) {\n\tvar callbackCount = 0\n\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction makeRequest(factory) {\n\t\treturn function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = new Promise(function(resolve, reject) {\n\t\t\t\tfactory(buildPathname(url, args.params), args, function (data) {\n\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tdata[i] = new args.type(data[i])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse data = new args.type(data)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data)\n\t\t\t\t}, reject)\n\t\t\t})\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif ({}.hasOwnProperty.call(args.headers, key) && name.test(key)) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, /^content-type$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, /^accept$/i)) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif ({}.hasOwnProperty.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") response = JSON.parse(ev.target.responseText)\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) resolve(response)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t}),\n\t\tjsonp: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(data)\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t}\n\t\t\tscript.src = url + (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\n\t\t\t\tencodeURIComponent(args.callbackKey || \"callback\") + \"=\" +\n\t\t\t\tencodeURIComponent(callbackName)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t}),\n\t}\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(window, mountRedraw)\n","\"use strict\"\n\nmodule.exports = require(\"./stream/stream\")\n","/* eslint-disable */\n;(function() {\n\"use strict\"\n/* eslint-enable */\nStream.SKIP = {}\nStream.lift = lift\nStream.scan = scan\nStream.merge = merge\nStream.combine = combine\nStream.scanMerge = scanMerge\nStream[\"fantasy-land/of\"] = Stream\n\nvar warnedHalt = false\nObject.defineProperty(Stream, \"HALT\", {\n\tget: function() {\n\t\twarnedHalt || console.log(\"HALT is deprecated and has been renamed to SKIP\");\n\t\twarnedHalt = true\n\t\treturn Stream.SKIP\n\t}\n})\n\nfunction Stream(value) {\n\tvar dependentStreams = []\n\tvar dependentFns = []\n\n\tfunction stream(v) {\n\t\tif (arguments.length && v !== Stream.SKIP) {\n\t\t\tvalue = v\n\t\t\tif (open(stream)) {\n\t\t\t\tstream._changing()\n\t\t\t\tstream._state = \"active\"\n\t\t\t\tdependentStreams.forEach(function(s, i) { s(dependentFns[i](value)) })\n\t\t\t}\n\t\t}\n\n\t\treturn value\n\t}\n\n\tstream.constructor = Stream\n\tstream._state = arguments.length && value !== Stream.SKIP ? \"active\" : \"pending\"\n\tstream._parents = []\n\n\tstream._changing = function() {\n\t\tif (open(stream)) stream._state = \"changing\"\n\t\tdependentStreams.forEach(function(s) {\n\t\t\ts._changing()\n\t\t})\n\t}\n\n\tstream._map = function(fn, ignoreInitial) {\n\t\tvar target = ignoreInitial ? Stream() : Stream(fn(value))\n\t\ttarget._parents.push(stream)\n\t\tdependentStreams.push(target)\n\t\tdependentFns.push(fn)\n\t\treturn target\n\t}\n\n\tstream.map = function(fn) {\n\t\treturn stream._map(fn, stream._state !== \"active\")\n\t}\n\n\tvar end\n\tfunction createEnd() {\n\t\tend = Stream()\n\t\tend.map(function(value) {\n\t\t\tif (value === true) {\n\t\t\t\tstream._parents.forEach(function (p) {p._unregisterChild(stream)})\n\t\t\t\tstream._state = \"ended\"\n\t\t\t\tstream._parents.length = dependentStreams.length = dependentFns.length = 0\n\t\t\t}\n\t\t\treturn value\n\t\t})\n\t\treturn end\n\t}\n\n\tstream.toJSON = function() { return value != null && typeof value.toJSON === \"function\" ? value.toJSON() : value }\n\n\tstream[\"fantasy-land/map\"] = stream.map\n\tstream[\"fantasy-land/ap\"] = function(x) { return combine(function(s1, s2) { return s1()(s2()) }, [x, stream]) }\n\n\tstream._unregisterChild = function(child) {\n\t\tvar childIndex = dependentStreams.indexOf(child)\n\t\tif (childIndex !== -1) {\n\t\t\tdependentStreams.splice(childIndex, 1)\n\t\t\tdependentFns.splice(childIndex, 1)\n\t\t}\n\t}\n\n\tObject.defineProperty(stream, \"end\", {\n\t\tget: function() { return end || createEnd() }\n\t})\n\n\treturn stream\n}\n\nfunction combine(fn, streams) {\n\tvar ready = streams.every(function(s) {\n\t\tif (s.constructor !== Stream)\n\t\t\tthrow new Error(\"Ensure that each item passed to stream.combine/stream.merge/lift is a stream\")\n\t\treturn s._state === \"active\"\n\t})\n\tvar stream = ready\n\t\t? Stream(fn.apply(null, streams.concat([streams])))\n\t\t: Stream()\n\n\tvar changed = []\n\n\tvar mappers = streams.map(function(s) {\n\t\treturn s._map(function(value) {\n\t\t\tchanged.push(s)\n\t\t\tif (ready || streams.every(function(s) { return s._state !== \"pending\" })) {\n\t\t\t\tready = true\n\t\t\t\tstream(fn.apply(null, streams.concat([changed])))\n\t\t\t\tchanged = []\n\t\t\t}\n\t\t\treturn value\n\t\t}, true)\n\t})\n\n\tvar endStream = stream.end.map(function(value) {\n\t\tif (value === true) {\n\t\t\tmappers.forEach(function(mapper) { mapper.end(true) })\n\t\t\tendStream.end(true)\n\t\t}\n\t\treturn undefined\n\t})\n\n\treturn stream\n}\n\nfunction merge(streams) {\n\treturn combine(function() { return streams.map(function(s) { return s() }) }, streams)\n}\n\nfunction scan(fn, acc, origin) {\n\tvar stream = origin.map(function(v) {\n\t\tvar next = fn(acc, v)\n\t\tif (next !== Stream.SKIP) acc = next\n\t\treturn next\n\t})\n\tstream(acc)\n\treturn stream\n}\n\nfunction scanMerge(tuples, seed) {\n\tvar streams = tuples.map(function(tuple) { return tuple[0] })\n\n\tvar stream = combine(function() {\n\t\tvar changed = arguments[arguments.length - 1]\n\t\tstreams.forEach(function(stream, i) {\n\t\t\tif (changed.indexOf(stream) > -1)\n\t\t\t\tseed = tuples[i][1](seed, stream())\n\t\t})\n\n\t\treturn seed\n\t}, streams)\n\n\tstream(seed)\n\n\treturn stream\n}\n\nfunction lift() {\n\tvar fn = arguments[0]\n\tvar streams = Array.prototype.slice.call(arguments, 1)\n\treturn merge(streams).map(function(streams) {\n\t\treturn fn.apply(undefined, streams)\n\t})\n}\n\nfunction open(s) {\n\treturn s._state === \"pending\" || s._state === \"active\" || s._state === \"changing\"\n}\n\nif (typeof module !== \"undefined\") module[\"exports\"] = Stream\nelse if (typeof window.m === \"function\" && !(\"stream\" in window.m)) window.m.stream = Stream\nelse window.m = {stream : Stream}\n\n}());\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","/* jshint browser: true */\n\n(function () {\n\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nvar properties = [\n 'direction', // RTL support\n 'boxSizing',\n 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n 'height',\n 'overflowX',\n 'overflowY', // copy the scrollbar for IE\n\n 'borderTopWidth',\n 'borderRightWidth',\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderStyle',\n\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font\n 'fontStyle',\n 'fontVariant',\n 'fontWeight',\n 'fontStretch',\n 'fontSize',\n 'fontSizeAdjust',\n 'lineHeight',\n 'fontFamily',\n\n 'textAlign',\n 'textTransform',\n 'textIndent',\n 'textDecoration', // might not make a difference, but better be safe\n\n 'letterSpacing',\n 'wordSpacing',\n\n 'tabSize',\n 'MozTabSize'\n\n];\n\nvar isBrowser = (typeof window !== 'undefined');\nvar isFirefox = (isBrowser && window.mozInnerScreenX != null);\n\nfunction getCaretCoordinates(element, position, options) {\n if (!isBrowser) {\n throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser');\n }\n\n var debug = options && options.debug || false;\n if (debug) {\n var el = document.querySelector('#input-textarea-caret-position-mirror-div');\n if (el) el.parentNode.removeChild(el);\n }\n\n // The mirror div will replicate the textarea's style\n var div = document.createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n document.body.appendChild(div);\n\n var style = div.style;\n var computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9\n var isInput = element.nodeName === 'INPUT';\n\n // Default textarea styles\n style.whiteSpace = 'pre-wrap';\n if (!isInput)\n style.wordWrap = 'break-word'; // only for textarea-s\n\n // Position off-screen\n style.position = 'absolute'; // required to return coordinates properly\n if (!debug)\n style.visibility = 'hidden'; // not 'display: none' because we want rendering\n\n // Transfer the element's properties to the div\n properties.forEach(function (prop) {\n if (isInput && prop === 'lineHeight') {\n // Special case for <input>s because text is rendered centered and line height may be != height\n style.lineHeight = computed.height;\n } else {\n style[prop] = computed[prop];\n }\n });\n\n if (isFirefox) {\n // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll'\n }\n\n div.textContent = element.value.substring(0, position);\n // The second special handling for input type=\"text\" vs textarea:\n // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n if (isInput)\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n\n var span = document.createElement('span');\n // Wrapping must be replicated *exactly*, including when a long word gets\n // onto the next line, with whitespace at the end of the line before (#7).\n // The *only* reliable way to do that is to copy the *entire* rest of the\n // textarea's content into the <span> created at the caret position.\n // For inputs, just '.' would be enough, but no need to bother.\n span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n div.appendChild(span);\n\n var coordinates = {\n top: span.offsetTop + parseInt(computed['borderTopWidth']),\n left: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n height: parseInt(computed['lineHeight'])\n };\n\n if (debug) {\n span.style.backgroundColor = '#aaa';\n } else {\n document.body.removeChild(div);\n }\n\n return coordinates;\n}\n\nif (typeof module != 'undefined' && typeof module.exports != 'undefined') {\n module.exports = getCaretCoordinates;\n} else if(isBrowser) {\n window.getCaretCoordinates = getCaretCoordinates;\n}\n\n}());\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../../babel-loader/lib/index.js??ruleSet[1].rules[0]!./jquery.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] = ___EXPOSE_LOADER_IMPORT___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../../babel-loader/lib/index.js??ruleSet[1].rules[0]!./color-thief.min.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"ColorThief\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"ColorThief\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../babel-loader/lib/index.js??ruleSet[1].rules[0]!./dayjs.min.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"dayjs\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"dayjs\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../babel-loader/lib/index.js??ruleSet[1].rules[0]!./index.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"m\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"m\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!../babel-loader/lib/index.js??ruleSet[1].rules[0]!./punycode.es6.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"punycode\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"punycode\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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 return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _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 subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\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 return _arr;\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n 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 function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\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 if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _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(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","function bidi(node, prop) {\n var type = node.tag === 'select' ? (node.attrs.multi ? 'multi' : 'select') : node.attrs.type;\n\n // Setup: bind listeners\n if (type === 'multi') {\n node.attrs.onchange = function () {\n prop(\n [].slice.call(this.selectedOptions, function (x) {\n return x.value;\n })\n );\n };\n } else if (type === 'select') {\n node.attrs.onchange = function (e) {\n prop(this.selectedOptions[0].value);\n };\n } else if (type === 'checkbox') {\n node.attrs.onchange = function (e) {\n prop(this.checked);\n };\n } else {\n node.attrs.onchange = node.attrs.oninput = function (e) {\n prop(this.value);\n };\n }\n\n if (node.tag === 'select') {\n node.children.forEach(function (option) {\n if (option.attrs.value === prop() || option.children[0] === prop()) {\n option.attrs.selected = true;\n }\n });\n } else if (type === 'checkbox') {\n node.attrs.checked = prop();\n } else if (type === 'radio') {\n node.attrs.checked = prop() === node.attrs.value;\n } else {\n node.attrs.value = prop();\n }\n\n node.attrs.bidi = null;\n\n return node;\n}\n\nbidi.view = function (ctrl, node, prop) {\n return bidi(node, node.attrs.bidi);\n};\n\nexport default bidi;\n","import bidi from './bidi';\n\nexport default function patchMithril(global) {\n const defaultMithril = global.m;\n\n const modifiedMithril = function (comp, ...args) {\n const node = defaultMithril.apply(this, arguments);\n\n if (!node.attrs) node.attrs = {};\n\n // Allows the use of the bidi attr.\n if (node.attrs.bidi) {\n bidi(node, node.attrs.bidi);\n }\n\n return node;\n };\n\n Object.keys(defaultMithril).forEach((key) => (modifiedMithril[key] = defaultMithril[key]));\n\n global.m = modifiedMithril;\n}\n","import type Application from './Application';\n\n// Used to fix typings\nconst w = window as any;\n\n/**\n * Proxy app. Common JS is run first, at which point `window.app` is not\n * set as this is done by the namespaced JS.\n *\n * When the corrent value is set, this code would retain the reference to\n * the original invalid value.\n *\n * By using a proxy, we can ensure that our `window.app` value is always\n * up-to-date with the latest reference.\n */\nconst appProxy = new Proxy(\n {},\n {\n get(_, properties) {\n return Reflect.get(w.app, properties, w.app);\n },\n set(_, properties, value) {\n return Reflect.set(w.app, properties, value, w.app);\n },\n }\n);\n\n/**\n * The instance of Application within the common namespace.\n */\nexport default appProxy as Application;\n","// Expose jQuery, mithril and dayjs to the window browser object\nimport 'expose-loader?exposes=$,jQuery!jquery';\nimport 'expose-loader?exposes=m!mithril';\nimport 'expose-loader?exposes=dayjs!dayjs';\n\nimport 'bootstrap/js/affix';\nimport 'bootstrap/js/dropdown';\nimport 'bootstrap/js/tooltip';\nimport 'bootstrap/js/transition';\nimport 'jquery.hotkeys/jquery.hotkeys';\n\nimport relativeTime from 'dayjs/plugin/relativeTime';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\n\ndayjs.extend(relativeTime);\ndayjs.extend(localizedFormat);\n\nimport patchMithril from './utils/patchMithril';\n\npatchMithril(window);\n\nimport app from './app';\n\nexport { app };\n\nimport './utils/arrayFlatPolyfill';\n\nconst tooltipGen = $.fn.tooltip;\n\n// Remove in a future version of Flarum.\n// @ts-ignore\n$.fn.tooltip = function (options, caller) {\n // Show a warning when `$.tooltip` is used outside of the Tooltip component.\n // This functionality is deprecated and should not be used.\n if (!['DANGEROUS_tooltip_jquery_fn_deprecation_exempt'].includes(caller)) {\n console.warn(\n \"Calling `$.tooltip` is now deprecated. Please use the `<Tooltip>` component exposed by flarum/core instead. `$.tooltip` may be removed in a future version of Flarum.\\n\\nIf this component doesn't meet your requirements, please open an issue: https://github.com/flarum/core/issues/new?assignees=davwheat&labels=type/bug,needs-verification&template=bug-report.md&title=Tooltip%20component%20unsuitable%20for%20use%20case\"\n );\n }\n\n tooltipGen.bind(this)(options);\n};\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 return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import type Mithril from 'mithril';\n\n/**\n * Mithril 2 does not completely rerender the page if a route change leads to the same route\n * (or the same component handling a different route). This util calls m.route.set, forcing a reonit.\n *\n * @see https://mithril.js.org/route.html#key-parameter\n */\nexport default function setRouteWithForcedRefresh(route: string, params = null, options: Mithril.RouteOptions = {}) {\n const newOptions = { ...options };\n newOptions.state = newOptions.state || {};\n newOptions.state.key = Date.now();\n\n m.route.set(route, params, newOptions);\n}\n","import setRouteWithForcedRefresh from '../../common/utils/setRouteWithForcedRefresh';\nimport IHistory, { HistoryEntry } from '../../common/IHistory';\n\n/**\n * The `History` class keeps track and manages a stack of routes that the user\n * has navigated to in their session.\n *\n * An item can be pushed to the top of the stack using the `push` method. An\n * item in the stack has a name and a URL. The name need not be unique; if it is\n * the same as the item before it, that will be overwritten with the new URL. In\n * this way, if a user visits a discussion, and then visits another discussion,\n * popping the history stack will still take them back to the discussion list\n * rather than the previous discussion.\n */\nexport default class History implements IHistory {\n /**\n * The stack of routes that have been navigated to.\n */\n protected stack: HistoryEntry[] = [];\n\n /**\n * Get the item on the top of the stack.\n */\n getCurrent(): HistoryEntry {\n return this.stack[this.stack.length - 1];\n }\n\n /**\n * Get the previous item on the stack.\n */\n getPrevious(): HistoryEntry {\n return this.stack[this.stack.length - 2];\n }\n\n /**\n * Push an item to the top of the stack.\n *\n * @param {string} name The name of the route.\n * @param {string} title The title of the route.\n * @param {string} [url] The URL of the route. The current URL will be used if\n * not provided.\n */\n push(name: string, title: string, url = m.route.get()) {\n // If we're pushing an item with the same name as second-to-top item in the\n // stack, we will assume that the user has clicked the 'back' button in\n // their browser. In this case, we don't want to push a new item, so we will\n // pop off the top item, and then the second-to-top item will be overwritten\n // below.\n const secondTop = this.stack[this.stack.length - 2];\n if (secondTop && secondTop.name === name) {\n this.stack.pop();\n }\n\n // If we're pushing an item with the same name as the top item in the stack,\n // then we'll overwrite it with the new URL.\n const top = this.getCurrent();\n if (top && top.name === name) {\n Object.assign(top, { url, title });\n } else {\n this.stack.push({ name, url, title });\n }\n }\n\n /**\n * Check whether or not the history stack is able to be popped.\n */\n canGoBack(): boolean {\n return this.stack.length > 1;\n }\n\n /**\n * Go back to the previous route in the history stack.\n */\n back() {\n if (!this.canGoBack()) {\n return this.home();\n }\n\n this.stack.pop();\n\n m.route.set(this.getCurrent().url);\n }\n\n /**\n * Get the URL of the previous page.\n */\n backUrl(): string {\n const secondTop = this.stack[this.stack.length - 2];\n\n return secondTop.url;\n }\n\n /**\n * Go to the first route in the history stack.\n */\n home() {\n this.stack.splice(0);\n\n setRouteWithForcedRefresh('/');\n }\n}\n","/**\n * The `Pane` class manages the page's discussion list sidepane. The pane is a\n * part of the content view (DiscussionPage component), but its visibility is\n * determined by CSS classes applied to the outer page element. This class\n * manages the application of those CSS classes.\n */\nexport default class Pane {\n constructor(element) {\n /**\n * The localStorage key to store the pane's pinned state with.\n *\n * @type {String}\n * @protected\n */\n this.pinnedKey = 'panePinned';\n\n /**\n * The page element.\n *\n * @type {jQuery}\n * @protected\n */\n this.$element = $(element);\n\n /**\n * Whether or not the pane is currently pinned.\n *\n * @type {Boolean}\n * @protected\n */\n this.pinned = localStorage.getItem(this.pinnedKey) === 'true';\n\n /**\n * Whether or not the pane is currently exists.\n *\n * @type {Boolean}\n * @protected\n */\n this.active = false;\n\n /**\n * Whether or not the pane is currently showing, or is hidden off the edge\n * of the screen.\n *\n * @type {Boolean}\n * @protected\n */\n this.showing = false;\n\n this.render();\n }\n\n /**\n * Enable the pane.\n */\n enable() {\n this.active = true;\n this.render();\n }\n\n /**\n * Disable the pane.\n */\n disable() {\n this.active = false;\n this.showing = false;\n this.render();\n }\n\n /**\n * Show the pane.\n */\n show() {\n clearTimeout(this.hideTimeout);\n this.showing = true;\n this.render();\n }\n\n /**\n * Hide the pane.\n */\n hide() {\n this.showing = false;\n this.render();\n }\n\n /**\n * Begin a timeout to hide the pane, which can be cancelled by showing the\n * pane.\n */\n onmouseleave() {\n this.hideTimeout = setTimeout(this.hide.bind(this), 250);\n }\n\n /**\n * Toggle whether or not the pane is pinned.\n */\n togglePinned() {\n this.pinned = !this.pinned;\n\n localStorage.setItem(this.pinnedKey, this.pinned ? 'true' : 'false');\n\n this.render();\n }\n\n /**\n * Apply the appropriate CSS classes to the page element.\n *\n * @protected\n */\n render() {\n this.$element.toggleClass('panePinned', this.pinned).toggleClass('hasPane', this.active).toggleClass('paneShowing', this.showing);\n }\n}\n","import type Mithril from 'mithril';\n\nexport interface ComponentAttrs extends Mithril.Attributes {}\n\n/**\n * The `Component` class defines a user interface 'building block'. A component\n * generates a virtual DOM to be rendered on each redraw.\n *\n * Essentially, this is a wrapper for Mithril's components that adds several useful features:\n *\n * - In the `oninit` and `onbeforeupdate` lifecycle hooks, we store vnode attrs in `this.attrs.\n * This allows us to use attrs across components without having to pass the vnode to every single\n * method.\n * - The static `initAttrs` method allows a convenient way to provide defaults (or to otherwise modify)\n * the attrs that have been passed into a component.\n * - When the component is created in the DOM, we store its DOM element under `this.element`; this lets\n * us use jQuery to modify child DOM state from internal methods via the `this.$()` method.\n * - A convenience `component` method, which serves as an alternative to hyperscript and JSX.\n *\n * As with other Mithril components, components extending Component can be initialized\n * and nested using JSX, hyperscript, or a combination of both. The `component` method can also\n * be used.\n *\n * @example\n * return m('div', <MyComponent foo=\"bar\"><p>Hello World</p></MyComponent>);\n *\n * @example\n * return m('div', MyComponent.component({foo: 'bar'), m('p', 'Hello World!'));\n *\n * @see https://mithril.js.org/components.html\n */\nexport default abstract class Component<Attrs extends ComponentAttrs = ComponentAttrs, State = undefined> implements Mithril.ClassComponent<Attrs> {\n /**\n * The root DOM element for the component.\n */\n element!: Element;\n\n /**\n * The attributes passed into the component.\n *\n * @see https://mithril.js.org/components.html#passing-data-to-components\n */\n attrs!: Attrs;\n\n /**\n * Class component state that is persisted between redraws.\n *\n * Updating this will **not** automatically trigger a redraw, unlike\n * other frameworks.\n *\n * This is different to Vnode state, which is always an instance of your\n * class component.\n *\n * This is `undefined` by default.\n */\n state!: State;\n\n /**\n * @inheritdoc\n */\n abstract view(vnode: Mithril.Vnode<Attrs, this>): Mithril.Children;\n\n /**\n * @inheritdoc\n */\n oninit(vnode: Mithril.Vnode<Attrs, this>) {\n this.setAttrs(vnode.attrs);\n }\n\n /**\n * @inheritdoc\n */\n oncreate(vnode: Mithril.VnodeDOM<Attrs, this>) {\n this.element = vnode.dom;\n }\n\n /**\n * @inheritdoc\n */\n onbeforeupdate(vnode: Mithril.VnodeDOM<Attrs, this>) {\n this.setAttrs(vnode.attrs);\n }\n\n /**\n * @inheritdoc\n */\n onupdate(vnode: Mithril.VnodeDOM<Attrs, this>) {}\n\n /**\n * @inheritdoc\n */\n onbeforeremove(vnode: Mithril.VnodeDOM<Attrs, this>) {}\n\n /**\n * @inheritdoc\n */\n onremove(vnode: Mithril.VnodeDOM<Attrs, this>) {}\n\n /**\n * Returns a jQuery object for this component's element. If you pass in a\n * selector string, this method will return a jQuery object, using the current\n * element as its buffer.\n *\n * For example, calling `component.$('li')` will return a jQuery object\n * containing all of the `li` elements inside the DOM element of this\n * component.\n *\n * @param [selector] a jQuery-compatible selector string\n * @returns the jQuery object for the DOM node\n * @final\n */\n $(selector?: string): JQuery {\n const $element = $(this.element) as JQuery<HTMLElement>;\n\n return selector ? $element.find(selector) : $element;\n }\n\n /**\n * Convenience method to attach a component without JSX.\n * Has the same effect as calling `m(THIS_CLASS, attrs, children)`.\n *\n * @see https://mithril.js.org/hyperscript.html#mselector,-attributes,-children\n */\n static component<SAttrs extends ComponentAttrs = ComponentAttrs>(attrs: SAttrs = {} as SAttrs, children: Mithril.Children = null): Mithril.Vnode {\n const componentAttrs = { ...attrs };\n\n return m(this as any, componentAttrs, children);\n }\n\n /**\n * Saves a reference to the vnode attrs after running them through initAttrs,\n * and checking for common issues.\n */\n private setAttrs(attrs: Attrs = {} as Attrs): void {\n (this.constructor as typeof Component).initAttrs(attrs);\n\n if (attrs) {\n if ('children' in attrs) {\n throw new Error(\n `[${\n (this.constructor as typeof Component).name\n }] The \"children\" attribute of attrs should never be used. Either pass children in as the vnode children or rename the attribute`\n );\n }\n\n if ('tag' in attrs) {\n throw new Error(`[${(this.constructor as typeof Component).name}] You cannot use the \"tag\" attribute name with Mithril 2.`);\n }\n }\n\n this.attrs = attrs;\n }\n\n /**\n * Initialize the component's attrs.\n *\n * This can be used to assign default values for missing, optional attrs.\n */\n static initAttrs(attrs: unknown): void {}\n}\n","/**\n * Check if class A is the same as or a subclass of class B.\n */\nexport default function subclassOf(A, B) {\n return A && (A === B || A.prototype instanceof B);\n}\n","import subclassOf from '../../common/utils/subclassOf';\n\nexport default class PageState {\n constructor(type, data = {}) {\n this.type = type;\n this.data = data;\n }\n\n /**\n * Determine whether the page matches the given class and data.\n *\n * @param {object} type The page class to check against. Subclasses are accepted as well.\n * @param {Record<string, unknown>} data\n * @return {boolean}\n */\n matches(type, data = {}) {\n // Fail early when the page is of a different type\n if (!subclassOf(this.type, type)) return false;\n\n // Now that the type is known to be correct, we loop through the provided\n // data to see whether it matches the data in our state.\n return Object.keys(data).every((key) => this.data[key] === data[key]);\n }\n\n get(key) {\n return this.data[key];\n }\n\n set(key, value) {\n this.data[key] = value;\n }\n}\n","import type Mithril from 'mithril';\nimport app from '../app';\nimport Component from '../Component';\nimport PageState from '../states/PageState';\n\nexport interface IPageAttrs {\n key?: number;\n routeName: string;\n}\n\n/**\n * The `Page` component\n *\n * @abstract\n */\nexport default abstract class Page<CustomAttrs extends IPageAttrs = IPageAttrs, CustomState = undefined> extends Component<CustomAttrs, CustomState> {\n /**\n * A class name to apply to the body while the route is active.\n */\n protected bodyClass = '';\n\n /**\n * Whether we should scroll to the top of the page when its rendered.\n */\n protected scrollTopOnCreate = true;\n\n /**\n * Whether the browser should restore scroll state on refreshes.\n */\n protected useBrowserScrollRestoration = true;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n app.previous = app.current;\n app.current = new PageState(this.constructor, { routeName: this.attrs.routeName });\n\n app.drawer.hide();\n app.modal.close();\n }\n\n oncreate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.oncreate(vnode);\n\n if (this.bodyClass) {\n $('#app').addClass(this.bodyClass);\n }\n\n if (this.scrollTopOnCreate) {\n $(window).scrollTop(0);\n }\n\n if ('scrollRestoration' in history) {\n history.scrollRestoration = this.useBrowserScrollRestoration ? 'auto' : 'manual';\n }\n }\n\n onremove(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.onremove(vnode);\n\n if (this.bodyClass) {\n $('#app').removeClass(this.bodyClass);\n }\n }\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}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/**\n * Returns if the passed value is an object.\n *\n * In this context, \"object\" refers to **any non-primitive value**, including\n * arrays, function, maps, dates, and more.\n *\n * @example\n * isObject({}); // true\n * @example\n * isObject([]); // true\n * @example\n * isObject(function () {}); // true\n * @example\n * isObject(Object(1)); // true\n * @example\n * isObject(null); // false\n * @example\n * isObject(1); // false\n * @example\n * isObject(\"hello world\"); // false\n *\n * @see https://github.com/jashkenas/underscore/blob/943977e34e2279503528a71ddcc2dd5f96483945/underscore.js#L87-L91\n */\nexport default function isObject(obj: unknown): obj is object {\n const type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n","import isObject from './isObject';\n\nexport interface IItemObject<T> {\n content: T;\n itemName: string;\n priority: number;\n}\n\nclass Item<T> {\n content: T;\n priority: number;\n\n constructor(content: T, priority: number) {\n this.content = content;\n this.priority = priority;\n }\n}\n\n/**\n * The `ItemList` class collects items and then arranges them into an array\n * by priority.\n */\nexport default class ItemList<T> {\n /**\n * The items in the list.\n */\n protected _items: Record<string, Item<T>> = {};\n\n // TODO: [Flarum 2.0] Remove `.items` getter.\n /**\n * A **read-only copy** of items in the list.\n *\n * We don't allow adding new items to the ItemList via setting new properties,\n * nor do we allow modifying existing items directly.\n *\n * @deprecated Use {@link ItemList.toObject} instead.\n */\n get items(): DeepReadonly<Record<string, Item<T>>> {\n return new Proxy(this._items, {\n set() {\n console.warn('Modifying `ItemList.items` is not allowed.');\n return false;\n },\n });\n }\n\n /**\n * Check whether the list is empty.\n */\n isEmpty(): boolean {\n return Object.keys(this._items).length === 0;\n }\n\n /**\n * Check whether an item is present in the list.\n */\n has(key: string): boolean {\n return Object.keys(this._items).includes(key);\n }\n\n /**\n * Get the content of an item.\n */\n get(key: string): T {\n return this._items[key].content;\n }\n\n /**\n * Get the priority of an item.\n */\n getPriority(key: string): number {\n return this._items[key].priority;\n }\n\n /**\n * Add an item to the list.\n *\n * @param key A unique key for the item.\n * @param content The item's content.\n * @param priority The priority of the item. Items with a higher priority\n * will be positioned before items with a lower priority.\n */\n add(key: string, content: T, priority: number = 0): this {\n this._items[key] = new Item(content, priority);\n\n return this;\n }\n\n // TODO: [Flarum 2.0] Remove deprecated `.replace()` method.\n /**\n * Replace an item and/or priority in the list, only if it is already present.\n *\n * If `content` or `priority` are `null`, these values will not be replaced.\n *\n * If the provided `key` is not present, nothing will happen.\n *\n * @deprecated Please use the {@link ItemList.setContent} and {@link ItemList.setPriority}\n * methods to replace items and their priorities. This method will be removed in Flarum 2.0.\n *\n * @param key The key of the item in the list\n * @param content The item's new content\n * @param priority The item's new priority\n *\n * @example <caption>Replace priority and not content.</caption>\n * items.replace('myItem', null, 10);\n *\n * @example <caption>Replace content and not priority.</caption>\n * items.replace('myItem', <p>My new value.</p>);\n *\n * @example <caption>Replace content and priority.</caption>\n * items.replace('myItem', <p>My new value.</p>, 10);\n */\n replace(key: string, content: T | null = null, priority: number | null = null): this {\n if (!this.has(key)) return this;\n\n if (content !== null) {\n this._items[key].content = content;\n }\n\n if (priority !== null) {\n this._items[key].priority = priority;\n }\n\n return this;\n }\n\n /**\n * Replaces an item's content, if the provided item key exists.\n *\n * If the provided `key` is not present, an error will be thrown.\n *\n * @param key The key of the item in the list\n * @param content The item's new content\n *\n * @example <caption>Replace item content.</caption>\n * items.setContent('myItem', <p>My new value.</p>);\n *\n * @example <caption>Replace item content and priority.</caption>\n * items\n * .setContent('myItem', <p>My new value.</p>)\n * .setPriority('myItem', 10);\n *\n * @throws If the provided `key` is not present in the ItemList.\n */\n setContent(key: string, content: T): this {\n if (!this.has(key)) {\n throw new Error(`[ItemList] Cannot set content of Item. Key \\`${key}\\` is not present.`);\n }\n\n // Saves on bundle size to call the deprecated method internally\n return this.replace(key, content);\n }\n\n /**\n * Replaces an item's priority, if the provided item key exists.\n *\n * If the provided `key` is not present, an error will be thrown.\n *\n * @param key The key of the item in the list\n * @param priority The item's new priority\n *\n * @example <caption>Replace item priority.</caption>\n * items.setPriority('myItem', 10);\n *\n * @example <caption>Replace item priority and content.</caption>\n * items\n * .setPriority('myItem', 10)\n * .setContent('myItem', <p>My new value.</p>);\n *\n * @throws If the provided `key` is not present in the ItemList.\n */\n setPriority(key: string, priority: number): this {\n if (!this.has(key)) {\n throw new Error(`[ItemList] Cannot set priority of Item. Key \\`${key}\\` is not present.`);\n }\n\n this._items[key].priority = priority;\n\n return this;\n }\n\n /**\n * Remove an item from the list.\n *\n * If the provided `key` is not present, nothing will happen.\n */\n remove(key: string): this {\n delete this._items[key];\n\n return this;\n }\n\n /**\n * Merge another list's items into this one.\n *\n * The list passed to this function will overwrite items which already exist\n * with the same key.\n */\n merge(otherList: ItemList<T>): ItemList<T> {\n Object.keys(otherList._items).forEach((key) => {\n const val = otherList._items[key];\n\n if (val instanceof Item) {\n this._items[key] = val;\n }\n });\n\n return this;\n }\n\n /**\n * Convert the list into an array of item content arranged by priority.\n *\n * This **does not** preserve the original types of primitives and proxies\n * all content values to make `itemName` accessible on them.\n *\n * **NOTE:** If your ItemList holds primitive types (such as numbers, booleans\n * or strings), these will be converted to their object counterparts if you do\n * not provide `true` to this function.\n *\n * **NOTE:** Modifying any objects in the final array may also update the\n * content of the original ItemList.\n *\n * @param keepPrimitives Converts item content to objects and sets the\n * `itemName` property on them.\n *\n * @see https://github.com/flarum/core/issues/3030\n */\n toArray(keepPrimitives?: false): (T & { itemName: string })[];\n /**\n * Convert the list into an array of item content arranged by priority.\n *\n * Content values that are already objects will be proxied and have\n * `itemName` accessible on them. Primitive values will not have the\n * `itemName` property accessible.\n *\n * **NOTE:** Modifying any objects in the final array may also update the\n * content of the original ItemList.\n *\n * @param keepPrimitives Converts item content to objects and sets the\n * `itemName` property on them.\n */\n toArray(keepPrimitives: true): (T extends object ? T & Readonly<{ itemName: string }> : T)[];\n\n toArray(keepPrimitives: boolean = false): T[] | (T & Readonly<{ itemName: string }>)[] {\n const items: Item<T>[] = Object.keys(this._items).map((key, i) => {\n const item = this._items[key];\n\n if (!keepPrimitives || isObject(item.content)) {\n // Convert content to object, then proxy it\n return {\n ...item,\n content: this.createItemContentProxy(isObject(item.content) ? item.content : Object(item.content), key),\n };\n } else {\n // ...otherwise just return a clone of the item.\n return { ...item };\n }\n });\n\n return items.sort((a, b) => b.priority - a.priority).map((item) => item.content);\n }\n\n /**\n * A read-only map of all keys to their respective items in no particular order.\n *\n * We don't allow adding new items to the ItemList via setting new properties,\n * nor do we allow modifying existing items directly. You should use the\n * {@link ItemList.add}, {@link ItemList.setContent} and\n * {@link ItemList.setPriority} methods instead.\n *\n * To match the old behaviour of the `ItemList.items` property, call\n * `Object.values(ItemList.toObject())`.\n *\n * @example\n * const items = new ItemList();\n * items.add('b', 'My cool value', 20);\n * items.add('a', 'My value', 10);\n * items.toObject();\n * // {\n * // a: { content: 'My value', priority: 10, itemName: 'a' },\n * // b: { content: 'My cool value', priority: 20, itemName: 'b' },\n * // }\n */\n toObject(): DeepReadonly<Record<string, IItemObject<T>>> {\n return Object.keys(this._items).reduce((map, key) => {\n const obj = {\n content: this.get(key),\n itemName: key,\n priority: this.getPriority(key),\n };\n\n map[key] = obj;\n\n return map;\n }, {} as Record<string, IItemObject<T>>);\n }\n\n /**\n * Proxies an item's content, adding the `itemName` readonly property to it.\n *\n * @example\n * createItemContentProxy({ foo: 'bar' }, 'myItem');\n * // { foo: 'bar', itemName: 'myItem' }\n *\n * @param content The item's content (objects only)\n * @param key The item's key\n * @return Proxied content\n *\n * @internal\n */\n private createItemContentProxy<C extends object>(content: C, key: string): Readonly<C & { itemName: string }> {\n return new Proxy(content, {\n get(target, property, receiver) {\n if (property === 'itemName') return key;\n\n return Reflect.get(target, property, receiver);\n },\n set(target, property, value, receiver) {\n if (key !== null && property === 'itemName') {\n throw new Error('`itemName` property is read-only');\n }\n\n return Reflect.set(target, property, value, receiver);\n },\n }) as C & { itemName: string };\n }\n}\n","import Component from '../Component';\n\n/**\n * The `Separator` component defines a menu separator item.\n */\nclass Separator extends Component {\n view() {\n return <li className=\"Dropdown-separator\" />;\n }\n}\n\nSeparator.isListItem = true;\n\nexport default Separator;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import clsx from 'clsx';\n\n/**\n * This util exposes `clsx` to core and extensions as a re-usable utility.\n *\n * For full documentation, see `clsx` on GitHub.\n *\n * @see https://github.com/lukeed/clsx\n */\nconst classList = clsx;\n\nexport default classList;\n","import type Mithril from 'mithril';\nimport Component, { ComponentAttrs } from '../Component';\nimport Separator from '../components/Separator';\nimport classList from '../utils/classList';\n\ntype ModdedVnodeAttrs = {\n itemClassName?: string;\n key?: string;\n};\n\ntype ModdedTag = Mithril.Vnode['tag'] & {\n isListItem?: boolean;\n isActive?: (attrs: ComponentAttrs) => boolean;\n};\n\ntype ModdedVnode = Mithril.Vnode<ModdedVnodeAttrs> & { itemName?: string; itemClassName?: string; tag: ModdedTag };\n\ntype ModdedChild = ModdedVnode | string | number | boolean | null | undefined;\ntype ModdedChildArray = ModdedChildren[];\ntype ModdedChildren = ModdedChild | ModdedChildArray;\n\n/**\n * This type represents an element of a list returned by `ItemList.toArray()`,\n * coupled with some static properties used on various components.\n */\nexport type ModdedChildrenWithItemName = ModdedChildren & { itemName?: string };\n\nfunction isVnode(item: ModdedChildren): item is Mithril.Vnode {\n return typeof item === 'object' && item !== null && 'tag' in item;\n}\n\nfunction isSeparator(item: ModdedChildren): boolean {\n return isVnode(item) && item.tag === Separator;\n}\n\nfunction withoutUnnecessarySeparators(items: ModdedChildrenWithItemName[]): ModdedChildrenWithItemName[] {\n const newItems: ModdedChildrenWithItemName[] = [];\n let prevItem: ModdedChildren;\n\n items.filter(Boolean).forEach((item, i: number) => {\n if (!isSeparator(item) || (prevItem && !isSeparator(prevItem) && i !== items.length - 1)) {\n prevItem = item;\n newItems.push(item);\n }\n });\n\n return newItems;\n}\n\n/**\n * The `listItems` helper wraps an array of components in the provided tag,\n * stripping out any unnecessary `Separator` components.\n *\n * By default, this tag is an `<li>` tag, but this is customisable through the\n * second function parameter, `customTag`.\n */\nexport default function listItems<Attrs extends ComponentAttrs>(\n rawItems: ModdedChildrenWithItemName[],\n customTag: VnodeElementTag<Attrs> = 'li',\n attributes: Attrs = {} as Attrs\n): Mithril.Vnode[] {\n const items = rawItems instanceof Array ? rawItems : [rawItems];\n const Tag = customTag;\n\n return withoutUnnecessarySeparators(items).map((item) => {\n const classes = [item.itemName && `item-${item.itemName}`];\n\n if (isVnode(item) && item.tag.isListItem) {\n item.attrs = item.attrs || {};\n item.attrs.key = item.attrs.key || item.itemName;\n item.key = item.attrs.key;\n\n return item;\n }\n\n if (isVnode(item)) {\n classes.push(item.attrs?.itemClassName || item.itemClassName);\n\n if (item.tag.isActive?.(item.attrs)) {\n classes.push('active');\n }\n }\n\n const key = (isVnode(item) && item?.attrs?.key) || item.itemName;\n\n return (\n <Tag className={classList(classes)} key={key} {...attributes}>\n {item}\n </Tag>\n );\n });\n}\n","import Component from '../../common/Component';\nimport ItemList from '../../common/utils/ItemList';\nimport listItems from '../../common/helpers/listItems';\n\n/**\n * The `DiscussionHero` component displays the hero on a discussion page.\n *\n * ### attrs\n *\n * - `discussion`\n */\nexport default class DiscussionHero extends Component {\n view() {\n return (\n <header className=\"Hero DiscussionHero\">\n <div className=\"container\">\n <ul className=\"DiscussionHero-items\">{listItems(this.items().toArray())}</ul>\n </div>\n </header>\n );\n }\n\n /**\n * Build an item list for the contents of the discussion hero.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n items() {\n const items = new ItemList();\n const discussion = this.attrs.discussion;\n const badges = discussion.badges().toArray();\n\n if (badges.length) {\n items.add('badges', <ul className=\"DiscussionHero-badges badges\">{listItems(badges)}</ul>, 10);\n }\n\n items.add('title', <h1 className=\"DiscussionHero-title\">{discussion.title()}</h1>);\n\n return items;\n }\n}\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 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 return target;\n}","/**\n * The `extract` utility deletes a property from an object and returns its\n * value.\n *\n * @param object The object that owns the property\n * @param property The name of the property to extract\n * @return The value of the property\n */\nexport default function extract<T, K extends keyof T>(object: T, property: K): T[K] {\n const value = object[property];\n\n delete object[property];\n\n return value;\n}\n","/**\n * Truncate a string to the given length, appending ellipses if necessary.\n */\nexport function truncate(string: string, length: number, start: number = 0): string {\n return (start > 0 ? '...' : '') + string.substring(start, start + length) + (string.length > start + length ? '...' : '');\n}\n\n/**\n * Create a slug out of the given string depending on the selected mode.\n * Invalid characters are converted to hyphens.\n *\n * NOTE: This method does not use the comparably sophisticated transliteration\n * mechanism that is employed in the backend. Therefore, it should only be used\n * to *suggest* slugs that can be overridden by the user.\n */\nexport function slug(string: string, mode: SluggingMode = SluggingMode.ALPHANUMERIC): string {\n switch (mode) {\n case SluggingMode.UTF8:\n return (\n string\n .toLowerCase()\n // Match non-word characters (take UTF8 into consideration) and replace with a dash.\n .replace(/[^\\p{L}\\p{N}\\p{M}]/giu, '-')\n .replace(/-+/g, '-')\n .replace(/-$|^-/g, '')\n );\n\n case SluggingMode.ALPHANUMERIC:\n default:\n return string\n .toLowerCase()\n .replace(/[^a-z0-9]/gi, '-')\n .replace(/-+/g, '-')\n .replace(/-$|^-/g, '');\n }\n}\n\nenum SluggingMode {\n ALPHANUMERIC = 'alphanum',\n UTF8 = 'utf8',\n}\n\n/**\n * Strip HTML tags and quotes out of the given string, replacing them with\n * meaningful punctuation.\n */\nexport function getPlainContent(string: string): string {\n const html = string.replace(/(<\\/p>|<br>)/g, '$1 ').replace(/<img\\b[^>]*>/gi, ' ');\n\n const element = new DOMParser().parseFromString(html, 'text/html').documentElement;\n\n getPlainContent.removeSelectors.forEach((selector) => {\n const el = element.querySelectorAll(selector);\n el.forEach((e) => {\n e.remove();\n });\n });\n\n return element.innerText.replace(/\\s+/g, ' ').trim();\n}\n\n/**\n * An array of DOM selectors to remove when getting plain content.\n *\n * @type {Array}\n */\ngetPlainContent.removeSelectors = ['blockquote', 'script'];\n\n/**\n * Make a string's first character uppercase.\n */\nexport function ucfirst(string: string): string {\n return string.substr(0, 1).toUpperCase() + string.substr(1);\n}\n\n/**\n * Transform a camel case string to snake case.\n */\nexport function camelCaseToSnakeCase(str: string): string {\n return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);\n}\n\n/**\n * Generate a random string (a-z, 0-9) of a given length.\n *\n * Providing a length of less than 0 will result in an error.\n *\n * @param length Length of the random string to generate\n * @returns A random string of provided length\n */\nexport function generateRandomString(length: number): string {\n if (length < 0) throw new Error('Cannot generate a random string with length less than 0.');\n if (length === 0) return '';\n\n const arr = new Uint8Array(length / 2);\n window.crypto.getRandomValues(arr);\n\n return Array.from(arr, (dec) => {\n return dec.toString(16).padStart(2, '0');\n }).join('');\n}\n","import Component from '../Component';\nimport extract from '../utils/extract';\n\n/**\n * The link component enables both internal and external links.\n * It will return a regular HTML link for any links to external sites,\n * and it will use Mithril's m.route.Link for any internal links.\n *\n * Links will default to internal; the 'external' attr must be set to\n * `true` for the link to be external.\n */\nexport default class Link extends Component {\n view(vnode) {\n let { options = {}, ...attrs } = vnode.attrs;\n\n attrs.href ||= '';\n\n // For some reason, m.route.Link does not like vnode.text, so if present, we\n // need to convert it to text vnodes and store it in children.\n const children = vnode.children || { tag: '#', children: vnode.text };\n\n if (attrs.external) {\n return <a {...attrs}>{children}</a>;\n }\n\n // If the href URL of the link is the same as the current page path\n // we will not add a new entry to the browser history.\n // This allows us to still refresh the Page component\n // without adding endless history entries.\n if (attrs.href === m.route.get()) {\n if (!('replace' in options)) options.replace = true;\n }\n\n // Mithril 2 does not completely rerender the page if a route change leads to the same route\n // (or the same component handling a different route).\n // Here, the `force` parameter will use Mithril's key system to force a full rerender\n // see https://mithril.js.org/route.html#key-parameter\n if (extract(attrs, 'force')) {\n if (!('state' in options)) options.state = {};\n if (!('key' in options.state)) options.state.key = Date.now();\n }\n\n attrs.options = options;\n\n return <m.route.Link {...attrs}>{children}</m.route.Link>;\n }\n}\n","import type Mithril from 'mithril';\nimport type { ComponentAttrs } from '../Component';\nimport User from '../models/User';\nimport classList from '../utils/classList';\n\nexport interface AvatarAttrs extends ComponentAttrs {}\n\n/**\n * The `avatar` helper displays a user's avatar.\n *\n * @param user\n * @param attrs Attributes to apply to the avatar element\n */\nexport default function avatar(user: User | null, attrs: ComponentAttrs = {}): Mithril.Vnode {\n attrs.className = classList('Avatar', attrs.className);\n attrs.loading ??= 'lazy';\n let content: string = '';\n\n // If the `title` attribute is set to null or false, we don't want to give the\n // avatar a title. On the other hand, if it hasn't been given at all, we can\n // safely default it to the user's username.\n const hasTitle: boolean | string = attrs.title === 'undefined' || attrs.title;\n if (!hasTitle) delete attrs.title;\n\n // If a user has been passed, then we will set up an avatar using their\n // uploaded image, or the first letter of their username if they haven't\n // uploaded one.\n if (user) {\n const username = user.displayName() || '?';\n const avatarUrl = user.avatarUrl();\n\n if (hasTitle) attrs.title = attrs.title || username;\n\n if (avatarUrl) {\n return <img {...attrs} src={avatarUrl} alt=\"\" />;\n }\n\n content = username.charAt(0).toUpperCase();\n attrs.style = { '--avatar-bg': user.color() };\n }\n\n return <span {...attrs}>{content}</span>;\n}\n","import type Mithril from 'mithril';\nimport { truncate } from '../utils/string';\n\n/**\n * The `highlight` helper searches for a word phrase in a string, and wraps\n * matches with the <mark> tag.\n *\n * @param string The string to highlight.\n * @param phrase The word or words to highlight.\n * @param [length] The number of characters to truncate the string to.\n * The string will be truncated surrounding the first match.\n */\nexport default function highlight(string: string, phrase?: string | RegExp, length?: number): Mithril.Vnode<any, any> | string {\n if (!phrase && !length) return string;\n\n // Convert the word phrase into a global regular expression (if it isn't\n // already) so we can search the string for matched.\n const regexp = phrase instanceof RegExp ? phrase : new RegExp(phrase ?? '', 'gi');\n\n let highlighted = string;\n let start = 0;\n\n // If a length was given, the truncate the string surrounding the first match.\n if (length) {\n if (phrase) start = Math.max(0, string.search(regexp) - length / 2);\n\n highlighted = truncate(highlighted, length, start);\n }\n\n // Convert the string into HTML entities, then highlight all matches with\n // <mark> tags. Then we will return the result as a trusted HTML string.\n highlighted = $('<div/>').text(highlighted).html();\n\n if (phrase) highlighted = highlighted.replace(regexp, '<mark>$&</mark>');\n\n return m.trust(highlighted);\n}\n","import type Mithril from 'mithril';\nimport classList from '../utils/classList';\n\n/**\n * The `icon` helper displays an icon.\n *\n * @param fontClass The full icon class, prefix and the icon\u2019s name.\n * @param attrs Any other attributes to apply.\n */\nexport default function icon(fontClass: string, attrs: Mithril.Attributes = {}): Mithril.Vnode {\n attrs.className = classList('icon', fontClass, attrs.className);\n\n return <i aria-hidden=\"true\" {...attrs} />;\n}\n","import dayjs from 'dayjs';\n\n/**\n * The `humanTime` utility converts a date to a localized, human-readable time-\n * ago string.\n */\nexport default function humanTime(time: dayjs.ConfigType): string {\n let d = dayjs(time);\n const now = dayjs();\n\n // To prevent showing things like \"in a few seconds\" due to small offsets\n // between client and server time, we always reset future dates to the\n // current time. This will result in \"just now\" being shown instead.\n if (d.isAfter(now)) {\n d = now;\n }\n\n const day = 864e5;\n const diff = d.diff(dayjs());\n let ago: string;\n\n // If this date was more than a month ago, we'll show the name of the month\n // in the string. If it wasn't this year, we'll show the year as well.\n if (diff < -30 * day) {\n if (d.year() === dayjs().year()) {\n ago = d.format('D MMM');\n } else {\n ago = d.format('ll');\n }\n } else {\n ago = d.fromNow();\n }\n\n return ago;\n}\n","import type Mithril from 'mithril';\n\n/**\n * Extract the text nodes from a virtual element.\n */\nexport default function extractText(vdom: Mithril.Children): string {\n if (vdom instanceof Array) {\n return vdom.map((element) => extractText(element)).join('');\n } else if (typeof vdom === 'object' && vdom !== null) {\n return vdom.children ? extractText(vdom.children) : String(vdom.text);\n } else {\n return String(vdom);\n }\n}\n","import app from '../../common/app';\nimport extractText from './extractText';\n\n/**\n * The `abbreviateNumber` utility converts a number to a shorter localized form.\n *\n * @example\n * abbreviateNumber(1234);\n * // \"1.2K\"\n */\nexport default function abbreviateNumber(number: number): string {\n // TODO: translation\n if (number >= 1000000) {\n return Math.floor(number / 1000000) + extractText(app.translator.trans('core.lib.number_suffix.mega_text'));\n } else if (number >= 1000) {\n return (number / 1000).toFixed(1) + extractText(app.translator.trans('core.lib.number_suffix.kilo_text'));\n } else {\n return number.toString();\n }\n}\n","import app from '../../common/app';\nimport Component, { ComponentAttrs } from '../Component';\nimport icon from '../helpers/icon';\nimport listItems, { ModdedChildrenWithItemName } from '../helpers/listItems';\nimport extractText from '../utils/extractText';\nimport type Mithril from 'mithril';\n\nexport interface IDropdownAttrs extends ComponentAttrs {\n /** A class name to apply to the dropdown toggle button. */\n buttonClassName?: string;\n /** A class name to apply to the dropdown menu. */\n menuClassName?: string;\n /** The name of an icon to show in the dropdown toggle button. */\n icon?: string;\n /** The name of an icon to show on the right of the button. */\n caretIcon?: string;\n /** The label of the dropdown toggle button. Defaults to 'Controls'. */\n label: Mithril.Children;\n /** The label used to describe the dropdown toggle button to assistive readers. Defaults to 'Toggle dropdown menu'. */\n accessibleToggleLabel?: string;\n /** An action to take when the dropdown is collapsed. */\n onhide?: () => void;\n /** An action to take when the dropdown is opened. */\n onshow?: () => void;\n\n lazyDraw?: boolean;\n}\n\n/**\n * The `Dropdown` component displays a button which, when clicked, shows a\n * dropdown menu beneath it.\n *\n * The children will be displayed as a list inside the dropdown menu.\n */\nexport default class Dropdown<CustomAttrs extends IDropdownAttrs = IDropdownAttrs> extends Component<CustomAttrs> {\n protected showing = false;\n\n static initAttrs(attrs: IDropdownAttrs) {\n attrs.className ||= '';\n attrs.buttonClassName ||= '';\n attrs.menuClassName ||= '';\n attrs.label ||= '';\n attrs.caretIcon ??= 'fas fa-caret-down';\n attrs.accessibleToggleLabel ||= extractText(app.translator.trans('core.lib.dropdown.toggle_dropdown_accessible_label'));\n }\n\n view(vnode: Mithril.Vnode<CustomAttrs, this>) {\n const items = vnode.children ? listItems(vnode.children as ModdedChildrenWithItemName[]) : [];\n const renderItems = this.attrs.lazyDraw ? this.showing : true;\n\n return (\n <div className={'ButtonGroup Dropdown dropdown ' + this.attrs.className + ' itemCount' + items.length + (this.showing ? ' open' : '')}>\n {this.getButton(vnode.children as Mithril.ChildArray)}\n {renderItems && this.getMenu(items)}\n </div>\n );\n }\n\n oncreate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.oncreate(vnode);\n\n // When opening the dropdown menu, work out if the menu goes beyond the\n // bottom of the viewport. If it does, we will apply class to make it show\n // above the toggle button instead of below it.\n this.$().on('shown.bs.dropdown', () => {\n const { lazyDraw, onshow } = this.attrs;\n\n this.showing = true;\n\n // If using lazy drawing, redraw before calling `onshow` function\n // to make sure the menu DOM exists in case the callback tries to use it.\n if (lazyDraw) {\n m.redraw.sync();\n }\n\n if (typeof onshow === 'function') {\n onshow();\n }\n\n // If not using lazy drawing, keep previous functionality\n // of redrawing after calling onshow()\n if (!lazyDraw) {\n m.redraw();\n }\n\n const $menu = this.$('.Dropdown-menu');\n const isRight = $menu.hasClass('Dropdown-menu--right');\n\n const top = $menu.offset()?.top ?? 0;\n const height = $menu.height() ?? 0;\n const windowSrollTop = $(window).scrollTop() ?? 0;\n const windowHeight = $(window).height() ?? 0;\n\n $menu.removeClass('Dropdown-menu--top Dropdown-menu--right');\n\n $menu.toggleClass('Dropdown-menu--top', top + height > windowSrollTop + windowHeight);\n\n if (($menu.offset()?.top || 0) < 0) {\n $menu.removeClass('Dropdown-menu--top');\n }\n\n const left = $menu.offset()?.left ?? 0;\n const width = $menu.width() ?? 0;\n const windowScrollLeft = $(window).scrollLeft() ?? 0;\n const windowWidth = $(window).width() ?? 0;\n\n $menu.toggleClass('Dropdown-menu--right', isRight || left + width > windowScrollLeft + windowWidth);\n });\n\n this.$().on('hidden.bs.dropdown', () => {\n this.showing = false;\n\n if (this.attrs.onhide) {\n this.attrs.onhide();\n }\n\n m.redraw();\n });\n }\n\n /**\n * Get the template for the button.\n */\n getButton(children: Mithril.ChildArray): Mithril.Vnode<any, any> {\n return (\n <button\n className={'Dropdown-toggle ' + this.attrs.buttonClassName}\n aria-haspopup=\"menu\"\n aria-label={this.attrs.accessibleToggleLabel}\n data-toggle=\"dropdown\"\n onclick={this.attrs.onclick}\n >\n {this.getButtonContent(children)}\n </button>\n );\n }\n\n /**\n * Get the template for the button's content.\n */\n getButtonContent(children: Mithril.ChildArray): Mithril.ChildArray {\n return [\n this.attrs.icon ? icon(this.attrs.icon, { className: 'Button-icon' }) : '',\n <span className=\"Button-label\">{this.attrs.label}</span>,\n this.attrs.caretIcon ? icon(this.attrs.caretIcon, { className: 'Button-caret' }) : '',\n ];\n }\n\n getMenu(items: Mithril.Vnode<any, any>[]): Mithril.Vnode<any, any> {\n return <ul className={'Dropdown-menu dropdown-menu ' + this.attrs.menuClassName}>{items}</ul>;\n }\n}\n","import dayjs from 'dayjs';\nimport type Mithril from 'mithril';\nimport humanTimeUtil from '../utils/humanTime';\n\n/**\n * The `humanTime` helper displays a time in a human-friendly time-ago format\n * (e.g. '12 days ago'), wrapped in a <time> tag with other information about\n * the time.\n */\nexport default function humanTime(time: Date): Mithril.Vnode {\n const d = dayjs(time);\n\n const datetime = d.format();\n const full = d.format('LLLL');\n const ago = humanTimeUtil(time);\n\n return (\n <time pubdate datetime={datetime} title={full} data-humantime>\n {ago}\n </time>\n );\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport humanTime from '../../common/helpers/humanTime';\nimport icon from '../../common/helpers/icon';\n\n/**\n * Displays information about a the first or last post in a discussion.\n *\n * ### Attrs\n *\n * - `discussion`\n * - `lastPost`\n */\nexport default class TerminalPost extends Component {\n view() {\n const discussion = this.attrs.discussion;\n const lastPost = this.attrs.lastPost && discussion.replyCount();\n\n const user = discussion[lastPost ? 'lastPostedUser' : 'user']();\n const time = discussion[lastPost ? 'lastPostedAt' : 'createdAt']();\n\n return (\n <span>\n {!!lastPost && icon('fas fa-reply')}{' '}\n {app.translator.trans('core.forum.discussion_list.' + (lastPost ? 'replied' : 'started') + '_text', {\n user,\n ago: humanTime(time),\n })}\n </span>\n );\n }\n}\n","/**\n * The `SubtreeRetainer` class keeps track of a number of pieces of data,\n * comparing the values of these pieces at every iteration.\n *\n * This is useful for preventing redraws to relatively static (or huge)\n * components whose VDOM only depends on very few values, when none of them\n * have changed.\n *\n * @example\n * // Check two callbacks for changes on each update\n * this.subtree = new SubtreeRetainer(\n * () => this.attrs.post.freshness,\n * () => this.showing\n * );\n *\n * // Add more callbacks to be checked for updates\n * this.subtree.check(() => this.attrs.user.freshness);\n *\n * // In a component's onbeforeupdate() method:\n * return this.subtree.needsRebuild()\n *\n * @see https://mithril.js.org/lifecycle-methods.html#onbeforeupdate\n */\nexport default class SubtreeRetainer {\n protected callbacks: (() => any)[];\n protected data: Record<string, any>;\n\n /**\n * @param callbacks Functions returning data to keep track of.\n */\n constructor(...callbacks: (() => any)[]) {\n this.callbacks = callbacks;\n this.data = {};\n\n // Build the initial data, so it is available when calling\n // needsRebuild from the onbeforeupdate hook.\n this.needsRebuild();\n }\n\n /**\n * Return whether any data has changed since the last check.\n * If so, Mithril needs to re-diff the vnode and its children.\n */\n needsRebuild(): boolean {\n let needsRebuild = false;\n\n this.callbacks.forEach((callback, i) => {\n const result = callback();\n\n if (result !== this.data[i]) {\n this.data[i] = result;\n needsRebuild = true;\n }\n });\n\n return needsRebuild;\n }\n\n /**\n * Add another callback to be checked.\n */\n check(...callbacks: (() => any)[]): void {\n this.callbacks = this.callbacks.concat(callbacks);\n // Update the data cache when new checks are added.\n this.needsRebuild();\n }\n\n /**\n * Invalidate the subtree, forcing it to be redrawn.\n */\n invalidate(): void {\n this.data = {};\n }\n}\n","import app from '../../common/app';\nimport Component, { ComponentAttrs } from '../Component';\nimport classList from '../utils/classList';\n\nexport interface LoadingIndicatorAttrs extends ComponentAttrs {\n /**\n * Custom classes for the loading indicator's container.\n */\n className?: string;\n /**\n * Custom classes for the loading indicator's container.\n */\n containerClassName?: string;\n /**\n * Optional size for the loading indicator.\n */\n size?: 'large' | 'medium' | 'small';\n /**\n * Optional attributes to apply to the loading indicator's container.\n */\n containerAttrs?: Partial<ComponentAttrs>;\n /**\n * Display type of the spinner.\n *\n * @default 'block'\n */\n display?: 'block' | 'inline' | 'unset';\n}\n\n/**\n * The `LoadingIndicator` component displays a simple CSS-based loading spinner.\n *\n * To set a custom color, use the CSS `color` property.\n *\n * To increase spacing around the spinner, use the CSS `height` property on the\n * spinner's **container**. Setting the `display` attribute to `block` will set\n * a height of `100px` by default.\n *\n * To apply a custom size to the loading indicator, set the `--size` and\n * `--thickness` CSS custom properties on the loading indicator container.\n *\n * If you *really* want to change how this looks as part of your custom theme,\n * you can override the `border-radius` and `border` then set either a\n * background image, or use `content: \"\\<glyph>\"` (e.g. `content: \"\\f1ce\"`)\n * and `font-family: 'Font Awesome 5 Free'` to set an FA icon if you'd rather.\n *\n * ### Attrs\n *\n * - `containerClassName` Class name(s) to apply to the indicator's parent\n * - `className` Class name(s) to apply to the indicator itself\n * - `display` Determines how the spinner should be displayed (`inline`, `block` (default) or `unset`)\n * - `size` Size of the loading indicator (`small`, `medium` or `large`)\n * - `containerAttrs` Optional attrs to be applied to the container DOM element\n *\n * All other attrs will be assigned as attributes on the DOM element.\n */\nexport default class LoadingIndicator extends Component<LoadingIndicatorAttrs> {\n view() {\n const { display = 'block', size = 'medium', containerClassName, className, ...attrs } = this.attrs;\n\n const completeClassName = classList('LoadingIndicator', className);\n const completeContainerClassName = classList(\n 'LoadingIndicator-container',\n display !== 'unset' && `LoadingIndicator-container--${display}`,\n size && `LoadingIndicator-container--${size}`,\n containerClassName\n );\n\n return (\n <div\n aria-label={app.translator.trans('core.lib.loading_indicator.accessible_label')}\n role=\"status\"\n {...attrs.containerAttrs}\n data-size={size}\n className={completeContainerClassName}\n >\n <div aria-hidden=\"true\" className={completeClassName} {...attrs} />\n </div>\n );\n }\n}\n","import Component from '../Component';\n\n/**\n * The `ConfirmDocumentUnload` component can be used to register a global\n * event handler that prevents closing the browser window/tab based on the\n * return value of a given callback prop.\n *\n * ### Attrs\n *\n * - `when` - a callback returning true when the browser should prompt for\n * confirmation before closing the window/tab\n */\nexport default class ConfirmDocumentUnload extends Component {\n handler() {\n return this.attrs.when() || undefined;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.boundHandler = this.handler.bind(this);\n $(window).on('beforeunload', this.boundHandler);\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n $(window).off('beforeunload', this.boundHandler);\n }\n\n view(vnode) {\n return <>{vnode.children}</>;\n }\n}\n","import app from '../app';\n\n/**\n * Calls `console.warn` with the provided arguments, but only if the forum is in debug mode.\n *\n * This function is intended to provide warnings to extension developers about issues with\n * their extensions that may not be easily noticed when testing, such as accessibility\n * issues.\n *\n * These warnings should be hidden on production forums to ensure webmasters are not\n * inundated with do-gooders telling them they have an issue when it isn't something they\n * can fix.\n */\nexport default function fireDebugWarning(...args: Parameters<typeof console.warn>): void {\n if (!app.forum.attribute('debug')) return;\n\n console.warn(...args);\n}\n\n/**\n * Fire a Flarum deprecation warning which is shown in the JS console.\n *\n * These warnings are only shown when the forum is in debug mode, and the function exists to\n * reduce bundle size caused by multiple warnings across our JavaScript.\n *\n * @param message The message to display. (Short, but sweet, please!)\n * @param githubId The PR or Issue ID with more info in relation to this change.\n * @param [removedFrom] The version in which this feature will be completely removed. (default: 2.0)\n * @param [repo] The repo which the issue or PR is located in. (default: flarum/core)\n *\n * @see {@link fireDebugWarning}\n */\nexport function fireDeprecationWarning(message: string, githubId: string, removedFrom: string = '2.0', repo: string = 'flarum/core'): void {\n // GitHub auto-redirects between `/pull` and `/issues` for us, so using `/pull` saves 2 bytes!\n fireDebugWarning(`[Flarum ${removedFrom} Deprecation] ${message}\\n\\nSee: https://github.com/${repo}/pull/${githubId}`);\n}\n","import type Mithril from 'mithril';\nimport Component, { ComponentAttrs } from '../Component';\nimport fireDebugWarning from '../helpers/fireDebugWarning';\nimport icon from '../helpers/icon';\nimport classList from '../utils/classList';\nimport extractText from '../utils/extractText';\nimport LoadingIndicator from './LoadingIndicator';\n\nexport interface IButtonAttrs extends ComponentAttrs {\n /**\n * Class(es) of an optional icon to be rendered within the button.\n *\n * If provided, the button will gain a `has-icon` class.\n */\n icon?: string;\n /**\n * Disables button from user input.\n *\n * Default: `false`\n */\n disabled?: boolean;\n /**\n * Show a loading spinner within the button.\n *\n * If `true`, also disables the button.\n *\n * Default: `false`\n */\n loading?: boolean;\n /**\n * **DEPRECATED:** Please use the `aria-label` attribute instead. For tooltips, use\n * the `<Tooltip>` component.\n *\n * Accessible text for the button. This should always be present if the button only\n * contains an icon.\n *\n * The textual content of this attribute is passed to the DOM element as `aria-label`.\n *\n * @deprecated\n */\n title?: string | Mithril.ChildArray;\n /**\n * Accessible text for the button. This should always be present if the button only\n * contains an icon.\n *\n * The textual content of this attribute is passed to the DOM element as `aria-label`.\n */\n 'aria-label'?: string | Mithril.ChildArray;\n /**\n * Button type.\n *\n * Default: `\"button\"`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type\n */\n type?: string;\n}\n\n/**\n * The `Button` component defines an element which, when clicked, performs an\n * action.\n *\n * Other attrs will be assigned as attributes on the `<button>` element.\n *\n * Note that a Button has no default class names. This is because a Button can\n * be used to represent any generic clickable control, like a menu item. Common\n * styles can be applied by providing `className=\"Button\"` to the Button component.\n */\nexport default class Button<CustomAttrs extends IButtonAttrs = IButtonAttrs> extends Component<CustomAttrs> {\n view(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n let { type, title, 'aria-label': ariaLabel, icon: iconName, disabled, loading, className, class: _class, ...attrs } = this.attrs;\n\n // If no `type` attr provided, set to \"button\"\n type ||= 'button';\n\n // Use `title` attribute as `aria-label` if none provided\n ariaLabel ||= title;\n\n // If given a translation object, extract the text.\n if (typeof ariaLabel === 'object') {\n ariaLabel = extractText(ariaLabel);\n }\n\n if (disabled || loading) {\n delete attrs.onclick;\n }\n\n className = classList(_class, className, {\n hasIcon: iconName,\n disabled: disabled || loading,\n loading: loading,\n });\n\n const buttonAttrs = {\n disabled,\n className,\n type,\n 'aria-label': ariaLabel,\n ...attrs,\n };\n\n return <button {...buttonAttrs}>{this.getButtonContent(vnode.children)}</button>;\n }\n\n oncreate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.oncreate(vnode);\n\n const { 'aria-label': ariaLabel } = this.attrs;\n\n if (this.view === Button.prototype.view && !ariaLabel && !extractText(vnode.children) && !this.element?.getAttribute?.('aria-label')) {\n fireDebugWarning(\n '[Flarum Accessibility Warning] Button has no content and no accessible label. This means that screen-readers will not be able to interpret its meaning and just read \"Button\". Consider providing accessible text via the `aria-label` attribute. https://web.dev/button-name',\n this.element\n );\n }\n }\n\n /**\n * Get the template for the button's content.\n */\n protected getButtonContent(children: Mithril.Children): Mithril.ChildArray {\n const iconName = this.attrs.icon;\n\n return [\n iconName && icon(iconName, { className: 'Button-icon' }),\n children && <span className=\"Button-label\">{children}</span>,\n this.attrs.loading && <LoadingIndicator size=\"small\" display=\"inline\" />,\n ];\n }\n}\n","/*\n * Original Copyright GitHub, Inc. Licensed under the MIT License.\n * See license text at https://github.com/github/markdown-toolbar-element/blob/master/LICENSE.\n */\n\nexport interface SelectionRange {\n text: string;\n selectionStart: number | undefined;\n selectionEnd: number | undefined;\n}\n\nlet canInsertText: boolean | null = null;\n\nexport default function insertText(textarea: HTMLTextAreaElement, { text, selectionStart, selectionEnd }: SelectionRange) {\n const originalSelectionStart = textarea.selectionStart;\n const before = textarea.value.slice(0, originalSelectionStart);\n const after = textarea.value.slice(textarea.selectionEnd);\n\n if (canInsertText === null || canInsertText === true) {\n textarea.contentEditable = 'true';\n try {\n canInsertText = document.execCommand('insertText', false, text);\n } catch (error) {\n canInsertText = false;\n }\n textarea.contentEditable = 'false';\n }\n\n if (canInsertText && !textarea.value.slice(0, textarea.selectionStart).endsWith(text)) {\n canInsertText = false;\n }\n\n if (!canInsertText) {\n textarea.value = before + text + after;\n textarea.dispatchEvent(new CustomEvent('input', { bubbles: true, cancelable: true }));\n }\n\n if (selectionStart != null && selectionEnd != null) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n } else {\n textarea.setSelectionRange(originalSelectionStart, textarea.selectionEnd);\n }\n}\n","import getCaretCoordinates from 'textarea-caret';\nimport insertText from './insertText';\nimport ItemList from './ItemList';\nimport type EditorDriverInterface from './EditorDriverInterface';\nimport { type EditorDriverParams } from './EditorDriverInterface';\n\nexport default class BasicEditorDriver implements EditorDriverInterface {\n el: HTMLTextAreaElement;\n\n constructor(dom: HTMLElement, params: EditorDriverParams) {\n this.el = document.createElement('textarea');\n\n this.build(dom, params);\n }\n\n protected build(dom: HTMLElement, params: EditorDriverParams) {\n this.el.className = params.classNames.join(' ');\n this.el.disabled = params.disabled;\n this.el.placeholder = params.placeholder;\n this.el.value = params.value;\n\n const callInputListeners = (e: Event) => {\n params.inputListeners.forEach((listener) => {\n listener();\n });\n\n e.redraw = false;\n };\n\n this.el.oninput = (e) => {\n params.oninput(this.el.value);\n callInputListeners(e);\n };\n\n this.el.onclick = callInputListeners;\n this.el.onkeyup = callInputListeners;\n\n this.el.addEventListener('keydown', (e) => {\n this.keyHandlers(params)\n .toArray()\n .forEach((handler) => handler(e));\n });\n\n dom.append(this.el);\n }\n\n protected keyHandlers(params: EditorDriverParams) {\n const items = new ItemList<(e: KeyboardEvent) => void>();\n\n items.add('submit', function (e: KeyboardEvent) {\n if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') {\n params.onsubmit();\n }\n });\n\n return items;\n }\n\n moveCursorTo(position: number) {\n this.setSelectionRange(position, position);\n }\n\n getSelectionRange(): Array<number> {\n return [this.el.selectionStart, this.el.selectionEnd];\n }\n\n getLastNChars(n: number): string {\n const value = this.el.value;\n\n return value.slice(Math.max(0, this.el.selectionStart - n), this.el.selectionStart);\n }\n\n insertAtCursor(text: string) {\n this.insertAt(this.el.selectionStart, text);\n }\n\n insertAt(pos: number, text: string) {\n this.insertBetween(pos, pos, text);\n }\n\n insertBetween(selectionStart: number, selectionEnd: number, text: string) {\n this.setSelectionRange(selectionStart, selectionEnd);\n\n const cursorPos = selectionStart + text.length;\n insertText(this.el, { text, selectionStart: cursorPos, selectionEnd: cursorPos });\n }\n\n replaceBeforeCursor(start: number, text: string) {\n this.insertBetween(start, this.el.selectionStart, text);\n }\n\n protected setSelectionRange(start: number, end: number) {\n this.el.setSelectionRange(start, end);\n this.focus();\n }\n\n getCaretCoordinates(position: number) {\n const relCoords = getCaretCoordinates(this.el, position);\n\n return {\n top: relCoords.top - this.el.scrollTop,\n left: relCoords.left,\n };\n }\n\n // DOM Interactions\n\n /**\n * Set the disabled status of the editor.\n */\n disabled(disabled: boolean) {\n this.el.disabled = disabled;\n }\n\n /**\n * Focus on the editor.\n */\n focus() {\n this.el.focus();\n }\n\n /**\n * Destroy the editor\n */\n destroy() {\n this.el.remove();\n }\n}\n","import Component from '../Component';\nimport type Mithril from 'mithril';\nimport classList from '../utils/classList';\nimport extractText from '../utils/extractText';\n\nexport interface TooltipAttrs extends Mithril.CommonAttributes<TooltipAttrs, Tooltip> {\n /**\n * Tooltip textual content.\n *\n * String arrays, like those provided by the translator, will be flattened\n * into strings.\n */\n text: string | string[];\n /**\n * Use to manually show or hide the tooltip. `undefined` will show based on cursor events.\n *\n * Default: `undefined`.\n */\n tooltipVisible?: boolean;\n /**\n * Whether to show on focus.\n *\n * Default: `true`.\n */\n showOnFocus?: boolean;\n /**\n * Tooltip position around element.\n *\n * Default: `'top'`.\n */\n position?: 'top' | 'bottom' | 'left' | 'right';\n /**\n * Whether HTML content is allowed in the tooltip.\n *\n * **Warning:** this is a possible XSS attack vector. This option shouldn't\n * be used wherever possible, and may not work when we migrate to another\n * tooltip library. Be prepared for this to break in Flarum stable.\n *\n * Default: `false`.\n *\n * @deprecated\n */\n html?: boolean;\n /**\n * Sets the delay between a trigger state occurring and the tooltip appearing\n * on-screen.\n *\n * **Warning:** this option may be removed when switching to another tooltip\n * library. Be prepared for this to break in Flarum stable.\n *\n * Default: `0`.\n *\n * @deprecated\n */\n delay?: number;\n /**\n * Used to disable the warning for passing text to the `title` attribute.\n *\n * Tooltip text should be passed to the `text` attribute.\n */\n ignoreTitleWarning?: boolean;\n}\n\n/**\n * The `Tooltip` component is used to create a tooltip for an element. It\n * requires a single child element to be passed to it. Passing multiple\n * children or fragments will throw an error.\n *\n * You should use this for any tooltips you create to allow for backwards\n * compatibility when we switch to another tooltip library instead of\n * Bootstrap tooltips.\n *\n * If you need to pass multiple children, surround them with another element,\n * such as a `<span>` or `<div>`.\n *\n * **Note:** this component will overwrite the `title` attribute of the first\n * child you pass to it, as this is how the current tooltip system works in\n * Flarum. This shouldn't be an issue if you're using this component correctly.\n *\n * @example <caption>Basic usage</caption>\n * <Tooltip text=\"You wish!\">\n * <Button>\n * Click for free money!\n * </Button>\n * </Tooltip>\n *\n * @example <caption>Use of `position` and `showOnFocus` attrs</caption>\n * <Tooltip text=\"Woah! That's cool!\" position=\"bottom\" showOnFocus>\n * <span>3 replies</span>\n * </Tooltip>\n *\n * @example <caption>Incorrect usage</caption>\n * // This is wrong! Surround the children with a <span> or similar.\n * <Tooltip text=\"This won't work\">\n * Click\n * <a href=\"/\">here</a>\n * </Tooltip>\n */\nexport default class Tooltip extends Component<TooltipAttrs> {\n private firstChild: Mithril.Vnode<any, any> | null = null;\n private childDomNode: HTMLElement | null = null;\n\n private oldText: string = '';\n private oldVisibility: boolean | undefined;\n\n private shouldRecreateTooltip: boolean = false;\n private shouldChangeTooltipVisibility: boolean = false;\n\n view(vnode: Mithril.Vnode<TooltipAttrs, this>) {\n /**\n * We know this will be a ChildArray and not a primitive as this\n * vnode is a component, not a text or trusted HTML vnode.\n */\n const children = vnode.children as Mithril.ChildArray | undefined;\n\n // We remove these to get the remaining attrs to pass to the DOM element\n const { text, tooltipVisible, showOnFocus = true, position = 'top', ignoreTitleWarning = false, html = false, delay = 0, ...attrs } = this.attrs;\n\n if ((this.attrs as any).title && !ignoreTitleWarning) {\n console.warn(\n '`title` attribute was passed to Tooltip component. Was this intentional? Tooltip content should be passed to the `text` attr instead.'\n );\n }\n\n const realText = this.getRealText();\n\n // We need to recreate the tooltip if the text has changed\n if (realText !== this.oldText) {\n this.oldText = realText;\n this.shouldRecreateTooltip = true;\n }\n\n if (tooltipVisible !== this.oldVisibility) {\n this.oldVisibility = this.attrs.tooltipVisible;\n this.shouldChangeTooltipVisibility = true;\n }\n\n // We'll try our best to detect any issues created by devs before they cause any weird effects.\n // Throwing an error will prevent the forum rendering, but will be better at alerting devs to\n // an issue.\n\n if (typeof children === 'undefined') {\n throw new Error(\n `Tooltip component was provided with no direct child DOM element. Tooltips must contain a single direct DOM node to attach to.`\n );\n }\n\n if (children.length !== 1) {\n throw new Error(\n `Tooltip component was either passed more than one or no child node.\\n\\nPlease wrap multiple children in another element, such as a <div> or <span>.`\n );\n }\n\n const firstChild = children[0];\n\n if (typeof firstChild !== 'object' || Array.isArray(firstChild) || firstChild === null) {\n throw new Error(\n `Tooltip component was provided with no direct child DOM element. Tooltips must contain a single direct DOM node to attach to.`\n );\n }\n\n if (typeof firstChild.tag === 'string' && ['#', '[', '<'].includes(firstChild.tag)) {\n throw new Error(\n `Tooltip component with provided with a vnode with tag \"${firstChild.tag}\". This is not a DOM element, so is not a valid child element. Please wrap this vnode in another element, such as a <div> or <span>.`\n );\n }\n\n this.firstChild = firstChild;\n\n return children;\n }\n\n oncreate(vnode: Mithril.VnodeDOM<TooltipAttrs, this>) {\n super.oncreate(vnode);\n\n this.checkDomNodeChanged();\n this.recreateTooltip();\n }\n\n onupdate(vnode: Mithril.VnodeDOM<TooltipAttrs, this>) {\n super.onupdate(vnode);\n\n this.checkDomNodeChanged();\n this.recreateTooltip();\n }\n\n private recreateTooltip() {\n if (this.shouldRecreateTooltip && this.childDomNode !== null) {\n $(this.childDomNode).tooltip(\n 'destroy',\n // @ts-expect-error We don't want this arg to be part of the public API. It only exists to prevent deprecation warnings when using `$.tooltip` in this component.\n 'DANGEROUS_tooltip_jquery_fn_deprecation_exempt'\n );\n this.createTooltip();\n this.shouldRecreateTooltip = false;\n }\n\n if (this.shouldChangeTooltipVisibility) {\n this.shouldChangeTooltipVisibility = false;\n this.updateVisibility();\n }\n }\n\n private updateVisibility() {\n if (this.childDomNode === null) return;\n\n if (this.attrs.tooltipVisible === true) {\n $(this.childDomNode).tooltip(\n 'show',\n // @ts-expect-error We don't want this arg to be part of the public API. It only exists to prevent deprecation warnings when using `$.tooltip` in this component.\n 'DANGEROUS_tooltip_jquery_fn_deprecation_exempt'\n );\n } else if (this.attrs.tooltipVisible === false) {\n $(this.childDomNode).tooltip(\n 'hide',\n // @ts-expect-error We don't want this arg to be part of the public API. It only exists to prevent deprecation warnings when using `$.tooltip` in this component.\n 'DANGEROUS_tooltip_jquery_fn_deprecation_exempt'\n );\n }\n }\n\n private createTooltip() {\n if (this.childDomNode === null) return;\n\n const {\n showOnFocus = true,\n position = 'top',\n delay,\n // This will have no effect when switching to CSS tooltips\n html = false,\n tooltipVisible,\n text,\n } = this.attrs;\n\n // Fancy \"hack\" to assemble the trigger string\n const trigger = typeof tooltipVisible === 'boolean' ? 'manual' : classList('hover', [showOnFocus && 'focus']);\n\n const realText = this.getRealText();\n this.childDomNode.setAttribute('title', realText);\n this.childDomNode.setAttribute('aria-label', realText);\n\n // https://getbootstrap.com/docs/3.3/javascript/#tooltips-options\n $(this.childDomNode).tooltip(\n {\n html,\n delay,\n placement: position,\n trigger,\n },\n // @ts-expect-error We don't want this arg to be part of the public API. It only exists to prevent deprecation warnings when using `$.tooltip` in this component.\n 'DANGEROUS_tooltip_jquery_fn_deprecation_exempt'\n );\n }\n\n private getRealText(): string {\n const { text } = this.attrs;\n\n return Array.isArray(text) ? extractText(text) : text;\n }\n\n /**\n * Checks if the tooltip DOM node has changed.\n *\n * If it has, it updates `this.childDomNode` to the new node, and sets\n * `shouldRecreateTooltip` to `true`.\n */\n private checkDomNodeChanged() {\n const domNode = (this.firstChild as Mithril.VnodeDOM<any, any>).dom as HTMLElement;\n\n if (domNode && !domNode.isSameNode(this.childDomNode)) {\n this.childDomNode = domNode;\n this.shouldRecreateTooltip = true;\n }\n }\n}\n","import app from '../../common/app';\n\nimport Component from '../Component';\nimport ItemList from '../utils/ItemList';\nimport listItems from '../helpers/listItems';\nimport Button from './Button';\n\nimport BasicEditorDriver from '../utils/BasicEditorDriver';\nimport Tooltip from './Tooltip';\n\n/**\n * The `TextEditor` component displays a textarea with controls, including a\n * submit button.\n *\n * ### Attrs\n *\n * - `composer`\n * - `submitLabel`\n * - `value`\n * - `placeholder`\n * - `disabled`\n * - `preview`\n */\nexport default class TextEditor extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n /**\n * The value of the editor.\n *\n * @type {String}\n */\n this.value = this.attrs.value || '';\n\n /**\n * Whether the editor is disabled.\n */\n this.disabled = !!this.attrs.disabled;\n }\n\n view() {\n return (\n <div className=\"TextEditor\">\n <div className=\"TextEditor-editorContainer\"></div>\n\n <ul className=\"TextEditor-controls Composer-footer\">\n {listItems(this.controlItems().toArray())}\n <li className=\"TextEditor-toolbar\">{this.toolbarItems().toArray()}</li>\n </ul>\n </div>\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.attrs.composer.editor = this.buildEditor(this.$('.TextEditor-editorContainer')[0]);\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n\n const newDisabled = !!this.attrs.disabled;\n\n if (this.disabled !== newDisabled) {\n this.disabled = newDisabled;\n this.attrs.composer.editor.disabled(newDisabled);\n }\n }\n\n buildEditorParams() {\n return {\n classNames: ['FormControl', 'Composer-flexible', 'TextEditor-editor'],\n disabled: this.disabled,\n placeholder: this.attrs.placeholder || '',\n value: this.value,\n oninput: this.oninput.bind(this),\n inputListeners: [],\n onsubmit: () => {\n this.onsubmit();\n m.redraw();\n },\n };\n }\n\n buildEditor(dom) {\n return new BasicEditorDriver(dom, this.buildEditorParams());\n }\n\n /**\n * Build an item list for the text editor controls.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n controlItems() {\n const items = new ItemList();\n\n items.add(\n 'submit',\n <Button icon=\"fas fa-paper-plane\" className=\"Button Button--primary\" itemClassName=\"App-primaryControl\" onclick={this.onsubmit.bind(this)}>\n {this.attrs.submitLabel}\n </Button>\n );\n\n if (this.attrs.preview) {\n items.add(\n 'preview',\n <Tooltip text={app.translator.trans('core.forum.composer.preview_tooltip')}>\n <Button icon=\"far fa-eye\" className=\"Button Button--icon\" onclick={this.attrs.preview} />\n </Tooltip>\n );\n }\n\n return items;\n }\n\n /**\n * Build an item list for the toolbar controls.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n toolbarItems() {\n return new ItemList();\n }\n\n /**\n * Handle input into the textarea.\n *\n * @param {string} value\n */\n oninput(value) {\n this.value = value;\n\n this.attrs.onchange(this.value);\n }\n\n /**\n * Handle the submit button being clicked.\n */\n onsubmit() {\n this.attrs.onsubmit(this.value);\n }\n}\n","import Component from '../../common/Component';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport ConfirmDocumentUnload from '../../common/components/ConfirmDocumentUnload';\nimport TextEditor from '../../common/components/TextEditor';\nimport avatar from '../../common/helpers/avatar';\nimport listItems from '../../common/helpers/listItems';\nimport ItemList from '../../common/utils/ItemList';\nimport classList from '../../common/utils/classList';\n\n/**\n * The `ComposerBody` component handles the body, or the content, of the\n * composer. Subclasses should implement the `onsubmit` method and override\n * `headerTimes`.\n *\n * ### Attrs\n *\n * - `composer`\n * - `originalContent`\n * - `submitLabel`\n * - `placeholder`\n * - `user`\n * - `confirmExit`\n * - `disabled`\n *\n * @abstract\n */\nexport default class ComposerBody extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.composer = this.attrs.composer;\n\n /**\n * Whether or not the component is loading.\n *\n * @type {Boolean}\n */\n this.loading = false;\n\n // Let the composer state know to ask for confirmation under certain\n // circumstances, if the body supports / requires it and has a corresponding\n // confirmation question to ask.\n if (this.attrs.confirmExit) {\n this.composer.preventClosingWhen(() => this.hasChanges(), this.attrs.confirmExit);\n }\n\n this.composer.fields.content(this.attrs.originalContent || '');\n }\n\n view() {\n return (\n <ConfirmDocumentUnload when={this.hasChanges.bind(this)}>\n <div className={classList('ComposerBody', this.attrs.className)}>\n {avatar(this.attrs.user, { className: 'ComposerBody-avatar' })}\n <div className=\"ComposerBody-content\">\n <ul className=\"ComposerBody-header\">{listItems(this.headerItems().toArray())}</ul>\n <div className=\"ComposerBody-editor\">\n <TextEditor\n submitLabel={this.attrs.submitLabel}\n placeholder={this.attrs.placeholder}\n disabled={this.loading || this.attrs.disabled}\n composer={this.composer}\n preview={this.jumpToPreview?.bind(this)}\n onchange={this.composer.fields.content}\n onsubmit={this.onsubmit.bind(this)}\n value={this.composer.fields.content()}\n />\n </div>\n </div>\n <LoadingIndicator display=\"unset\" containerClassName={classList('ComposerBody-loading', this.loading && 'active')} size=\"large\" />\n </div>\n </ConfirmDocumentUnload>\n );\n }\n\n /**\n * Check if there is any unsaved data.\n *\n * @return {boolean}\n */\n hasChanges() {\n const content = this.composer.fields.content();\n\n return content && content !== this.attrs.originalContent;\n }\n\n /**\n * Build an item list for the composer's header.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n headerItems() {\n return new ItemList();\n }\n\n /**\n * Handle the submit event of the text editor.\n *\n * @abstract\n */\n onsubmit() {}\n\n /**\n * Stop loading.\n */\n loaded() {\n this.loading = false;\n m.redraw();\n }\n}\n","import app from '../../forum/app';\nimport ComposerBody from './ComposerBody';\nimport Button from '../../common/components/Button';\nimport Link from '../../common/components/Link';\nimport icon from '../../common/helpers/icon';\nimport extractText from '../../common/utils/extractText';\n\nfunction minimizeComposerIfFullScreen(e) {\n if (app.composer.isFullScreen()) {\n app.composer.minimize();\n e.stopPropagation();\n }\n}\n\n/**\n * The `ReplyComposer` component displays the composer content for replying to a\n * discussion.\n *\n * ### Attrs\n *\n * - All of the attrs of ComposerBody\n * - `discussion`\n */\nexport default class ReplyComposer extends ComposerBody {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.placeholder = attrs.placeholder || extractText(app.translator.trans('core.forum.composer_reply.body_placeholder'));\n attrs.submitLabel = attrs.submitLabel || app.translator.trans('core.forum.composer_reply.submit_button');\n attrs.confirmExit = attrs.confirmExit || extractText(app.translator.trans('core.forum.composer_reply.discard_confirmation'));\n }\n\n headerItems() {\n const items = super.headerItems();\n const discussion = this.attrs.discussion;\n\n items.add(\n 'title',\n <h3>\n {icon('fas fa-reply')}{' '}\n <Link href={app.route.discussion(discussion)} onclick={minimizeComposerIfFullScreen}>\n {discussion.title()}\n </Link>\n </h3>\n );\n\n return items;\n }\n\n /**\n * Jump to the preview when triggered by the text editor.\n */\n jumpToPreview(e) {\n minimizeComposerIfFullScreen(e);\n\n m.route.set(app.route.discussion(this.attrs.discussion, 'reply'));\n }\n\n /**\n * Get the data to submit to the server when the reply is saved.\n *\n * @return {Record<string, unknown>}\n */\n data() {\n return {\n content: this.composer.fields.content(),\n relationships: { discussion: this.attrs.discussion },\n };\n }\n\n onsubmit() {\n const discussion = this.attrs.discussion;\n\n this.loading = true;\n m.redraw();\n\n const data = this.data();\n\n app.store\n .createRecord('posts')\n .save(data)\n .then((post) => {\n // If we're currently viewing the discussion which this reply was made\n // in, then we can update the post stream and scroll to the post.\n if (app.viewingDiscussion(discussion)) {\n const stream = app.current.get('stream');\n stream.update().then(() => stream.goToNumber(post.number()));\n } else {\n // Otherwise, we'll create an alert message to inform the user that\n // their reply has been posted, containing a button which will\n // transition to their new post when clicked.\n let alert;\n const viewButton = (\n <Button\n className=\"Button Button--link\"\n onclick={() => {\n m.route.set(app.route.post(post));\n app.alerts.dismiss(alert);\n }}\n >\n {app.translator.trans('core.forum.composer_reply.view_button')}\n </Button>\n );\n alert = app.alerts.show(\n {\n type: 'success',\n controls: [viewButton],\n },\n app.translator.trans('core.forum.composer_reply.posted_message')\n );\n }\n\n this.composer.hide();\n }, this.loaded.bind(this));\n }\n}\n","import Component, { ComponentAttrs } from '../Component';\nimport Button from './Button';\nimport listItems from '../helpers/listItems';\nimport extract from '../utils/extract';\nimport type Mithril from 'mithril';\nimport classList from '../utils/classList';\nimport app from '../app';\nimport iconHelper from '../helpers/icon';\n\nexport interface AlertAttrs extends ComponentAttrs {\n /** The type of alert this is. Will be used to give the alert a class name of `Alert--{type}`. */\n type?: string;\n /** Title of the alert. Optional. */\n title?: Mithril.Children;\n /** Icon used next to the title. Optional. */\n icon?: string;\n /** An array of controls to show in the alert. */\n controls?: Mithril.Children;\n /** Whether or not the alert can be dismissed. */\n dismissible?: boolean;\n /** A callback to run when the alert is dismissed */\n ondismiss?: Function;\n}\n\n/**\n * The `Alert` component represents an alert box, which contains a message,\n * some controls, and may be dismissible.\n */\nexport default class Alert<T extends AlertAttrs = AlertAttrs> extends Component<T> {\n view(vnode: Mithril.VnodeDOM<T, this>) {\n const attrs = Object.assign({}, this.attrs);\n\n const type = extract(attrs, 'type');\n attrs.className = classList('Alert', `Alert--${type}`, attrs.className);\n\n const title = extract(attrs, 'title');\n const icon = extract(attrs, 'icon');\n const content = extract(attrs, 'content') || vnode.children;\n const controls = (extract(attrs, 'controls') || []) as Mithril.Vnode[];\n\n // If the alert is meant to be dismissible (which is the case by default),\n // then we will create a dismiss button to append as the final control in\n // the alert.\n const dismissible = extract(attrs, 'dismissible');\n const ondismiss = extract(attrs, 'ondismiss');\n const dismissControl: Mithril.Vnode[] = [];\n\n if (dismissible || dismissible === undefined) {\n dismissControl.push(\n <Button\n aria-label={app.translator.trans('core.lib.alert.dismiss_a11y_label')}\n icon=\"fas fa-times\"\n className=\"Button Button--link Button--icon Alert-dismiss\"\n onclick={ondismiss}\n />\n );\n }\n\n return (\n <div {...attrs}>\n {!!title && (\n <div className=\"Alert-title\">\n {!!icon && <span className=\"Alert-title-icon\">{iconHelper(icon)}</span>}\n <span className=\"Alert-title-text\">{title}</span>\n </div>\n )}\n <span className=\"Alert-body\">{content}</span>\n <ul className=\"Alert-controls\">{listItems(controls.concat(dismissControl))}</ul>\n </div>\n );\n }\n}\n","import app from '../../common/app';\nimport Component from '../Component';\nimport Alert, { AlertAttrs } from './Alert';\nimport Button from './Button';\n\nimport type Mithril from 'mithril';\nimport type ModalManagerState from '../states/ModalManagerState';\nimport type RequestError from '../utils/RequestError';\nimport type ModalManager from './ModalManager';\nimport fireDebugWarning from '../helpers/fireDebugWarning';\nimport classList from '../utils/classList';\n\nexport interface IInternalModalAttrs {\n state: ModalManagerState;\n animateShow: ModalManager['animateShow'];\n animateHide: ModalManager['animateHide'];\n}\n\nexport interface IDismissibleOptions {\n /**\n * @deprecated Check specific individual attributes instead. Will be removed in Flarum 2.0.\n */\n isDismissible: boolean;\n viaCloseButton: boolean;\n viaEscKey: boolean;\n viaBackdropClick: boolean;\n}\n\n/**\n * The `Modal` component displays a modal dialog, wrapped in a form. Subclasses\n * should implement the `className`, `title`, and `content` methods.\n */\nexport default abstract class Modal<ModalAttrs extends IInternalModalAttrs = IInternalModalAttrs, CustomState = undefined> extends Component<\n ModalAttrs,\n CustomState\n> {\n // TODO: [Flarum 2.0] remove `isDismissible` static attribute\n /**\n * Determine whether or not the modal should be dismissible via an 'x' button.\n *\n * @deprecated Use the individual `isDismissibleVia...` attributes instead and remove references to this.\n */\n static readonly isDismissible: boolean = true;\n\n /**\n * Can the model be dismissed with a close button (X)?\n *\n * If `false`, no close button is shown.\n */\n protected static readonly isDismissibleViaCloseButton: boolean = true;\n /**\n * Can the modal be dismissed by pressing the Esc key on a keyboard?\n */\n protected static readonly isDismissibleViaEscKey: boolean = true;\n /**\n * Can the modal be dismissed via a click on the backdrop.\n */\n protected static readonly isDismissibleViaBackdropClick: boolean = true;\n\n static get dismissibleOptions(): IDismissibleOptions {\n // If someone sets this to `false`, provide the same behaviour as previous versions of Flarum.\n if (!this.isDismissible) {\n return {\n isDismissible: false,\n viaCloseButton: false,\n viaEscKey: false,\n viaBackdropClick: false,\n };\n }\n\n return {\n isDismissible: true,\n viaCloseButton: this.isDismissibleViaCloseButton,\n viaEscKey: this.isDismissibleViaEscKey,\n viaBackdropClick: this.isDismissibleViaBackdropClick,\n };\n }\n\n protected loading: boolean = false;\n\n /**\n * Attributes for an alert component to show below the header.\n */\n alertAttrs: AlertAttrs | null = null;\n\n oninit(vnode: Mithril.Vnode<ModalAttrs, this>) {\n super.oninit(vnode);\n\n // TODO: [Flarum 2.0] Remove the code below.\n // This code prevents extensions which do not implement all abstract methods of this class from breaking\n // the forum frontend. Without it, function calls would would error rather than returning `undefined.`\n\n const missingMethods: string[] = [];\n\n ['className', 'title', 'content', 'onsubmit'].forEach((method) => {\n if (!(this as any)[method]) {\n (this as any)[method] = function (): void {};\n missingMethods.push(method);\n }\n });\n\n if (missingMethods.length > 0) {\n fireDebugWarning(\n `Modal \\`${this.constructor.name}\\` does not implement all abstract methods of the Modal super class. Missing methods: ${missingMethods.join(\n ', '\n )}.`\n );\n }\n }\n\n oncreate(vnode: Mithril.VnodeDOM<ModalAttrs, this>) {\n super.oncreate(vnode);\n\n this.attrs.animateShow(() => this.onready());\n }\n\n onbeforeremove(vnode: Mithril.VnodeDOM<ModalAttrs, this>): Promise<void> | void {\n super.onbeforeremove(vnode);\n\n // If the global modal state currently contains a modal,\n // we've just opened up a new one, and accordingly,\n // we don't need to show a hide animation.\n if (!this.attrs.state.modal) {\n // Here, we ensure that the animation has time to complete.\n // See https://mithril.js.org/lifecycle-methods.html#onbeforeremove\n // Bootstrap's Modal.TRANSITION_DURATION is 300 ms.\n return new Promise((resolve) => setTimeout(resolve, 300));\n }\n }\n\n /**\n * @todo split into FormModal and Modal in 2.0\n */\n view() {\n if (this.alertAttrs) {\n this.alertAttrs.dismissible = false;\n }\n\n return (\n <div className={classList('Modal modal-dialog fade', this.className())}>\n <div className=\"Modal-content\">\n {this.dismissibleOptions.viaCloseButton && (\n <div className=\"Modal-close App-backControl\">\n <Button\n icon=\"fas fa-times\"\n onclick={() => this.hide()}\n className=\"Button Button--icon Button--link\"\n aria-label={app.translator.trans('core.lib.modal.close')}\n />\n </div>\n )}\n\n <form onsubmit={this.onsubmit.bind(this)}>\n <div className=\"Modal-header\">\n <h3 className=\"App-titleControl App-titleControl--text\">{this.title()}</h3>\n </div>\n\n {!!this.alertAttrs && (\n <div className=\"Modal-alert\">\n <Alert {...this.alertAttrs} />\n </div>\n )}\n\n {this.content()}\n </form>\n </div>\n </div>\n );\n }\n\n /**\n * Get the class name to apply to the modal.\n */\n abstract className(): string;\n\n /**\n * Get the title of the modal dialog.\n */\n abstract title(): Mithril.Children;\n\n /**\n * Get the content of the modal.\n */\n abstract content(): Mithril.Children;\n\n /**\n * Handle the modal form's submit event.\n */\n onsubmit(e: SubmitEvent): void {\n // ...\n }\n\n /**\n * Callback executed when the modal is shown and ready to be interacted with.\n *\n * @remark Focuses the first input in the modal.\n */\n onready(): void {\n this.$().find('input, select, textarea').first().trigger('focus').trigger('select');\n }\n\n /**\n * Hides the modal.\n */\n hide(): void {\n this.attrs.animateHide();\n }\n\n /**\n * Sets `loading` to false and triggers a redraw.\n */\n loaded(): void {\n this.loading = false;\n m.redraw();\n }\n\n /**\n * Shows an alert describing an error returned from the API, and gives focus to\n * the first relevant field involved in the error.\n */\n onerror(error: RequestError): void {\n this.alertAttrs = error.alert;\n\n m.redraw();\n\n if (error.status === 422 && error.response?.errors) {\n this.$('form [name=' + (error.response.errors as any[])[0].source.pointer.replace('/data/attributes/', '') + ']').trigger('select');\n } else {\n this.onready();\n }\n }\n\n private get dismissibleOptions(): IDismissibleOptions {\n return (this.constructor as typeof Modal).dismissibleOptions;\n }\n}\n","import Stream from 'mithril/stream';\n\nexport default Stream;\n","import app from '../../forum/app';\nimport Modal, { IInternalModalAttrs } from '../../common/components/Modal';\nimport Button from '../../common/components/Button';\nimport extractText from '../../common/utils/extractText';\nimport Stream from '../../common/utils/Stream';\nimport Mithril from 'mithril';\nimport RequestError from '../../common/utils/RequestError';\nimport ItemList from '../../common/utils/ItemList';\n\nexport interface IForgotPasswordModalAttrs extends IInternalModalAttrs {\n email?: string;\n}\n\n/**\n * The `ForgotPasswordModal` component displays a modal which allows the user to\n * enter their email address and request a link to reset their password.\n */\nexport default class ForgotPasswordModal<CustomAttrs extends IForgotPasswordModalAttrs = IForgotPasswordModalAttrs> extends Modal<CustomAttrs> {\n /**\n * The value of the email input.\n */\n email!: Stream<string>;\n\n success: boolean = false;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.email = Stream(this.attrs.email || '');\n }\n\n className() {\n return 'ForgotPasswordModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.forum.forgot_password.title');\n }\n\n content() {\n if (this.success) {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <p className=\"helpText\">{app.translator.trans('core.forum.forgot_password.email_sent_message')}</p>\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" onclick={this.hide.bind(this)}>\n {app.translator.trans('core.forum.forgot_password.dismiss_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <p className=\"helpText\">{app.translator.trans('core.forum.forgot_password.text')}</p>\n {this.fields().toArray()}\n </div>\n </div>\n );\n }\n\n fields() {\n const items = new ItemList();\n\n const emailLabel = extractText(app.translator.trans('core.forum.forgot_password.email_placeholder'));\n\n items.add(\n 'email',\n <div className=\"Form-group\">\n <input\n className=\"FormControl\"\n name=\"email\"\n type=\"email\"\n placeholder={emailLabel}\n aria-label={emailLabel}\n bidi={this.email}\n disabled={this.loading}\n />\n </div>,\n 50\n );\n\n items.add(\n 'submit',\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.forum.forgot_password.submit_button')}\n </Button>\n </div>,\n -10\n );\n\n return items;\n }\n\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n this.loading = true;\n\n app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/forgot',\n body: this.requestParams(),\n errorHandler: this.onerror.bind(this),\n })\n .then(() => {\n this.success = true;\n this.alertAttrs = null;\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n requestParams(): Record<string, unknown> {\n const data = {\n email: this.email(),\n };\n\n return data;\n }\n\n onerror(error: RequestError) {\n if (error.status === 404 && error.alert) {\n error.alert.content = app.translator.trans('core.forum.forgot_password.not_found_message');\n }\n\n super.onerror(error);\n }\n}\n","import Component from '../../common/Component';\nimport ItemList from '../../common/utils/ItemList';\n\n/**\n * The `LogInButtons` component displays a collection of social login buttons.\n */\nexport default class LogInButtons extends Component {\n view() {\n return <div className=\"LogInButtons\">{this.items().toArray()}</div>;\n }\n\n /**\n * Build a list of LogInButton components.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n items() {\n return new ItemList();\n }\n}\n","import app from '../../forum/app';\nimport Modal, { IInternalModalAttrs } from '../../common/components/Modal';\nimport LogInModal from './LogInModal';\nimport Button from '../../common/components/Button';\nimport LogInButtons from './LogInButtons';\nimport extractText from '../../common/utils/extractText';\nimport ItemList from '../../common/utils/ItemList';\nimport Stream from '../../common/utils/Stream';\nimport type Mithril from 'mithril';\n\nexport interface ISignupModalAttrs extends IInternalModalAttrs {\n username?: string;\n email?: string;\n password?: string;\n token?: string;\n provided?: string[];\n}\n\nexport type SignupBody = {\n username: string;\n email: string;\n} & ({ token: string } | { password: string });\n\nexport default class SignUpModal<CustomAttrs extends ISignupModalAttrs = ISignupModalAttrs> extends Modal<CustomAttrs> {\n /**\n * The value of the username input.\n */\n username!: Stream<string>;\n\n /**\n * The value of the email input.\n */\n email!: Stream<string>;\n\n /**\n * The value of the password input.\n */\n password!: Stream<string>;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.username = Stream(this.attrs.username || '');\n this.email = Stream(this.attrs.email || '');\n this.password = Stream(this.attrs.password || '');\n }\n\n className() {\n return 'Modal--small SignUpModal';\n }\n\n title() {\n return app.translator.trans('core.forum.sign_up.title');\n }\n\n content() {\n return [<div className=\"Modal-body\">{this.body()}</div>, <div className=\"Modal-footer\">{this.footer()}</div>];\n }\n\n isProvided(field: string): boolean {\n return this.attrs.provided?.includes(field) ?? false;\n }\n\n body() {\n return [!this.attrs.token && <LogInButtons />, <div className=\"Form Form--centered\">{this.fields().toArray()}</div>];\n }\n\n fields() {\n const items = new ItemList();\n\n const usernameLabel = extractText(app.translator.trans('core.forum.sign_up.username_placeholder'));\n const emailLabel = extractText(app.translator.trans('core.forum.sign_up.email_placeholder'));\n const passwordLabel = extractText(app.translator.trans('core.forum.sign_up.password_placeholder'));\n\n items.add(\n 'username',\n <div className=\"Form-group\">\n <input\n className=\"FormControl\"\n name=\"username\"\n type=\"text\"\n placeholder={usernameLabel}\n aria-label={usernameLabel}\n bidi={this.username}\n disabled={this.loading || this.isProvided('username')}\n />\n </div>,\n 30\n );\n\n items.add(\n 'email',\n <div className=\"Form-group\">\n <input\n className=\"FormControl\"\n name=\"email\"\n type=\"email\"\n placeholder={emailLabel}\n aria-label={emailLabel}\n bidi={this.email}\n disabled={this.loading || this.isProvided('email')}\n />\n </div>,\n 20\n );\n\n if (!this.attrs.token) {\n items.add(\n 'password',\n <div className=\"Form-group\">\n <input\n className=\"FormControl\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"new-password\"\n placeholder={passwordLabel}\n aria-label={passwordLabel}\n bidi={this.password}\n disabled={this.loading}\n />\n </div>,\n 10\n );\n }\n\n items.add(\n 'submit',\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.forum.sign_up.submit_button')}\n </Button>\n </div>,\n -10\n );\n\n return items;\n }\n\n footer() {\n return [\n <p className=\"SignUpModal-logIn\">{app.translator.trans('core.forum.sign_up.log_in_text', { a: <a onclick={this.logIn.bind(this)} /> })}</p>,\n ];\n }\n\n /**\n * Open the log in modal, prefilling it with an email/username/password if\n * the user has entered one.\n */\n logIn() {\n const attrs = {\n identification: this.email() || this.username(),\n };\n\n app.modal.show(LogInModal, attrs);\n }\n\n onready() {\n if (this.attrs.username && !this.attrs.email) {\n this.$('[name=email]').select();\n } else {\n this.$('[name=username]').select();\n }\n }\n\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n this.loading = true;\n\n const body = this.submitData();\n\n app\n .request({\n url: app.forum.attribute('baseUrl') + '/register',\n method: 'POST',\n body,\n errorHandler: this.onerror.bind(this),\n })\n .then(() => window.location.reload(), this.loaded.bind(this));\n }\n\n /**\n * Get the data that should be submitted in the sign-up request.\n */\n submitData(): SignupBody {\n const authData = this.attrs.token ? { token: this.attrs.token } : { password: this.password() };\n\n const data = {\n username: this.username(),\n email: this.email(),\n ...authData,\n };\n\n return data;\n }\n}\n","import app from '../../forum/app';\nimport Modal, { IInternalModalAttrs } from '../../common/components/Modal';\nimport ForgotPasswordModal from './ForgotPasswordModal';\nimport SignUpModal from './SignUpModal';\nimport Button from '../../common/components/Button';\nimport LogInButtons from './LogInButtons';\nimport extractText from '../../common/utils/extractText';\nimport ItemList from '../../common/utils/ItemList';\nimport Stream from '../../common/utils/Stream';\nimport type Mithril from 'mithril';\nimport RequestError from '../../common/utils/RequestError';\nimport type { LoginParams } from '../../common/Session';\n\nexport interface ILoginModalAttrs extends IInternalModalAttrs {\n identification?: string;\n password?: string;\n remember?: boolean;\n}\n\nexport default class LogInModal<CustomAttrs extends ILoginModalAttrs = ILoginModalAttrs> extends Modal<CustomAttrs> {\n /**\n * The value of the identification input.\n */\n identification!: Stream<string>;\n /**\n * The value of the password input.\n */\n password!: Stream<string>;\n /**\n * The value of the remember me input.\n */\n remember!: Stream<boolean>;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.identification = Stream(this.attrs.identification || '');\n this.password = Stream(this.attrs.password || '');\n this.remember = Stream(!!this.attrs.remember);\n }\n\n className() {\n return 'LogInModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.forum.log_in.title');\n }\n\n content() {\n return [<div className=\"Modal-body\">{this.body()}</div>, <div className=\"Modal-footer\">{this.footer()}</div>];\n }\n\n body() {\n return [<LogInButtons />, <div className=\"Form Form--centered\">{this.fields().toArray()}</div>];\n }\n\n fields() {\n const items = new ItemList();\n\n const identificationLabel = extractText(app.translator.trans('core.forum.log_in.username_or_email_placeholder'));\n const passwordLabel = extractText(app.translator.trans('core.forum.log_in.password_placeholder'));\n\n items.add(\n 'identification',\n <div className=\"Form-group\">\n <input\n className=\"FormControl\"\n name=\"identification\"\n type=\"text\"\n placeholder={identificationLabel}\n aria-label={identificationLabel}\n bidi={this.identification}\n disabled={this.loading}\n />\n </div>,\n 30\n );\n\n items.add(\n 'password',\n <div className=\"Form-group\">\n <input\n className=\"FormControl\"\n name=\"password\"\n type=\"password\"\n autocomplete=\"current-password\"\n placeholder={passwordLabel}\n aria-label={passwordLabel}\n bidi={this.password}\n disabled={this.loading}\n />\n </div>,\n 20\n );\n\n items.add(\n 'remember',\n <div className=\"Form-group\">\n <div>\n <label className=\"checkbox\">\n <input type=\"checkbox\" bidi={this.remember} disabled={this.loading} />\n {app.translator.trans('core.forum.log_in.remember_me_label')}\n </label>\n </div>\n </div>,\n 10\n );\n\n items.add(\n 'submit',\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.forum.log_in.submit_button')}\n </Button>\n </div>,\n -10\n );\n\n return items;\n }\n\n footer() {\n return (\n <>\n <p className=\"LogInModal-forgotPassword\">\n <a onclick={this.forgotPassword.bind(this)}>{app.translator.trans('core.forum.log_in.forgot_password_link')}</a>\n </p>\n {app.forum.attribute<boolean>('allowSignUp') && (\n <p className=\"LogInModal-signUp\">{app.translator.trans('core.forum.log_in.sign_up_text', { a: <a onclick={this.signUp.bind(this)} /> })}</p>\n )}\n </>\n );\n }\n\n /**\n * Open the forgot password modal, prefilling it with an email if the user has\n * entered one.\n */\n forgotPassword() {\n const email = this.identification();\n const attrs = email.includes('@') ? { email } : undefined;\n\n app.modal.show(ForgotPasswordModal, attrs);\n }\n\n /**\n * Open the sign up modal, prefilling it with an email/username/password if\n * the user has entered one.\n */\n signUp() {\n const identification = this.identification();\n\n const attrs = {\n [identification.includes('@') ? 'email' : 'username']: identification,\n };\n\n app.modal.show(SignUpModal, attrs);\n }\n\n onready() {\n this.$('[name=' + (this.identification() ? 'password' : 'identification') + ']').trigger('select');\n }\n\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n this.loading = true;\n\n app.session.login(this.loginParams(), { errorHandler: this.onerror.bind(this) }).then(() => window.location.reload(), this.loaded.bind(this));\n }\n\n loginParams(): LoginParams {\n const data = {\n identification: this.identification(),\n password: this.password(),\n remember: this.remember(),\n };\n\n return data;\n }\n\n onerror(error: RequestError) {\n if (error.status === 401 && error.alert) {\n error.alert.content = app.translator.trans('core.forum.log_in.invalid_login_message');\n this.password('');\n }\n\n super.onerror(error);\n }\n}\n","import app from '../../forum/app';\nimport Modal, { IInternalModalAttrs } from '../../common/components/Modal';\nimport Button from '../../common/components/Button';\nimport Stream from '../../common/utils/Stream';\nimport Mithril from 'mithril';\nimport Discussion from '../../common/models/Discussion';\n\nexport interface IRenameDiscussionModalAttrs extends IInternalModalAttrs {\n discussion: Discussion;\n currentTitle: string;\n}\n\n/**\n * The 'RenameDiscussionModal' displays a modal dialog with an input to rename a discussion\n */\nexport default class RenameDiscussionModal<CustomAttrs extends IRenameDiscussionModalAttrs = IRenameDiscussionModalAttrs> extends Modal<CustomAttrs> {\n discussion!: Discussion;\n currentTitle!: string;\n newTitle!: Stream<string>;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.discussion = this.attrs.discussion;\n this.currentTitle = this.attrs.currentTitle;\n this.newTitle = Stream(this.currentTitle);\n }\n\n className() {\n return 'RenameDiscussionModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.forum.rename_discussion.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <div className=\"Form-group\">\n <input className=\"FormControl\" bidi={this.newTitle} type=\"text\" />\n </div>\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.forum.rename_discussion.submit_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n onsubmit(e: SubmitEvent): Promise<void> | void {\n e.preventDefault();\n\n this.loading = true;\n\n const title = this.newTitle();\n const currentTitle = this.currentTitle;\n\n // If the title is different to what it was before, then save it. After the\n // save has completed, update the post stream as there will be a new post\n // indicating that the discussion was renamed.\n if (title && title !== currentTitle) {\n return this.discussion\n .save({ title })\n .then(() => {\n if (app.viewingDiscussion(this.discussion)) {\n app.current.get('stream').update();\n }\n m.redraw();\n this.hide();\n })\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n } else {\n this.hide();\n }\n }\n}\n","import app from '../../forum/app';\nimport DiscussionPage from '../components/DiscussionPage';\nimport ReplyComposer from '../components/ReplyComposer';\nimport LogInModal from '../components/LogInModal';\nimport Button from '../../common/components/Button';\nimport Separator from '../../common/components/Separator';\nimport RenameDiscussionModal from '../components/RenameDiscussionModal';\nimport ItemList from '../../common/utils/ItemList';\nimport extractText from '../../common/utils/extractText';\n\n/**\n * The `DiscussionControls` utility constructs a list of buttons for a\n * discussion which perform actions on it.\n */\nexport default {\n /**\n * Get a list of controls for a discussion.\n *\n * @param {import('../../common/models/Discussion').default} discussion\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n controls(discussion, context) {\n const items = new ItemList();\n\n ['user', 'moderation', 'destructive'].forEach((section) => {\n const controls = this[section + 'Controls'](discussion, context).toArray();\n if (controls.length) {\n controls.forEach((item) => items.add(item.itemName, item));\n items.add(section + 'Separator', <Separator />);\n }\n });\n\n return items;\n },\n\n /**\n * Get controls for a discussion pertaining to the current user (e.g. reply,\n * follow).\n *\n * @param {import('../../common/models/Discussion').default} discussion\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n * @protected\n */\n userControls(discussion, context) {\n const items = new ItemList();\n\n // Only add a reply control if this is the discussion's controls dropdown\n // for the discussion page itself. We don't want it to show up for\n // discussions in the discussion list, etc.\n if (context instanceof DiscussionPage) {\n items.add(\n 'reply',\n !app.session.user || discussion.canReply() ? (\n <Button\n icon=\"fas fa-reply\"\n onclick={() => {\n // If the user is not logged in, the promise rejects, and a login modal shows up.\n // Since that's already handled, we dont need to show an error message in the console.\n return this.replyAction\n .bind(discussion)(true, false)\n .catch(() => {});\n }}\n >\n {app.translator.trans(\n app.session.user ? 'core.forum.discussion_controls.reply_button' : 'core.forum.discussion_controls.log_in_to_reply_button'\n )}\n </Button>\n ) : (\n <Button\n icon=\"fas fa-reply\"\n className=\"disabled\"\n title={extractText(app.translator.trans('core.forum.discussion_controls.cannot_reply_text'))}\n >\n {app.translator.trans('core.forum.discussion_controls.cannot_reply_button')}\n </Button>\n )\n );\n }\n\n return items;\n },\n\n /**\n * Get controls for a discussion pertaining to moderation (e.g. rename, lock).\n *\n * @param {import('../../common/models/Discussion').default} discussion\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n * @protected\n */\n moderationControls(discussion) {\n const items = new ItemList();\n\n if (discussion.canRename()) {\n items.add(\n 'rename',\n <Button icon=\"fas fa-pencil-alt\" onclick={this.renameAction.bind(discussion)}>\n {app.translator.trans('core.forum.discussion_controls.rename_button')}\n </Button>\n );\n }\n\n return items;\n },\n\n /**\n * Get controls for a discussion which are destructive (e.g. delete).\n *\n * @param {import('../../common/models/Discussion').default} discussion\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n * @protected\n */\n destructiveControls(discussion) {\n const items = new ItemList();\n\n if (!discussion.isHidden()) {\n if (discussion.canHide()) {\n items.add(\n 'hide',\n <Button icon=\"far fa-trash-alt\" onclick={this.hideAction.bind(discussion)}>\n {app.translator.trans('core.forum.discussion_controls.delete_button')}\n </Button>\n );\n }\n } else {\n if (discussion.canHide()) {\n items.add(\n 'restore',\n <Button icon=\"fas fa-reply\" onclick={this.restoreAction.bind(discussion)}>\n {app.translator.trans('core.forum.discussion_controls.restore_button')}\n </Button>\n );\n }\n\n if (discussion.canDelete()) {\n items.add(\n 'delete',\n <Button icon=\"fas fa-times\" onclick={this.deleteAction.bind(discussion)}>\n {app.translator.trans('core.forum.discussion_controls.delete_forever_button')}\n </Button>\n );\n }\n }\n\n return items;\n },\n\n /**\n * Open the reply composer for the discussion. A promise will be returned,\n * which resolves when the composer opens successfully. If the user is not\n * logged in, they will be prompted. If they don't have permission to\n * reply, the promise will be rejected.\n *\n * @param {boolean} goToLast Whether or not to scroll down to the last post if the discussion is being viewed.\n * @param {boolean} forceRefresh Whether or not to force a reload of the composer component, even if it is already open for this discussion.\n *\n * @return {Promise<void>}\n */\n replyAction(goToLast, forceRefresh) {\n return new Promise((resolve, reject) => {\n if (app.session.user) {\n if (this.canReply()) {\n if (!app.composer.composingReplyTo(this) || forceRefresh) {\n app.composer.load(ReplyComposer, {\n user: app.session.user,\n discussion: this,\n });\n }\n app.composer.show();\n\n if (goToLast && app.viewingDiscussion(this) && !app.composer.isFullScreen()) {\n app.current.get('stream').goToNumber('reply');\n }\n\n return resolve(app.composer);\n } else {\n return reject();\n }\n }\n\n app.modal.show(LogInModal);\n\n return reject();\n });\n },\n\n /**\n * Hide a discussion.\n *\n * @return {Promise<void>}\n */\n hideAction() {\n this.pushData({ attributes: { hiddenAt: new Date() }, relationships: { hiddenUser: app.session.user } });\n\n return this.save({ isHidden: true });\n },\n\n /**\n * Restore a discussion.\n *\n * @return {Promise<void>}\n */\n restoreAction() {\n this.pushData({ attributes: { hiddenAt: null }, relationships: { hiddenUser: null } });\n\n return this.save({ isHidden: false });\n },\n\n /**\n * Delete the discussion after confirming with the user.\n *\n * @return {Promise<void>}\n */\n deleteAction() {\n if (confirm(extractText(app.translator.trans('core.forum.discussion_controls.delete_confirmation')))) {\n // If we're currently viewing the discussion that was deleted, go back\n // to the previous page.\n if (app.viewingDiscussion(this)) {\n app.history.back();\n }\n\n return this.delete().then(() => app.discussions.removeDiscussion(this));\n }\n },\n\n /**\n * Rename the discussion.\n */\n renameAction() {\n return app.modal.show(RenameDiscussionModal, {\n currentTitle: this.title(),\n discussion: this,\n });\n },\n};\n","/**\n * The `slidable` utility adds touch gestures to an element so that it can be\n * slid away to reveal controls underneath, and then released to activate those\n * controls.\n *\n * It relies on the element having children with particular CSS classes.\n *\n * The function returns a record with a `reset` proeprty. This is a function\n * which reverts the slider to its original position. This should be called,\n * for example, when a controls dropdown is closed.\n *\n * @param {HTMLElement | SVGElement | Element} element\n * @return {{ reset : () => void }}\n */\nexport default function slidable(element) {\n const $element = $(element);\n const threshold = 50;\n\n let $underneathLeft;\n let $underneathRight;\n\n let startX;\n let startY;\n let couldBeSliding = false;\n let isSliding = false;\n let pos = 0;\n\n /**\n * Animate the slider to a new position.\n *\n * @param {number} newPos\n * @param {Partial<JQueryAnimationOptions>} [options]\n */\n const animatePos = (newPos, options = {}) => {\n // Since we can't animate the transform property with jQuery, we'll use a\n // bit of a workaround. We set up the animation with a step function that\n // will set the transform property, but then we animate an unused property\n // (background-position-x) with jQuery.\n options.duration ||= 'fast';\n options.step = function (x) {\n $(this).css('transform', 'translate(' + x + 'px, 0)');\n };\n\n $element.find('.Slidable-content').animate({ 'background-position-x': newPos }, options);\n };\n\n /**\n * Revert the slider to its original position.\n */\n const reset = () => {\n animatePos(0, {\n complete: function () {\n $element.removeClass('sliding');\n $underneathLeft.hide();\n $underneathRight.hide();\n isSliding = false;\n },\n });\n };\n\n $element\n .find('.Slidable-content')\n .on('touchstart', function (e) {\n // Update the references to the elements underneath the slider, provided\n // they're not disabled.\n $underneathLeft = $element.find('.Slidable-underneath--left:not(.disabled)');\n $underneathRight = $element.find('.Slidable-underneath--right:not(.disabled)');\n\n startX = e.originalEvent.targetTouches[0].clientX;\n startY = e.originalEvent.targetTouches[0].clientY;\n\n couldBeSliding = true;\n pos = 0;\n })\n\n .on('touchmove', function (e) {\n const newX = e.originalEvent.targetTouches[0].clientX;\n const newY = e.originalEvent.targetTouches[0].clientY;\n\n // Once the user moves their touch in a direction that's more up/down than\n // left/right, we'll assume they're scrolling the page. But if they do\n // move in a horizontal direction at first, then we'll lock their touch\n // into the slider.\n if (couldBeSliding && Math.abs(newX - startX) > Math.abs(newY - startY)) {\n isSliding = true;\n }\n couldBeSliding = false;\n\n if (isSliding) {\n pos = newX - startX;\n\n // If there are controls underneath the either side, then we'll show/hide\n // them depending on the slider's position. We also make the controls\n // icon get a bit bigger the further they slide.\n const toggle = ($underneath, side) => {\n if ($underneath.length) {\n const active = side === 'left' ? pos > 0 : pos < 0;\n\n if (active && $underneath.hasClass('Slidable-underneath--elastic')) {\n pos -= pos * 0.5;\n }\n $underneath.toggle(active);\n\n const scale = Math.max(0, Math.min(1, (Math.abs(pos) - 25) / threshold));\n $underneath.find('.icon').css('transform', 'scale(' + scale + ')');\n } else {\n pos = Math[side === 'left' ? 'min' : 'max'](0, pos);\n }\n };\n\n toggle($underneathLeft, 'left');\n toggle($underneathRight, 'right');\n\n $(this).css('transform', 'translate(' + pos + 'px, 0)');\n $(this).css('background-position-x', pos + 'px');\n\n $element.toggleClass('sliding', !!pos);\n\n e.preventDefault();\n }\n })\n\n .on('touchend', function () {\n // If the user releases the touch and the slider is past the threshold\n // position on either side, then we will activate the control for that\n // side. We will also animate the slider's position all the way to the\n // other side, or back to its original position, depending on whether or\n // not the side is 'elastic'.\n const activate = ($underneath) => {\n $underneath.click();\n\n if ($underneath.hasClass('Slidable-underneath--elastic')) {\n reset();\n } else {\n animatePos((pos > 0 ? 1 : -1) * $element.width());\n }\n };\n\n if ($underneathRight.length && pos < -threshold) {\n activate($underneathRight);\n } else if ($underneathLeft.length && pos > threshold) {\n activate($underneathLeft);\n } else {\n reset();\n }\n\n couldBeSliding = false;\n isSliding = false;\n });\n\n return { reset };\n}\n","const specialChars = /[.*+?^${}()|[\\]\\\\]/g;\n\n/**\n * Escapes the `RegExp` special characters in `input`.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping\n */\nexport default function escapeRegExp(input: string): string {\n return input.replace(specialChars, '\\\\$&');\n}\n","import app from '../../forum/app';\nimport Component, { ComponentAttrs } from '../../common/Component';\nimport Link from '../../common/components/Link';\nimport avatar from '../../common/helpers/avatar';\nimport listItems from '../../common/helpers/listItems';\nimport highlight from '../../common/helpers/highlight';\nimport icon from '../../common/helpers/icon';\nimport humanTime from '../../common/utils/humanTime';\nimport ItemList from '../../common/utils/ItemList';\nimport abbreviateNumber from '../../common/utils/abbreviateNumber';\nimport Dropdown from '../../common/components/Dropdown';\nimport TerminalPost from './TerminalPost';\nimport SubtreeRetainer from '../../common/utils/SubtreeRetainer';\nimport DiscussionControls from '../utils/DiscussionControls';\nimport slidable from '../utils/slidable';\nimport classList from '../../common/utils/classList';\nimport DiscussionPage from './DiscussionPage';\nimport escapeRegExp from '../../common/utils/escapeRegExp';\nimport Tooltip from '../../common/components/Tooltip';\nimport type Discussion from '../../common/models/Discussion';\nimport type Mithril from 'mithril';\nimport type { DiscussionListParams } from '../states/DiscussionListState';\n\nexport interface IDiscussionListItemAttrs extends ComponentAttrs {\n discussion: Discussion;\n params: DiscussionListParams;\n}\n\n/**\n * The `DiscussionListItem` component shows a single discussion in the\n * discussion list.\n */\nexport default class DiscussionListItem<CustomAttrs extends IDiscussionListItemAttrs = IDiscussionListItemAttrs> extends Component<CustomAttrs> {\n /**\n * Ensures that the discussion will not be redrawn\n * unless new data comes in.\n */\n subtree!: SubtreeRetainer;\n\n highlightRegExp?: RegExp;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.subtree = new SubtreeRetainer(\n () => this.attrs.discussion.freshness,\n () => {\n const time = app.session.user && app.session.user.markedAllAsReadAt();\n return time && time.getTime();\n },\n () => this.active()\n );\n }\n\n elementAttrs() {\n return {\n className: classList('DiscussionListItem', {\n active: this.active(),\n 'DiscussionListItem--hidden': this.attrs.discussion.isHidden(),\n Slidable: 'ontouchstart' in window,\n }),\n };\n }\n\n view() {\n const discussion = this.attrs.discussion;\n\n const controls = DiscussionControls.controls(discussion, this).toArray();\n const attrs = this.elementAttrs();\n\n return (\n <div {...attrs}>\n {this.controlsView(controls)}\n {this.slidableUnderneathView()}\n {this.contentView()}\n </div>\n );\n }\n\n controlsView(controls: Mithril.ChildArray): Mithril.Children {\n return (\n !!controls.length && (\n <Dropdown\n icon=\"fas fa-ellipsis-v\"\n className=\"DiscussionListItem-controls\"\n buttonClassName=\"Button Button--icon Button--flat Slidable-underneath Slidable-underneath--right\"\n accessibleToggleLabel={app.translator.trans('core.forum.discussion_controls.toggle_dropdown_accessible_label')}\n >\n {controls}\n </Dropdown>\n )\n );\n }\n\n slidableUnderneathView(): Mithril.Children {\n const discussion = this.attrs.discussion;\n const isUnread = discussion.isUnread();\n\n return (\n <span\n className={classList('Slidable-underneath Slidable-underneath--left Slidable-underneath--elastic', { disabled: !isUnread })}\n onclick={this.markAsRead.bind(this)}\n >\n {icon('fas fa-check')}\n </span>\n );\n }\n\n contentView(): Mithril.Children {\n const discussion = this.attrs.discussion;\n const isUnread = discussion.isUnread();\n const isRead = discussion.isRead();\n\n return (\n <div className={classList('DiscussionListItem-content', 'Slidable-content', { unread: isUnread, read: isRead })}>\n {this.authorAvatarView()}\n {this.badgesView()}\n {this.mainView()}\n {this.replyCountItem()}\n </div>\n );\n }\n\n authorAvatarView(): Mithril.Children {\n const discussion = this.attrs.discussion;\n const user = discussion.user();\n\n return (\n <Tooltip\n text={app.translator.trans('core.forum.discussion_list.started_text', { user, ago: humanTime(discussion.createdAt()) })}\n position=\"right\"\n >\n <Link className=\"DiscussionListItem-author\" href={user ? app.route.user(user) : '#'}>\n {avatar(user || null, { title: '' })}\n </Link>\n </Tooltip>\n );\n }\n\n badgesView(): Mithril.Children {\n const discussion = this.attrs.discussion;\n\n return <ul className=\"DiscussionListItem-badges badges\">{listItems(discussion.badges().toArray())}</ul>;\n }\n\n mainView(): Mithril.Children {\n const discussion = this.attrs.discussion;\n const jumpTo = this.getJumpTo();\n\n return (\n <Link href={app.route.discussion(discussion, jumpTo)} className=\"DiscussionListItem-main\">\n <h2 className=\"DiscussionListItem-title\">{highlight(discussion.title(), this.highlightRegExp)}</h2>\n <ul className=\"DiscussionListItem-info\">{listItems(this.infoItems().toArray())}</ul>\n </Link>\n );\n }\n\n getJumpTo() {\n const discussion = this.attrs.discussion;\n let jumpTo = 0;\n\n if (this.attrs.params.q) {\n const post = discussion.mostRelevantPost();\n if (post) {\n jumpTo = post.number();\n }\n\n const phrase = escapeRegExp(this.attrs.params.q);\n this.highlightRegExp = new RegExp(phrase + '|' + phrase.trim().replace(/\\s+/g, '|'), 'gi');\n } else {\n jumpTo = Math.min(discussion.lastPostNumber() ?? 0, (discussion.lastReadPostNumber() || 0) + 1);\n }\n\n return jumpTo;\n }\n\n oncreate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.oncreate(vnode);\n\n // If we're on a touch device, set up the discussion row to be slidable.\n // This allows the user to drag the row to either side of the screen to\n // reveal controls.\n if ('ontouchstart' in window) {\n const slidableInstance = slidable(this.element);\n\n this.$('.DiscussionListItem-controls').on('hidden.bs.dropdown', () => slidableInstance.reset());\n }\n }\n\n onbeforeupdate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.onbeforeupdate(vnode);\n\n return this.subtree.needsRebuild();\n }\n\n /**\n * Determine whether or not the discussion is currently being viewed.\n */\n active() {\n return app.current.matches(DiscussionPage, { discussion: this.attrs.discussion });\n }\n\n /**\n * Determine whether or not information about who started the discussion\n * should be displayed instead of information about the most recent reply to\n * the discussion.\n */\n showFirstPost() {\n return ['newest', 'oldest'].includes(this.attrs.params.sort ?? '');\n }\n\n /**\n * Determine whether or not the number of replies should be shown instead of\n * the number of unread posts.\n *\n * @return {boolean}\n */\n showRepliesCount() {\n return this.attrs.params.sort === 'replies';\n }\n\n /**\n * Mark the discussion as read.\n */\n markAsRead() {\n const discussion = this.attrs.discussion;\n\n if (discussion.isUnread()) {\n discussion.save({ lastReadPostNumber: discussion.lastPostNumber() });\n m.redraw();\n }\n }\n\n /**\n * Build an item list of info for a discussion listing. By default this is\n * just the first/last post indicator.\n */\n infoItems(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n if (this.attrs.params.q) {\n const post = this.attrs.discussion.mostRelevantPost() || this.attrs.discussion.firstPost();\n\n if (post && post.contentType() === 'comment') {\n const excerpt = highlight(post.contentPlain() ?? '', this.highlightRegExp, 175);\n items.add('excerpt', excerpt, -100);\n }\n } else {\n items.add('terminalPost', <TerminalPost discussion={this.attrs.discussion} lastPost={!this.showFirstPost()} />);\n }\n\n return items;\n }\n\n replyCountItem() {\n const discussion = this.attrs.discussion;\n const showUnread = !this.showRepliesCount() && discussion.isUnread();\n\n if (showUnread) {\n return (\n <button className=\"Button--ua-reset DiscussionListItem-count\" onclick={this.markAsRead.bind(this)}>\n <span aria-hidden=\"true\">{abbreviateNumber(discussion.unreadCount())}</span>\n\n <span className=\"visually-hidden\">\n {app.translator.trans('core.forum.discussion_list.unread_replies_a11y_label', { count: discussion.replyCount() })}\n </span>\n </button>\n );\n }\n\n return (\n <span className=\"DiscussionListItem-count\">\n <span aria-hidden=\"true\">{abbreviateNumber(discussion.replyCount())}</span>\n\n <span className=\"visually-hidden\">\n {app.translator.trans('core.forum.discussion_list.total_replies_a11y_label', { count: discussion.replyCount() })}\n </span>\n </span>\n );\n }\n}\n","import Component from '../Component';\n\n/**\n * The `Placeholder` component displays a muted text with some call to action,\n * usually used as an empty state.\n *\n * ### Attrs\n *\n * - `text`\n */\nexport default class Placeholder extends Component {\n view() {\n return (\n <div className=\"Placeholder\">\n <p>{this.attrs.text}</p>\n </div>\n );\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport DiscussionListItem from './DiscussionListItem';\nimport Button from '../../common/components/Button';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport Placeholder from '../../common/components/Placeholder';\nimport classList from '../../common/utils/classList';\n\n/**\n * The `DiscussionList` component displays a list of discussions.\n *\n * ### Attrs\n *\n * - `state` A DiscussionListState object that represents the discussion lists's state.\n */\nexport default class DiscussionList extends Component {\n view() {\n /**\n * @type {import('../states/DiscussionListState').default}\n */\n const state = this.attrs.state;\n\n const params = state.getParams();\n const isLoading = state.isInitialLoading() || state.isLoadingNext();\n\n let loading;\n\n if (isLoading) {\n loading = <LoadingIndicator />;\n } else if (state.hasNext()) {\n loading = (\n <Button className=\"Button\" onclick={state.loadNext.bind(state)}>\n {app.translator.trans('core.forum.discussion_list.load_more_button')}\n </Button>\n );\n }\n\n if (state.isEmpty()) {\n const text = app.translator.trans('core.forum.discussion_list.empty_text');\n return (\n <div className=\"DiscussionList\">\n <Placeholder text={text} />\n </div>\n );\n }\n\n const pageSize = state.pageSize;\n\n return (\n <div className={classList('DiscussionList', { 'DiscussionList--searchResults': state.isSearchResults() })}>\n <ul role=\"feed\" aria-busy={isLoading} className=\"DiscussionList-discussions\">\n {state.getPages().map((pg, pageNum) => {\n return pg.items.map((discussion, itemNum) => (\n <li key={discussion.id()} data-id={discussion.id()} role=\"article\" aria-setsize=\"-1\" aria-posinset={pageNum * pageSize + itemNum}>\n <DiscussionListItem discussion={discussion} params={params} />\n </li>\n ));\n })}\n </ul>\n <div className=\"DiscussionList-loadMore\">{loading}</div>\n </div>\n );\n }\n}\n","import app from '../../forum/app';\nimport DiscussionList from './DiscussionList';\nimport Component from '../../common/Component';\nimport DiscussionPage from './DiscussionPage';\n\nconst hotEdge = (e) => {\n if (e.pageX < 10) app.pane.show();\n};\n\n/**\n * The `DiscussionListPane` component displays the list of previously viewed\n * discussions in a panel that can be displayed by moving the mouse to the left\n * edge of the screen, where it can also be pinned in place.\n *\n * ### Attrs\n *\n * - `state` A DiscussionListState object that represents the discussion lists's state.\n */\nexport default class DiscussionListPane extends Component {\n view() {\n if (!this.attrs.state.hasItems()) {\n return;\n }\n\n return <aside className=\"DiscussionPage-list\">{this.enoughSpace() && <DiscussionList state={this.attrs.state} />}</aside>;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n const $list = $(vnode.dom);\n\n // When the mouse enters and leaves the discussions pane, we want to show\n // and hide the pane respectively. We also create a 10px 'hot edge' on the\n // left of the screen to activate the pane.\n const pane = app.pane;\n $list.hover(pane.show.bind(pane), pane.onmouseleave.bind(pane));\n\n $(document).on('mousemove', hotEdge);\n\n // When coming from another discussion, scroll to the previous postition\n // to prevent the discussion list jumping around.\n if (app.previous.matches(DiscussionPage)) {\n const top = app.cache.discussionListPaneScrollTop || 0;\n $list.scrollTop(top);\n } else {\n // If the discussion we are viewing is listed in the discussion list, then\n // we will make sure it is visible in the viewport \u2013 if it is not we will\n // scroll the list down to it.\n const $discussion = $list.find('.DiscussionListItem.active');\n if ($discussion.length) {\n const listTop = $list.offset().top;\n const listBottom = listTop + $list.outerHeight();\n const discussionTop = $discussion.offset().top;\n const discussionBottom = discussionTop + $discussion.outerHeight();\n\n if (discussionTop < listTop || discussionBottom > listBottom) {\n $list.scrollTop($list.scrollTop() - listTop + discussionTop);\n }\n }\n }\n }\n\n onremove(vnode) {\n app.cache.discussionListPaneScrollTop = $(vnode.dom).scrollTop();\n $(document).off('mousemove', hotEdge);\n }\n\n /**\n * Are we on a device that's larger than we consider \"mobile\"?\n *\n * @returns {boolean}\n */\n enoughSpace() {\n return !$('.App-navigation').is(':visible');\n }\n}\n","/**\n * The `ScrollListener` class sets up a listener that handles window scroll\n * events.\n */\nexport default class ScrollListener {\n /**\n * @param {(top: number) => void} callback The callback to run when the scroll position\n * changes.\n */\n constructor(callback) {\n this.callback = callback;\n this.ticking = false;\n }\n\n /**\n * On each animation frame, as long as the listener is active, run the\n * `update` method.\n *\n * @protected\n */\n loop() {\n // THROTTLE: If the callback is still running (or hasn't yet run), we ignore\n // further scroll events.\n if (this.ticking) return;\n\n // Schedule the callback to be executed soon (TM), and stop throttling once\n // the callback is done.\n requestAnimationFrame(() => {\n this.update();\n this.ticking = false;\n });\n\n this.ticking = true;\n }\n\n /**\n * Run the callback, whether there was a scroll event or not.\n */\n update() {\n this.callback(window.pageYOffset);\n }\n\n /**\n * Start listening to and handling the window's scroll position.\n */\n start() {\n if (!this.active) {\n window.addEventListener('scroll', (this.active = this.loop.bind(this)), { passive: true });\n }\n }\n\n /**\n * Stop listening to and handling the window's scroll position.\n */\n stop() {\n window.removeEventListener('scroll', this.active);\n\n this.active = null;\n }\n}\n","import Component from '../../common/Component';\nimport avatar from '../../common/helpers/avatar';\n\n/**\n * The `LoadingPost` component shows a placeholder that looks like a post,\n * indicating that the post is loading.\n */\nexport default class LoadingPost extends Component {\n view() {\n return (\n <div className=\"Post CommentPost LoadingPost\">\n <header className=\"Post-header\">\n {avatar(null, { className: 'PostUser-avatar' })}\n <div className=\"fakeText\" />\n </header>\n\n <div className=\"Post-body\">\n <div className=\"fakeText\" />\n <div className=\"fakeText\" />\n <div className=\"fakeText\" />\n </div>\n </div>\n );\n }\n}\n","import app from '../../common/app';\nimport type Mithril from 'mithril';\nimport User from '../models/User';\n\n/**\n * The `username` helper displays a user's username in a <span className=\"username\">\n * tag. If the user doesn't exist, the username will be displayed as [deleted].\n */\nexport default function username(user: User | null | undefined | false): Mithril.Vnode {\n const name = (user && user.displayName()) || app.translator.trans('core.lib.username.deleted_text');\n\n return <span className=\"username\">{name}</span>;\n}\n","/*global s9e*/\n\nimport Component from '../../common/Component';\n\n/**\n * The `ComposerPostPreview` component renders Markdown as HTML using the\n * TextFormatter library, polling a data source for changes every 50ms. This is\n * done to prevent expensive redraws on e.g. every single keystroke, while\n * still retaining the perception of live updates for the user.\n *\n * ### Attrs\n *\n * - `composer` The state of the composer controlling this preview.\n * - `className` A CSS class for the element surrounding the preview.\n * - `surround` A callback that can execute code before and after re-render, e.g. for scroll anchoring.\n */\nexport default class ComposerPostPreview extends Component {\n static initAttrs(attrs) {\n attrs.className = attrs.className || '';\n attrs.surround = attrs.surround || ((preview) => preview());\n }\n\n view() {\n return <div className={this.attrs.className} />;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n // Every 50ms, if the composer content has changed, then update the post's\n // body with a preview.\n let preview;\n const updatePreview = () => {\n // Since we're polling, the composer may have been closed in the meantime,\n // so we bail in that case.\n if (!this.attrs.composer.isVisible()) return;\n\n const content = this.attrs.composer.fields.content();\n\n if (preview === content) return;\n\n preview = content;\n\n this.attrs.surround(() => s9e.TextFormatter.preview(preview || '', vnode.dom));\n };\n updatePreview();\n\n this.updateInterval = setInterval(updatePreview, 50);\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n clearInterval(this.updateInterval);\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport avatar from '../../common/helpers/avatar';\nimport username from '../../common/helpers/username';\nimport DiscussionControls from '../utils/DiscussionControls';\nimport ComposerPostPreview from './ComposerPostPreview';\nimport listItems from '../../common/helpers/listItems';\n\n/**\n * The `ReplyPlaceholder` component displays a placeholder for a reply, which,\n * when clicked, opens the reply composer.\n *\n * ### Attrs\n *\n * - `discussion`\n */\nexport default class ReplyPlaceholder extends Component {\n view() {\n if (app.composer.composingReplyTo(this.attrs.discussion)) {\n return (\n <article className=\"Post CommentPost editing\" aria-busy=\"true\">\n <header className=\"Post-header\">\n <div className=\"PostUser\">\n <h3 className=\"PostUser-name\">\n {avatar(app.session.user, { className: 'PostUser-avatar' })}\n {username(app.session.user)}\n </h3>\n <ul className=\"PostUser-badges badges\">{listItems(app.session.user.badges().toArray())}</ul>\n </div>\n </header>\n <ComposerPostPreview className=\"Post-body\" composer={app.composer} surround={this.anchorPreview.bind(this)} />\n </article>\n );\n }\n\n const reply = () => {\n DiscussionControls.replyAction.call(this.attrs.discussion, true).catch(() => {});\n };\n\n return (\n <button className=\"Post ReplyPlaceholder\" onclick={reply}>\n <span className=\"Post-header\">\n {avatar(app.session.user, { className: 'PostUser-avatar' })} {app.translator.trans('core.forum.post_stream.reply_placeholder')}\n </span>\n </button>\n );\n }\n\n anchorPreview(preview) {\n const anchorToBottom = $(window).scrollTop() + $(window).height() >= $(document).height();\n\n preview();\n\n if (anchorToBottom) {\n $(window).scrollTop($(document).height());\n }\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport ScrollListener from '../../common/utils/ScrollListener';\nimport PostLoading from './LoadingPost';\nimport ReplyPlaceholder from './ReplyPlaceholder';\nimport Button from '../../common/components/Button';\nimport ItemList from '../../common/utils/ItemList';\n\n/**\n * The `PostStream` component displays an infinitely-scrollable wall of posts in\n * a discussion. Posts that have not loaded will be displayed as placeholders.\n *\n * ### Attrs\n *\n * - `discussion`\n * - `stream`\n * - `targetPost`\n * - `onPositionChange`\n */\nexport default class PostStream extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.discussion = this.attrs.discussion;\n this.stream = this.attrs.stream;\n\n this.scrollListener = new ScrollListener(this.onscroll.bind(this));\n }\n\n view() {\n let lastTime;\n\n const viewingEnd = this.stream.viewingEnd();\n const posts = this.stream.posts();\n const postIds = this.discussion.postIds();\n\n const postFadeIn = (vnode) => {\n $(vnode.dom).addClass('fadeIn');\n // 500 is the duration of the fadeIn CSS animation + 100ms,\n // so the animation has time to complete\n setTimeout(() => $(vnode.dom).removeClass('fadeIn'), 500);\n };\n\n const items = posts.map((post, i) => {\n let content;\n const attrs = { 'data-index': this.stream.visibleStart + i };\n\n if (post) {\n const time = post.createdAt();\n const PostComponent = app.postComponents[post.contentType()];\n content = !!PostComponent && <PostComponent post={post} />;\n\n attrs.key = 'post' + post.id();\n attrs.oncreate = postFadeIn;\n attrs['data-time'] = time.toISOString();\n attrs['data-number'] = post.number();\n attrs['data-id'] = post.id();\n attrs['data-type'] = post.contentType();\n\n // If the post before this one was more than 4 days ago, we will\n // display a 'time gap' indicating how long it has been in between\n // the posts.\n const dt = time - lastTime;\n\n if (dt > 1000 * 60 * 60 * 24 * 4) {\n content = [\n <div className=\"PostStream-timeGap\">\n <span>{app.translator.trans('core.forum.post_stream.time_lapsed_text', { period: dayjs().add(dt, 'ms').fromNow(true) })}</span>\n </div>,\n content,\n ];\n }\n\n lastTime = time;\n } else {\n attrs.key = 'post' + postIds[this.stream.visibleStart + i];\n\n content = <PostLoading />;\n }\n\n return (\n <div className=\"PostStream-item\" {...attrs}>\n {content}\n </div>\n );\n });\n\n if (!viewingEnd && posts[this.stream.visibleEnd - this.stream.visibleStart - 1]) {\n items.push(\n <div className=\"PostStream-loadMore\" key=\"loadMore\">\n <Button className=\"Button\" onclick={this.stream.loadNext.bind(this.stream)}>\n {app.translator.trans('core.forum.post_stream.load_more_button')}\n </Button>\n </div>\n );\n }\n\n // Allow extensions to add items to the end of the post stream.\n if (viewingEnd) {\n items.push(...this.endItems().toArray());\n }\n\n // If we're viewing the end of the discussion, the user can reply, and\n // is not already doing so, then show a 'write a reply' placeholder.\n if (viewingEnd && (!app.session.user || this.discussion.canReply())) {\n items.push(\n <div className=\"PostStream-item\" key=\"reply\" data-index={this.stream.count()} oncreate={postFadeIn}>\n <ReplyPlaceholder discussion={this.discussion} />\n </div>\n );\n }\n\n return (\n <div className=\"PostStream\" role=\"feed\" aria-live=\"off\" aria-busy={this.stream.pagesLoading ? 'true' : 'false'}>\n {items}\n </div>\n );\n }\n\n /**\n * @returns {ItemList<import('mithril').Children>}\n */\n endItems() {\n const items = new ItemList();\n\n return items;\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n\n this.triggerScroll();\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.triggerScroll();\n\n // This is wrapped in setTimeout due to the following Mithril issue:\n // https://github.com/lhorie/mithril.js/issues/637\n setTimeout(() => this.scrollListener.start());\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n this.scrollListener.stop();\n clearTimeout(this.calculatePositionTimeout);\n }\n\n /**\n * Start scrolling, if appropriate, to a newly-targeted post.\n */\n triggerScroll() {\n if (!this.stream.needsScroll) return;\n\n const target = this.stream.targetPost;\n this.stream.needsScroll = false;\n\n if ('number' in target) {\n this.scrollToNumber(target.number, this.stream.animateScroll);\n } else if ('index' in target) {\n this.scrollToIndex(target.index, this.stream.animateScroll, target.reply);\n }\n }\n\n /**\n *\n * @param {number} top\n */\n onscroll(top = window.pageYOffset) {\n if (this.stream.paused || this.stream.pagesLoading) return;\n\n this.updateScrubber(top);\n\n this.loadPostsIfNeeded(top);\n\n // Throttle calculation of our position (start/end numbers of posts in the\n // viewport) to 100ms.\n clearTimeout(this.calculatePositionTimeout);\n this.calculatePositionTimeout = setTimeout(this.calculatePosition.bind(this, top), 100);\n }\n\n /**\n * Check if either extreme of the post stream is in the viewport,\n * and if so, trigger loading the next/previous page.\n *\n * @param {number} top\n */\n loadPostsIfNeeded(top = window.pageYOffset) {\n const marginTop = this.getMarginTop();\n const viewportHeight = $(window).height() - marginTop;\n const viewportTop = top + marginTop;\n const loadAheadDistance = 300;\n\n if (this.stream.visibleStart > 0) {\n const $item = this.$('.PostStream-item[data-index=' + this.stream.visibleStart + ']');\n\n if ($item.length && $item.offset().top > viewportTop - loadAheadDistance) {\n this.stream.loadPrevious();\n }\n }\n\n if (this.stream.visibleEnd < this.stream.count()) {\n const $item = this.$('.PostStream-item[data-index=' + (this.stream.visibleEnd - 1) + ']');\n\n if ($item.length && $item.offset().top + $item.outerHeight(true) < viewportTop + viewportHeight + loadAheadDistance) {\n this.stream.loadNext();\n }\n }\n }\n\n updateScrubber(top = window.pageYOffset) {\n const marginTop = this.getMarginTop();\n const viewportHeight = $(window).height() - marginTop;\n const viewportTop = top + marginTop;\n\n // Before looping through all of the posts, we reset the scrollbar\n // properties to a 'default' state. These values reflect what would be\n // seen if the browser were scrolled right up to the top of the page,\n // and the viewport had a height of 0.\n const $items = this.$('.PostStream-item[data-index]');\n let visible = 0;\n let period = '';\n let indexFromViewPort = null;\n\n // Now loop through each of the items in the discussion. An 'item' is\n // either a single post or a 'gap' of one or more posts that haven't\n // been loaded yet.\n $items.each(function () {\n const $this = $(this);\n const top = $this.offset().top;\n const height = $this.outerHeight(true);\n\n // If this item is above the top of the viewport, skip to the next\n // one. If it's below the bottom of the viewport, break out of the\n // loop.\n if (top + height < viewportTop) {\n return true;\n }\n if (top > viewportTop + viewportHeight) {\n return false;\n }\n\n // Work out how many pixels of this item are visible inside the viewport.\n // Then add the proportion of this item's total height to the index.\n const visibleTop = Math.max(0, viewportTop - top);\n const visibleBottom = Math.min(height, viewportTop + viewportHeight - top);\n const visiblePost = visibleBottom - visibleTop;\n\n // We take the index of the first item that passed the previous checks.\n // It is the item that is first visible in the viewport.\n if (indexFromViewPort === null) {\n indexFromViewPort = parseFloat($this.data('index')) + visibleTop / height;\n }\n\n if (visiblePost > 0) {\n visible += visiblePost / height;\n }\n\n // If this item has a time associated with it, then set the\n // scrollbar's current period to a formatted version of this time.\n const time = $this.data('time');\n if (time) period = time;\n });\n\n // If indexFromViewPort is null, it means no posts are visible in the\n // viewport. This can happen, when drafting a long reply post. In that case\n // set the index to the last post.\n this.stream.index = indexFromViewPort !== null ? indexFromViewPort + 1 : this.stream.count();\n this.stream.visible = visible;\n if (period) this.stream.description = dayjs(period).format('MMMM YYYY');\n }\n\n /**\n * Work out which posts (by number) are currently visible in the viewport, and\n * fire an event with the information.\n */\n calculatePosition(top = window.pageYOffset) {\n const marginTop = this.getMarginTop();\n const $window = $(window);\n const viewportHeight = $window.height() - marginTop;\n const scrollTop = $window.scrollTop() + marginTop;\n const viewportTop = top + marginTop;\n\n let startNumber;\n let endNumber;\n\n this.$('.PostStream-item').each(function () {\n const $item = $(this);\n const top = $item.offset().top;\n const height = $item.outerHeight(true);\n const visibleTop = Math.max(0, viewportTop - top);\n\n const threeQuartersVisible = visibleTop / height < 0.75;\n const coversQuarterOfViewport = (height - visibleTop) / viewportHeight > 0.25;\n if (startNumber === undefined && (threeQuartersVisible || coversQuarterOfViewport)) {\n startNumber = $item.data('number');\n }\n\n if (top + height > scrollTop) {\n if (top + height < scrollTop + viewportHeight) {\n if ($item.data('number')) {\n endNumber = $item.data('number');\n }\n } else return false;\n }\n });\n\n if (startNumber) {\n this.attrs.onPositionChange(startNumber || 1, endNumber, startNumber);\n }\n }\n\n /**\n * Get the distance from the top of the viewport to the point at which we\n * would consider a post to be the first one visible.\n *\n * @return {number}\n */\n getMarginTop() {\n const headerId = app.screen() === 'phone' ? '#app-navigation' : '#header';\n\n return this.$() && $(headerId).outerHeight() + parseInt(this.$().css('margin-top'), 10);\n }\n\n /**\n * Scroll down to a certain post by number and 'flash' it.\n *\n * @param {number} number\n * @param {boolean} animate\n * @return {JQueryDeferred}\n */\n scrollToNumber(number, animate) {\n const $item = this.$(`.PostStream-item[data-number=${number}]`);\n\n return this.scrollToItem($item, animate).then(this.flashItem.bind(this, $item));\n }\n\n /**\n * Scroll down to a certain post by index.\n *\n * @param {number} index\n * @param {boolean} animate\n * @param {boolean} reply Whether or not to scroll to the reply placeholder.\n * @return {JQueryDeferred}\n */\n scrollToIndex(index, animate, reply) {\n const $item = reply ? $('.PostStream-item:last-child') : this.$(`.PostStream-item[data-index=${index}]`);\n\n this.scrollToItem($item, animate, true, reply);\n\n if (reply) {\n this.flashItem($item);\n }\n }\n\n /**\n * Scroll down to the given post.\n *\n * @param {JQuery} $item\n * @param {boolean} animate\n * @param {boolean} force Whether or not to force scrolling to the item, even\n * if it is already in the viewport.\n * @param {boolean} reply Whether or not to scroll to the reply placeholder.\n * @return {JQueryDeferred}\n */\n scrollToItem($item, animate, force, reply) {\n const $container = $('html, body').stop(true);\n const index = $item.data('index');\n\n if ($item.length) {\n const itemTop = $item.offset().top - this.getMarginTop();\n const itemBottom = $item.offset().top + $item.height();\n const scrollTop = $(document).scrollTop();\n const scrollBottom = scrollTop + $(window).height();\n\n // If the item is already in the viewport, we may not need to scroll.\n // If we're scrolling to the reply placeholder, we'll make sure its\n // bottom will line up with the top of the composer.\n if (force || itemTop < scrollTop || itemBottom > scrollBottom) {\n const top = reply ? itemBottom - $(window).height() + app.composer.computedHeight() : $item.is(':first-child') ? 0 : itemTop;\n\n if (!animate) {\n $container.scrollTop(top);\n } else if (top !== scrollTop) {\n $container.animate({ scrollTop: top }, 'fast');\n }\n }\n }\n\n const updateScrubberHeight = () => {\n // We manually set the index because we want to display the index of the\n // exact post we've scrolled to, not just that of the first post within viewport.\n this.updateScrubber();\n if (index !== undefined) this.stream.index = index + 1;\n };\n\n // If we don't update this before the scroll, the scrubber will start\n // at the top, and animate down, which can be confusing\n updateScrubberHeight();\n this.stream.forceUpdateScrubber = true;\n\n return Promise.all([$container.promise(), this.stream.loadPromise]).then(() => {\n m.redraw.sync();\n\n // Rendering post contents will probably throw off our position.\n // To counter this, we'll scroll either:\n // - To the reply placeholder (aligned with composer top)\n // - To the top of the page if we're on the first post\n // - To the top of a post (if that post exists)\n // If the post does not currently exist, it's probably\n // outside of the range we loaded in, so we won't adjust anything,\n // as it will soon be rendered by the \"load more\" system.\n let itemOffset;\n if (reply) {\n const $placeholder = $('.PostStream-item:last-child');\n $(window).scrollTop($placeholder.offset().top + $placeholder.height() - $(window).height() + app.composer.computedHeight());\n } else if (index === 0) {\n $(window).scrollTop(0);\n } else if ((itemOffset = $(`.PostStream-item[data-index=${index}]`).offset())) {\n $(window).scrollTop(itemOffset.top - this.getMarginTop());\n }\n\n // We want to adjust this again after posts have been loaded in\n // and position adjusted so that the scrubber's height is accurate.\n updateScrubberHeight();\n\n this.calculatePosition();\n this.stream.paused = false;\n // Check if we need to load more posts after scrolling.\n this.loadPostsIfNeeded();\n });\n }\n\n /**\n * 'Flash' the given post, drawing the user's attention to it.\n *\n * @param {JQuery} $item\n */\n flashItem($item) {\n // This might execute before the fadeIn class has been removed in PostStreamItem's\n // oncreate, so we remove it just to be safe and avoid a double animation.\n $item.removeClass('fadeIn');\n $item.addClass('flash').on('animationend webkitAnimationEnd', (e) => {\n $item.removeClass('flash');\n });\n }\n}\n","import app from '../../common/app';\n\n/**\n * The `formatNumber` utility localizes a number into a string with the\n * appropriate punctuation based on the provided locale otherwise will default to the users locale.\n *\n * @example\n * formatNumber(1234);\n * // 1,234\n */\nexport default function formatNumber(number: number, locale: string = app.data.locale): string {\n return new Intl.NumberFormat(locale).format(number);\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport icon from '../../common/helpers/icon';\nimport formatNumber from '../../common/utils/formatNumber';\nimport ScrollListener from '../../common/utils/ScrollListener';\n\n/**\n * The `PostStreamScrubber` component displays a scrubber which can be used to\n * navigate/scrub through a post stream.\n *\n * ### Attrs\n *\n * - `stream`\n * - `className`\n */\nexport default class PostStreamScrubber extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.stream = this.attrs.stream;\n this.handlers = {};\n\n this.scrollListener = new ScrollListener(this.updateScrubberValues.bind(this, { fromScroll: true, forceHeightChange: true }));\n }\n\n view() {\n const count = this.stream.count();\n\n // Index is left blank for performance reasons, it is filled in in updateScubberValues\n const viewing = app.translator.trans('core.forum.post_scrubber.viewing_text', {\n count,\n index: <span className=\"Scrubber-index\"></span>,\n formattedCount: <span className=\"Scrubber-count\">{formatNumber(count)}</span>,\n });\n\n const unreadCount = this.stream.discussion.unreadCount();\n const unreadPercent = count ? Math.min(count - this.stream.index, unreadCount) / count : 0;\n\n function styleUnread(vnode) {\n const $element = $(vnode.dom);\n const newStyle = {\n top: 100 - unreadPercent * 100 + '%',\n height: unreadPercent * 100 + '%',\n opacity: unreadPercent ? 1 : 0,\n };\n\n if (vnode.state.oldStyle) {\n $element.stop(true).css(vnode.state.oldStyle).animate(newStyle);\n } else {\n $element.css(newStyle);\n }\n\n vnode.state.oldStyle = newStyle;\n }\n const classNames = ['PostStreamScrubber', 'Dropdown'];\n if (this.attrs.className) classNames.push(this.attrs.className);\n\n return (\n <div className={classNames.join(' ')}>\n <button className=\"Button Dropdown-toggle\" data-toggle=\"dropdown\">\n {viewing} {icon('fas fa-sort')}\n </button>\n\n <div className=\"Dropdown-menu dropdown-menu\">\n <div className=\"Scrubber\">\n <a className=\"Scrubber-first\" onclick={this.goToFirst.bind(this)}>\n {icon('fas fa-angle-double-up')} {app.translator.trans('core.forum.post_scrubber.original_post_link')}\n </a>\n\n <div className=\"Scrubber-scrollbar\">\n <div className=\"Scrubber-before\" />\n <div className=\"Scrubber-handle\">\n <div className=\"Scrubber-bar\" />\n <div className=\"Scrubber-info\">\n <strong>{viewing}</strong>\n <span className=\"Scrubber-description\"></span>\n </div>\n </div>\n <div className=\"Scrubber-after\" />\n\n <div className=\"Scrubber-unread\" oncreate={styleUnread} onupdate={styleUnread}>\n {app.translator.trans('core.forum.post_scrubber.unread_text', { count: unreadCount })}\n </div>\n </div>\n\n <a className=\"Scrubber-last\" onclick={this.goToLast.bind(this)}>\n {icon('fas fa-angle-double-down')} {app.translator.trans('core.forum.post_scrubber.now_link')}\n </a>\n </div>\n </div>\n </div>\n );\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n\n if (this.stream.forceUpdateScrubber) {\n this.stream.forceUpdateScrubber = false;\n this.stream.loadPromise.then(() => this.updateScrubberValues({ animate: true, forceHeightChange: true }));\n }\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n // Whenever the window is resized, adjust the height of the scrollbar\n // so that it fills the height of the sidebar.\n $(window)\n .on('resize', (this.handlers.onresize = this.onresize.bind(this)))\n .resize();\n\n // When any part of the whole scrollbar is clicked, we want to jump to\n // that position.\n this.$('.Scrubber-scrollbar')\n .bind('click', this.onclick.bind(this))\n\n // Now we want to make the scrollbar handle draggable. Let's start by\n // preventing default browser events from messing things up.\n .bind('dragstart mousedown touchstart', (e) => e.preventDefault());\n\n // When the mouse is pressed on the scrollbar handle, we capture some\n // information about its current position. We will store this\n // information in an object and pass it on to the document's\n // mousemove/mouseup events later.\n this.dragging = false;\n this.mouseStart = 0;\n this.indexStart = 0;\n\n this.$('.Scrubber-handle')\n .bind('mousedown touchstart', this.onmousedown.bind(this))\n\n // Exempt the scrollbar handle from the 'jump to' click event.\n .click((e) => e.stopPropagation());\n\n // When the mouse moves and when it is released, we pass the\n // information that we captured when the mouse was first pressed onto\n // some event handlers. These handlers will move the scrollbar/stream-\n // content as appropriate.\n $(document)\n .on('mousemove touchmove', (this.handlers.onmousemove = this.onmousemove.bind(this)))\n .on('mouseup touchend', (this.handlers.onmouseup = this.onmouseup.bind(this)));\n\n setTimeout(() => this.scrollListener.start());\n\n this.stream.loadPromise.then(() => this.updateScrubberValues({ animate: false, forceHeightChange: true }));\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n this.scrollListener.stop();\n $(window).off('resize', this.handlers.onresize);\n\n $(document).off('mousemove touchmove', this.handlers.onmousemove).off('mouseup touchend', this.handlers.onmouseup);\n }\n\n /**\n * Update the scrollbar's position to reflect the current values of the\n * index/visible properties.\n *\n * @param {Partial<{fromScroll: boolean, forceHeightChange: boolean, animate: boolean}>} options\n */\n updateScrubberValues(options = {}) {\n const index = this.stream.index;\n const count = this.stream.count();\n const visible = this.stream.visible || 1;\n const percentPerPost = this.percentPerPost();\n\n const $scrubber = this.$();\n $scrubber.find('.Scrubber-index').text(formatNumber(this.stream.sanitizeIndex(Math.max(1, index))));\n $scrubber.find('.Scrubber-description').text(this.stream.description);\n $scrubber.toggleClass('disabled', this.stream.disabled());\n\n const heights = {};\n heights.before = Math.max(0, percentPerPost.index * Math.min(index - 1, count - visible));\n heights.handle = Math.min(100 - heights.before, percentPerPost.visible * visible);\n heights.after = 100 - heights.before - heights.handle;\n\n // If the stream is paused, don't change height on scroll, as the viewport is being scrolled by the JS\n // If a height change animation is already in progress, don't adjust height unless overriden\n if ((options.fromScroll && this.stream.paused) || (this.adjustingHeight && !options.forceHeightChange)) return;\n\n const func = options.animate ? 'animate' : 'css';\n this.adjustingHeight = true;\n const animationPromises = [];\n for (const part in heights) {\n const $part = $scrubber.find(`.Scrubber-${part}`);\n animationPromises.push(\n $part\n .stop(true, true)\n [func]({ height: heights[part] + '%' }, 'fast')\n .promise()\n );\n\n // jQuery likes to put overflow:hidden, but because the scrollbar handle\n // has a negative margin-left, we need to override.\n if (func === 'animate') $part.css('overflow', 'visible');\n }\n Promise.all(animationPromises).then(() => (this.adjustingHeight = false));\n }\n\n /**\n * Go to the first post in the discussion.\n */\n goToFirst() {\n this.stream.goToFirst();\n this.updateScrubberValues({ animate: true, forceHeightChange: true });\n }\n\n /**\n * Go to the last post in the discussion.\n */\n goToLast() {\n this.stream.goToLast();\n this.updateScrubberValues({ animate: true, forceHeightChange: true });\n }\n\n onresize() {\n // Adjust the height of the scrollbar so that it fills the height of\n // the sidebar and doesn't overlap the footer.\n const scrubber = this.$();\n const scrollbar = this.$('.Scrubber-scrollbar');\n\n scrollbar.css(\n 'max-height',\n $(window).height() -\n scrubber.offset().top +\n $(window).scrollTop() -\n parseInt($('#app').css('padding-bottom'), 10) -\n (scrubber.outerHeight() - scrollbar.outerHeight())\n );\n }\n\n onmousedown(e) {\n e.redraw = false;\n this.mouseStart = e.clientY || e.originalEvent.touches[0].clientY;\n this.indexStart = this.stream.index;\n this.dragging = true;\n $('body').css('cursor', 'move');\n this.$().toggleClass('dragging', this.dragging);\n }\n\n onmousemove(e) {\n if (!this.dragging) return;\n\n // Work out how much the mouse has moved by - first in pixels, then\n // convert it to a percentage of the scrollbar's height, and then\n // finally convert it into an index. Add this delta index onto\n // the index at which the drag was started, and then scroll there.\n const deltaPixels = (e.clientY || e.originalEvent.touches[0].clientY) - this.mouseStart;\n const deltaPercent = (deltaPixels / this.$('.Scrubber-scrollbar').outerHeight()) * 100;\n const deltaIndex = deltaPercent / this.percentPerPost().index || 0;\n const newIndex = Math.min(this.indexStart + deltaIndex, this.stream.count() - 1);\n\n this.stream.index = Math.max(0, newIndex);\n this.updateScrubberValues();\n }\n\n onmouseup() {\n this.$().toggleClass('dragging', this.dragging);\n if (!this.dragging) return;\n\n this.mouseStart = 0;\n this.indexStart = 0;\n this.dragging = false;\n $('body').css('cursor', '');\n\n this.$().removeClass('open');\n\n // If the index we've landed on is in a gap, then tell the stream-\n // content that we want to load those posts.\n const intIndex = Math.floor(this.stream.index);\n this.stream.goToIndex(intIndex);\n }\n\n onclick(e) {\n // Calculate the index which we want to jump to based on the click position.\n\n // 1. Get the offset of the click from the top of the scrollbar, as a\n // percentage of the scrollbar's height.\n const $scrollbar = this.$('.Scrubber-scrollbar');\n const offsetPixels = (e.pageY || e.originalEvent.touches[0].pageY) - $scrollbar.offset().top + $('body').scrollTop();\n let offsetPercent = (offsetPixels / $scrollbar.outerHeight()) * 100;\n\n // 2. We want the handle of the scrollbar to end up centered on the click\n // position. Thus, we calculate the height of the handle in percent and\n // use that to find a new offset percentage.\n offsetPercent = offsetPercent - parseFloat($scrollbar.find('.Scrubber-handle')[0].style.height) / 2;\n\n // 3. Now we can convert the percentage into an index, and tell the stream-\n // content component to jump to that index.\n let offsetIndex = offsetPercent / this.percentPerPost().index;\n offsetIndex = Math.max(0, Math.min(this.stream.count() - 1, offsetIndex));\n this.stream.goToIndex(Math.floor(offsetIndex));\n this.updateScrubberValues({ animate: true, forceHeightChange: true });\n\n this.$().removeClass('open');\n }\n\n /**\n * Get the percentage of the height of the scrubber that should be allocated\n * to each post.\n *\n * @return {{ index: number, visible: number }}\n * @property {Number} index The percent per post for posts on either side of\n * the visible part of the scrubber.\n * @property {Number} visible The percent per post for the visible part of the\n * scrubber.\n */\n percentPerPost() {\n const count = this.stream.count() || 1;\n const visible = this.stream.visible || 1;\n\n // To stop the handle of the scrollbar from getting too small when there\n // are many posts, we define a minimum percentage height for the handle\n // calculated from a 50 pixel limit. From this, we can calculate the\n // minimum percentage per visible post. If this is greater than the actual\n // percentage per post, then we need to adjust the 'before' percentage to\n // account for it.\n const minPercentVisible = (50 / this.$('.Scrubber-scrollbar').outerHeight()) * 100;\n const percentPerVisiblePost = Math.max(100 / count, minPercentVisible / visible);\n const percentPerPost = count === visible ? 0 : (100 - percentPerVisiblePost * visible) / (count - visible);\n\n return {\n index: percentPerPost,\n visible: percentPerVisiblePost,\n };\n }\n}\n","import Dropdown, { IDropdownAttrs } from './Dropdown';\nimport Button from './Button';\nimport icon from '../helpers/icon';\nimport Mithril from 'mithril';\nimport classList from '../utils/classList';\n\nexport interface ISplitDropdownAttrs extends IDropdownAttrs {}\n\n/**\n * The `SplitDropdown` component is similar to `Dropdown`, but the first child\n * is displayed as its own button prior to the toggle button.\n */\nexport default class SplitDropdown extends Dropdown {\n static initAttrs(attrs: ISplitDropdownAttrs) {\n super.initAttrs(attrs);\n\n attrs.className = classList(attrs.className, 'Dropdown--split');\n attrs.menuClassName = classList(attrs.menuClassName, 'Dropdown-menu--right');\n }\n\n getButton(children: Mithril.ChildArray): Mithril.Vnode<any, any> {\n // Make a copy of the attrs of the first child component. We will assign\n // these attrs to a new button, so that it has exactly the same behaviour as\n // the first child.\n const firstChild = this.getFirstChild(children);\n const buttonAttrs = Object.assign({}, firstChild?.attrs);\n buttonAttrs.className = classList(buttonAttrs.className, 'SplitDropdown-button Button', this.attrs.buttonClassName);\n\n return (\n <>\n <Button {...buttonAttrs}>{firstChild.children}</Button>\n <button\n className={'Dropdown-toggle Button Button--icon ' + this.attrs.buttonClassName}\n aria-haspopup=\"menu\"\n aria-label={this.attrs.accessibleToggleLabel}\n data-toggle=\"dropdown\"\n >\n {this.attrs.icon ? icon(this.attrs.icon, { className: 'Button-icon' }) : null}\n {icon('fas fa-caret-down', { className: 'Button-caret' })}\n </button>\n </>\n );\n }\n\n /**\n * Get the first child. If the first child is an array, the first item in that\n * array will be returned.\n */\n protected getFirstChild(children: Mithril.Children): Mithril.Vnode<any, any> {\n let firstChild = children;\n\n while (firstChild instanceof Array) firstChild = firstChild[0];\n\n return firstChild as Mithril.Vnode<any, any>;\n }\n}\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nexport default function (delay, noTrailing, callback, debounceMode) {\n\t/*\n\t * After wrapper has stopped being called, this timeout ensures that\n\t * `callback` is executed at the proper times in `throttle` and `end`\n\t * debounce modes.\n\t */\n\tlet timeoutID;\n\tlet cancelled = false;\n\n\t// Keep track of the last time `callback` was executed.\n\tlet lastExec = 0;\n\n\t// Function to clear existing timeout\n\tfunction clearExistingTimeout() {\n\t\tif (timeoutID) {\n\t\t\tclearTimeout(timeoutID);\n\t\t}\n\t}\n\n\t// Function to cancel next exec\n\tfunction cancel() {\n\t\tclearExistingTimeout();\n\t\tcancelled = true;\n\t}\n\n\t// `noTrailing` defaults to falsy.\n\tif (typeof noTrailing !== 'boolean') {\n\t\tdebounceMode = callback;\n\t\tcallback = noTrailing;\n\t\tnoTrailing = undefined;\n\t}\n\n\t/*\n\t * The `wrapper` function encapsulates all of the throttling / debouncing\n\t * functionality and when executed will limit the rate at which `callback`\n\t * is executed.\n\t */\n\tfunction wrapper(...arguments_) {\n\t\tlet self = this;\n\t\tlet elapsed = Date.now() - lastExec;\n\n\t\tif (cancelled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Execute `callback` and update the `lastExec` timestamp.\n\t\tfunction exec() {\n\t\t\tlastExec = Date.now();\n\t\t\tcallback.apply(self, arguments_);\n\t\t}\n\n\t\t/*\n\t\t * If `debounceMode` is true (at begin) this is used to clear the flag\n\t\t * to allow future `callback` executions.\n\t\t */\n\t\tfunction clear() {\n\t\t\ttimeoutID = undefined;\n\t\t}\n\n\t\tif (debounceMode && !timeoutID) {\n\t\t\t/*\n\t\t\t * Since `wrapper` is being called for the first time and\n\t\t\t * `debounceMode` is true (at begin), execute `callback`.\n\t\t\t */\n\t\t\texec();\n\t\t}\n\n\t\tclearExistingTimeout();\n\n\t\tif (debounceMode === undefined && elapsed > delay) {\n\t\t\t/*\n\t\t\t * In throttle mode, if `delay` time has been exceeded, execute\n\t\t\t * `callback`.\n\t\t\t */\n\t\t\texec();\n\t\t} else if (noTrailing !== true) {\n\t\t\t/*\n\t\t\t * In trailing throttle mode, since `delay` time has not been\n\t\t\t * exceeded, schedule `callback` to execute `delay` ms after most\n\t\t\t * recent execution.\n\t\t\t *\n\t\t\t * If `debounceMode` is true (at begin), schedule `clear` to execute\n\t\t\t * after `delay` ms.\n\t\t\t *\n\t\t\t * If `debounceMode` is false (at end), schedule `callback` to\n\t\t\t * execute after `delay` ms.\n\t\t\t */\n\t\t\ttimeoutID = setTimeout(\n\t\t\t\tdebounceMode ? clear : exec,\n\t\t\t\tdebounceMode === undefined ? delay - elapsed : delay\n\t\t\t);\n\t\t}\n\t}\n\n\twrapper.cancel = cancel;\n\n\t// Return the wrapper function.\n\treturn wrapper;\n}\n","/* eslint-disable no-undefined */\n\nimport throttle from './throttle';\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\nexport default function (delay, atBegin, callback) {\n\treturn callback === undefined\n\t\t? throttle(delay, atBegin, false)\n\t\t: throttle(delay, callback, atBegin !== false);\n}\n","/**\n * The `anchorScroll` utility saves the scroll position relative to an element,\n * and then restores it after a callback has been run.\n *\n * This is useful if a redraw will change the page's content above the viewport.\n * Normally doing this will result in the content in the viewport being pushed\n * down or pulled up. By wrapping the redraw with this utility, the scroll\n * position can be anchor to an element that is in or below the viewport, so\n * the content in the viewport will stay the same.\n *\n * @param {string | HTMLElement | SVGElement | Element} element The element to anchor the scroll position to.\n * @param {() => void} callback The callback to run that will change page content.\n */\nexport default function anchorScroll(element, callback) {\n const $window = $(window);\n const relativeScroll = $(element).offset().top - $window.scrollTop();\n\n callback();\n\n $window.scrollTop($(element).offset().top - relativeScroll);\n}\n","import app from '../../forum/app';\nimport { throttle } from 'throttle-debounce';\nimport anchorScroll from '../../common/utils/anchorScroll';\nimport type Discussion from '../../common/models/Discussion';\nimport type Post from '../../common/models/Post';\n\nexport default class PostStreamState {\n /**\n * The number of posts to load per page.\n */\n static loadCount = 20;\n\n /**\n * The discussion to display the post stream for.\n */\n discussion: Discussion;\n\n /**\n * Whether or not the infinite-scrolling auto-load functionality is\n * disabled.\n */\n paused = false;\n\n loadPageTimeouts: Record<number, NodeJS.Timeout> = {};\n pagesLoading = 0;\n\n index = 0;\n number = 1;\n\n /**\n * The number of posts that are currently visible in the viewport.\n */\n visible = 1;\n visibleStart = 0;\n visibleEnd = 0;\n\n animateScroll = false;\n needsScroll = false;\n targetPost: { number: number } | { index: number; reply?: boolean } | null = null;\n\n /**\n * The description to render on the scrubber.\n */\n description = '';\n\n /**\n * When the page is scrolled, goToIndex is called, or the page is loaded,\n * various listeners result in the scrubber being updated with a new\n * position and values. However, if goToNumber is called, the scrubber\n * will not be updated. Accordingly, we add logic to the scrubber's\n * onupdate to update itself, but only when needed, as indicated by this\n * property.\n *\n */\n forceUpdateScrubber = false;\n\n loadPromise: Promise<void> | null = null;\n\n loadNext: () => void;\n loadPrevious: () => void;\n\n constructor(discussion: Discussion, includedPosts: Post[] = []) {\n this.discussion = discussion;\n\n this.loadNext = throttle(300, this._loadNext);\n this.loadPrevious = throttle(300, this._loadPrevious);\n\n this.show(includedPosts);\n }\n\n /**\n * Update the stream so that it loads and includes the latest posts in the\n * discussion, if the end is being viewed.\n */\n update() {\n if (!this.viewingEnd()) return Promise.resolve();\n\n this.visibleEnd = this.count();\n\n return this.loadRange(this.visibleStart, this.visibleEnd);\n }\n\n /**\n * Load and scroll up to the first post in the discussion.\n */\n goToFirst(): Promise<void> {\n return this.goToIndex(0);\n }\n\n /**\n * Load and scroll down to the last post in the discussion.\n */\n goToLast(): Promise<void> {\n return this.goToIndex(this.count() - 1, true);\n }\n\n /**\n * Load and scroll to a post with a certain number.\n *\n * @param number The post number to go to. If 'reply', go to the last post and scroll the reply preview into view.\n */\n goToNumber(number: number | 'reply', noAnimation = false): Promise<void> {\n // If we want to go to the reply preview, then we will go to the end of the\n // discussion and then scroll to the very bottom of the page.\n if (number === 'reply') {\n const resultPromise = this.goToLast();\n this.targetPost = { ...(this.targetPost as { index: number }), reply: true };\n return resultPromise;\n }\n\n this.paused = true;\n\n this.loadPromise = this.loadNearNumber(number);\n\n this.needsScroll = true;\n this.targetPost = { number };\n this.animateScroll = !noAnimation;\n this.number = number;\n\n // In this case, the redraw is only called after the response has been loaded\n // because we need to know the indices of the post range before we can\n // start scrolling to items. Calling redraw early causes issues.\n // Since this is only used for external navigation to the post stream, the delay\n // before the stream is moved is not an issue.\n return this.loadPromise.then(() => m.redraw());\n }\n\n /**\n * Load and scroll to a certain index within the discussion.\n */\n goToIndex(index: number, noAnimation = false): Promise<void> {\n this.paused = true;\n\n this.loadPromise = this.loadNearIndex(index);\n\n this.needsScroll = true;\n this.targetPost = { index };\n this.animateScroll = !noAnimation;\n this.index = index;\n\n m.redraw();\n\n return this.loadPromise;\n }\n\n /**\n * Clear the stream and load posts near a certain number. Returns a promise.\n * If the post with the given number is already loaded, the promise will be\n * resolved immediately.\n */\n loadNearNumber(number: number): Promise<void> {\n if (this.posts().some((post) => post && Number(post.number()) === Number(number))) {\n return Promise.resolve();\n }\n\n this.reset();\n\n return app.store\n .find<Post[]>('posts', {\n filter: { discussion: this.discussion.id() as string },\n page: { near: number },\n })\n .then(this.show.bind(this));\n }\n\n /**\n * Clear the stream and load posts near a certain index. A page of posts\n * surrounding the given index will be loaded. Returns a promise. If the given\n * index is already loaded, the promise will be resolved immediately.\n */\n loadNearIndex(index: number): Promise<void> {\n if (index >= this.visibleStart && index < this.visibleEnd) {\n return Promise.resolve();\n }\n\n const start = this.sanitizeIndex(index - PostStreamState.loadCount / 2);\n const end = start + PostStreamState.loadCount;\n\n this.reset(start, end);\n\n return this.loadRange(start, end).then(this.show.bind(this));\n }\n\n /**\n * Load the next page of posts.\n */\n _loadNext() {\n const start = this.visibleEnd;\n const end = (this.visibleEnd = this.sanitizeIndex(this.visibleEnd + PostStreamState.loadCount));\n\n // Unload the posts which are two pages back from the page we're currently\n // loading.\n const twoPagesAway = start - PostStreamState.loadCount * 2;\n if (twoPagesAway > this.visibleStart && twoPagesAway >= 0) {\n this.visibleStart = twoPagesAway + PostStreamState.loadCount + 1;\n\n if (this.loadPageTimeouts[twoPagesAway]) {\n clearTimeout(this.loadPageTimeouts[twoPagesAway]);\n delete this.loadPageTimeouts[twoPagesAway];\n this.pagesLoading--;\n }\n }\n\n this.loadPage(start, end);\n }\n\n /**\n * Load the previous page of posts.\n */\n _loadPrevious() {\n const end = this.visibleStart;\n const start = (this.visibleStart = this.sanitizeIndex(this.visibleStart - PostStreamState.loadCount));\n\n // Unload the posts which are two pages back from the page we're currently\n // loading.\n const twoPagesAway = start + PostStreamState.loadCount * 2;\n if (twoPagesAway < this.visibleEnd && twoPagesAway <= this.count()) {\n this.visibleEnd = twoPagesAway;\n\n if (this.loadPageTimeouts[twoPagesAway]) {\n clearTimeout(this.loadPageTimeouts[twoPagesAway]);\n delete this.loadPageTimeouts[twoPagesAway];\n this.pagesLoading--;\n }\n }\n\n this.loadPage(start, end, true);\n }\n\n /**\n * Load a page of posts into the stream and redraw.\n */\n loadPage(start: number, end: number, backwards = false) {\n this.pagesLoading++;\n\n const redraw = () => {\n if (start < this.visibleStart || end > this.visibleEnd) return;\n\n const anchorIndex = backwards ? this.visibleEnd - 1 : this.visibleStart;\n anchorScroll(`.PostStream-item[data-index=\"${anchorIndex}\"]`, m.redraw.sync);\n };\n redraw();\n\n this.loadPageTimeouts[start] = setTimeout(\n () => {\n this.loadRange(start, end).then(() => {\n redraw();\n this.pagesLoading--;\n });\n delete this.loadPageTimeouts[start];\n },\n this.pagesLoading - 1 ? 1000 : 0\n );\n }\n\n /**\n * Load and inject the specified range of posts into the stream, without\n * clearing it.\n */\n loadRange(start: number, end: number): Promise<Post[]> {\n const loadIds: string[] = [];\n const loaded: Post[] = [];\n\n this.discussion\n .postIds()\n .slice(start, end)\n .forEach((id) => {\n const post = app.store.getById<Post>('posts', id);\n\n if (post && post.discussion() && typeof post.canEdit() !== 'undefined') {\n loaded.push(post);\n } else {\n loadIds.push(id);\n }\n });\n\n if (loadIds.length) {\n return app.store.find<Post[]>('posts', loadIds).then((newPosts) => {\n return loaded.concat(newPosts).sort((a, b) => a.number() - b.number());\n });\n }\n\n return Promise.resolve(loaded);\n }\n\n /**\n * Set up the stream with the given array of posts.\n */\n show(posts: Post[]) {\n this.visibleStart = posts.length ? this.discussion.postIds().indexOf(posts[0].id() ?? '0') : 0;\n this.visibleEnd = this.sanitizeIndex(this.visibleStart + posts.length);\n }\n\n /**\n * Reset the stream so that a specific range of posts is displayed. If a range\n * is not specified, the first page of posts will be displayed.\n */\n reset(start?: number, end?: number) {\n this.visibleStart = start || 0;\n this.visibleEnd = this.sanitizeIndex(end || PostStreamState.loadCount);\n }\n\n /**\n * Get the visible page of posts.\n */\n posts(): (Post | null)[] {\n return this.discussion\n .postIds()\n .slice(this.visibleStart, this.visibleEnd)\n .map((id) => {\n const post = app.store.getById<Post>('posts', id);\n\n return post && post.discussion() && typeof post.canEdit() !== 'undefined' ? post : null;\n });\n }\n\n /**\n * Get the total number of posts in the discussion.\n */\n count(): number {\n return this.discussion.postIds().length;\n }\n\n /**\n * Check whether or not the scrubber should be disabled, i.e. if all of the\n * posts are visible in the viewport.\n */\n disabled(): boolean {\n return this.visible >= this.count();\n }\n\n /**\n * Are we currently viewing the end of the discussion?\n */\n viewingEnd(): boolean {\n // In some cases, such as if we've stickied a post, an event post\n // may have been added / removed. This means that `this.visibleEnd`\n // and`this.count()` will be out of sync by 1 post, but we are still\n // \"viewing the end\" of the post stream, so we should still reload\n // all posts up until the last one.\n return Math.abs(this.count() - this.visibleEnd) <= 1;\n }\n\n /**\n * Make sure that the given index is not outside of the possible range of\n * indexes in the discussion.\n */\n sanitizeIndex(index: number) {\n return Math.max(0, Math.min(this.count(), Math.floor(index)));\n }\n}\n","import type Mithril from 'mithril';\n\nimport app from '../../forum/app';\nimport Page, { IPageAttrs } from '../../common/components/Page';\nimport ItemList from '../../common/utils/ItemList';\nimport DiscussionHero from './DiscussionHero';\nimport DiscussionListPane from './DiscussionListPane';\nimport PostStream from './PostStream';\nimport PostStreamScrubber from './PostStreamScrubber';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport SplitDropdown from '../../common/components/SplitDropdown';\nimport listItems from '../../common/helpers/listItems';\nimport DiscussionControls from '../utils/DiscussionControls';\nimport PostStreamState from '../states/PostStreamState';\nimport Discussion from '../../common/models/Discussion';\nimport Post from '../../common/models/Post';\nimport { ApiResponseSingle } from '../../common/Store';\n\nexport interface IDiscussionPageAttrs extends IPageAttrs {\n id: string;\n near?: number;\n}\n\n/**\n * The `DiscussionPage` component displays a whole discussion page, including\n * the discussion list pane, the hero, the posts, and the sidebar.\n */\nexport default class DiscussionPage<CustomAttrs extends IDiscussionPageAttrs = IDiscussionPageAttrs> extends Page<CustomAttrs> {\n /**\n * The discussion that is being viewed.\n */\n protected discussion: Discussion | null = null;\n\n /**\n * A public API for interacting with the post stream.\n */\n protected stream: PostStreamState | null = null;\n\n /**\n * The number of the first post that is currently visible in the viewport.\n */\n protected near: number = 0;\n\n protected useBrowserScrollRestoration = true;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.load();\n\n // If the discussion list has been loaded, then we'll enable the pane (and\n // hide it by default). Also, if we've just come from another discussion\n // page, then we don't want Mithril to redraw the whole page \u2013 if it did,\n // then the pane would redraw which would be slow and would cause problems with\n // event handlers.\n // We will also enable the pane if the discussion list is empty but loading,\n // because the DiscussionComposer refreshes the list and redirects to the new discussion at the same time.\n if (app.discussions.hasItems() || app.discussions.isLoading()) {\n app.pane?.enable();\n app.pane?.hide();\n }\n\n this.bodyClass = 'App--discussion';\n }\n\n onremove(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.onremove(vnode);\n\n // If we are indeed navigating away from this discussion, then disable the\n // discussion list pane. Also, if we're composing a reply to this\n // discussion, minimize the composer \u2013 unless it's empty, in which case\n // we'll just close it.\n app.pane?.disable();\n\n if (this.discussion && app.composer.composingReplyTo(this.discussion) && !app.composer?.fields?.content()) {\n app.composer.hide();\n } else {\n app.composer.minimize();\n }\n }\n\n view() {\n return (\n <div className=\"DiscussionPage\">\n <DiscussionListPane state={app.discussions} />\n <div className=\"DiscussionPage-discussion\">{this.discussion ? this.pageContent().toArray() : this.loadingItems().toArray()}</div>\n </div>\n );\n }\n\n /**\n * List of components shown while the discussion is loading.\n */\n loadingItems(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n items.add('spinner', <LoadingIndicator />, 100);\n\n return items;\n }\n\n /**\n * Function that renders the `sidebarItems` ItemList.\n */\n sidebar(): Mithril.Children {\n return (\n <nav className=\"DiscussionPage-nav\">\n <ul>{listItems(this.sidebarItems().toArray())}</ul>\n </nav>\n );\n }\n\n /**\n * Renders the discussion's hero.\n */\n hero(): Mithril.Children {\n return <DiscussionHero discussion={this.discussion} />;\n }\n\n /**\n * List of items rendered as the main page content.\n */\n pageContent(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n items.add('hero', this.hero(), 100);\n items.add('main', <div className=\"container\">{this.mainContent().toArray()}</div>, 10);\n\n return items;\n }\n\n /**\n * List of items rendered inside the main page content container.\n */\n mainContent(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n items.add('sidebar', this.sidebar(), 100);\n\n items.add(\n 'poststream',\n <div className=\"DiscussionPage-stream\">\n <PostStream discussion={this.discussion} stream={this.stream} onPositionChange={this.positionChanged.bind(this)} />\n </div>,\n 10\n );\n\n return items;\n }\n\n /**\n * Load the discussion from the API or use the preloaded one.\n */\n load(): void {\n const preloadedDiscussion = app.preloadedApiDocument<Discussion>();\n if (preloadedDiscussion) {\n // We must wrap this in a setTimeout because if we are mounting this\n // component for the first time on page load, then any calls to m.redraw\n // will be ineffective and thus any configs (scroll code) will be run\n // before stuff is drawn to the page.\n setTimeout(this.show.bind(this, preloadedDiscussion), 0);\n } else {\n const params = this.requestParams();\n\n app.store.find<Discussion>('discussions', m.route.param('id'), params).then(this.show.bind(this));\n }\n\n m.redraw();\n }\n\n /**\n * Get the parameters that should be passed in the API request to get the\n * discussion.\n */\n requestParams(): Record<string, unknown> {\n return {\n bySlug: true,\n page: { near: this.near },\n };\n }\n\n /**\n * Initialize the component to display the given discussion.\n */\n show(discussion: ApiResponseSingle<Discussion>): void {\n app.history.push('discussion', discussion.title());\n app.setTitle(discussion.title());\n app.setTitleCount(0);\n\n // When the API responds with a discussion, it will also include a number of\n // posts. Some of these posts are included because they are on the first\n // page of posts we want to display (determined by the `near` parameter) \u2013\n // others may be included because due to other relationships introduced by\n // extensions. We need to distinguish the two so we don't end up displaying\n // the wrong posts. We do so by filtering out the posts that don't have\n // the 'discussion' relationship linked, then sorting and splicing.\n let includedPosts: Post[] = [];\n if (discussion.payload && discussion.payload.included) {\n const discussionId = discussion.id();\n\n includedPosts = discussion.payload.included\n .filter(\n (record) =>\n record.type === 'posts' &&\n record.relationships &&\n record.relationships.discussion &&\n !Array.isArray(record.relationships.discussion.data) &&\n record.relationships.discussion.data.id === discussionId\n )\n // We can make this assertion because posts should be in the store,\n // since they were in the discussion's payload.\n .map((record) => app.store.getById<Post>('posts', record.id) as Post)\n .sort((a: Post, b: Post) => a.number() - b.number())\n .slice(0, 20);\n }\n\n // Set up the post stream for this discussion, along with the first page of\n // posts we want to display. Tell the stream to scroll down and highlight\n // the specific post that was routed to.\n this.stream = new PostStreamState(discussion, includedPosts);\n const rawNearParam = m.route.param('near');\n const nearParam = rawNearParam === 'reply' ? 'reply' : parseInt(rawNearParam);\n this.stream.goToNumber(nearParam || (includedPosts[0]?.number() ?? 0), true).then(() => {\n this.discussion = discussion;\n\n app.current.set('discussion', discussion);\n app.current.set('stream', this.stream);\n });\n }\n\n /**\n * Build an item list for the contents of the sidebar.\n */\n sidebarItems() {\n const items = new ItemList<Mithril.Children>();\n\n if (this.discussion) {\n items.add(\n 'controls',\n <SplitDropdown\n icon=\"fas fa-ellipsis-v\"\n className=\"App-primaryControl\"\n buttonClassName=\"Button--primary\"\n accessibleToggleLabel={app.translator.trans('core.forum.discussion_controls.toggle_dropdown_accessible_label')}\n >\n {DiscussionControls.controls(this.discussion, this).toArray()}\n </SplitDropdown>,\n 100\n );\n }\n\n items.add('scrubber', <PostStreamScrubber stream={this.stream} className=\"App-titleControl\" />, -100);\n\n return items;\n }\n\n /**\n * When the posts that are visible in the post stream change (i.e. the user\n * scrolls up or down), then we update the URL and mark the posts as read.\n */\n positionChanged(startNumber: number, endNumber: number): void {\n const discussion = this.discussion;\n\n if (!discussion) return;\n\n // Construct a URL to this discussion with the updated position, then\n // replace it into the window's history and our own history stack.\n const url = app.route.discussion(discussion, (this.near = startNumber));\n\n window.history.replaceState(null, document.title, url);\n app.history.push('discussion', discussion.title());\n\n // If the user hasn't read past here before, then we'll update their read\n // state and redraw.\n if (app.session.user && endNumber > (discussion.lastReadPostNumber() || 0)) {\n discussion.save({ lastReadPostNumber: endNumber });\n m.redraw();\n }\n }\n}\n","import Component from '../../common/Component';\nimport ItemList from '../../common/utils/ItemList';\nimport listItems from '../../common/helpers/listItems';\n\n/**\n * The `HeaderPrimary` component displays primary header controls. On the\n * default skin, these are shown just to the right of the forum title.\n */\nexport default class HeaderPrimary extends Component {\n view() {\n return <ul className=\"Header-controls\">{listItems(this.items().toArray())}</ul>;\n }\n\n /**\n * Build an item list for the controls.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n items() {\n return new ItemList();\n }\n}\n","import Button from './Button';\nimport Link from './Link';\n\n/**\n * The `LinkButton` component defines a `Button` which links to a route.\n *\n * ### Attrs\n *\n * All of the attrs accepted by `Button`, plus:\n *\n * - `active` Whether or not the page that this button links to is currently\n * active.\n * - `href` The URL to link to. If the current URL `m.route()` matches this,\n * the `active` prop will automatically be set to true.\n * - `force` Whether the page should be fully rerendered. Defaults to `true`.\n */\nexport default class LinkButton extends Button {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.active = this.isActive(attrs);\n if (attrs.force === undefined) attrs.force = true;\n }\n\n view(vnode) {\n const vdom = super.view(vnode);\n\n vdom.tag = Link;\n vdom.attrs.active = String(vdom.attrs.active);\n delete vdom.attrs.type;\n\n return vdom;\n }\n\n /**\n * Determine whether a component with the given attrs is 'active'.\n *\n * @param {object} attrs\n * @return {boolean}\n */\n static isActive(attrs) {\n return typeof attrs.active !== 'undefined' ? attrs.active : m.route.get()?.split('?')[0] === attrs.href?.split('?')[0];\n }\n}\n","import app from '../../forum/app';\nimport avatar from '../../common/helpers/avatar';\nimport username from '../../common/helpers/username';\nimport Dropdown, { IDropdownAttrs } from '../../common/components/Dropdown';\nimport LinkButton from '../../common/components/LinkButton';\nimport Button from '../../common/components/Button';\nimport ItemList from '../../common/utils/ItemList';\nimport Separator from '../../common/components/Separator';\nimport extractText from '../../common/utils/extractText';\nimport type Mithril from 'mithril';\n\nexport interface ISessionDropdownAttrs extends IDropdownAttrs {}\n\n/**\n * The `SessionDropdown` component shows a button with the current user's\n * avatar/name, with a dropdown of session controls.\n */\nexport default class SessionDropdown<CustomAttrs extends ISessionDropdownAttrs = ISessionDropdownAttrs> extends Dropdown<CustomAttrs> {\n static initAttrs(attrs: ISessionDropdownAttrs) {\n super.initAttrs(attrs);\n\n attrs.className = 'SessionDropdown';\n attrs.buttonClassName = 'Button Button--user Button--flat';\n attrs.menuClassName = 'Dropdown-menu--right';\n\n attrs.accessibleToggleLabel = extractText(app.translator.trans('core.forum.header.session_dropdown_accessible_label'));\n }\n\n view(vnode: Mithril.Vnode<CustomAttrs, this>) {\n return super.view({ ...vnode, children: this.items().toArray() });\n }\n\n getButtonContent() {\n const user = app.session.user;\n\n return [avatar(user), ' ', <span className=\"Button-label\">{username(user)}</span>];\n }\n\n /**\n * Build an item list for the contents of the dropdown menu.\n */\n items(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n const user = app.session.user!;\n\n items.add(\n 'profile',\n <LinkButton icon=\"fas fa-user\" href={app.route.user(user)}>\n {app.translator.trans('core.forum.header.profile_button')}\n </LinkButton>,\n 100\n );\n\n items.add(\n 'settings',\n <LinkButton icon=\"fas fa-cog\" href={app.route('settings')}>\n {app.translator.trans('core.forum.header.settings_button')}\n </LinkButton>,\n 50\n );\n\n if (app.forum.attribute('adminUrl')) {\n items.add(\n 'administration',\n <LinkButton icon=\"fas fa-wrench\" href={app.forum.attribute('adminUrl')} target=\"_blank\">\n {app.translator.trans('core.forum.header.admin_button')}\n </LinkButton>,\n 0\n );\n }\n\n items.add('separator', <Separator />, -90);\n\n items.add(\n 'logOut',\n <Button icon=\"fas fa-sign-out-alt\" onclick={app.session.logout.bind(app.session)}>\n {app.translator.trans('core.forum.header.log_out_button')}\n </Button>,\n -100\n );\n\n return items;\n }\n}\n","import Dropdown, { IDropdownAttrs } from './Dropdown';\nimport icon from '../helpers/icon';\nimport classList from '../utils/classList';\nimport type Component from '../Component';\nimport type Mithril from 'mithril';\n\n/**\n * Determines via a vnode is currently \"active\".\n * Due to changes in Mithril 2, attrs will not be instantiated until AFTER view()\n * is initially called on the parent component, so we can not always depend on the\n * active attr to determine which element should be displayed as the \"active child\".\n *\n * This is a temporary patch, and as so, is not exported / placed in utils.\n */\nfunction isActive(vnode: Mithril.Children): boolean {\n if (!vnode || typeof vnode !== 'object' || vnode instanceof Array) return false;\n\n const tag = vnode.tag;\n\n // Allow non-selectable dividers/headers to be added.\n if (typeof tag === 'string' && tag !== 'a' && tag !== 'button') return false;\n\n if ((typeof tag === 'object' || typeof tag === 'function') && 'initAttrs' in tag) {\n (tag as unknown as typeof Component).initAttrs(vnode.attrs);\n }\n\n return (typeof tag === 'object' || typeof tag === 'function') && 'isActive' in tag ? (tag as any).isActive(vnode.attrs) : vnode.attrs.active;\n}\n\nexport interface ISelectDropdownAttrs extends IDropdownAttrs {\n defaultLabel: string;\n}\n\n/**\n * The `SelectDropdown` component is the same as a `Dropdown`, except the toggle\n * button's label is set as the label of the first child which has a truthy\n * `active` prop.\n */\nexport default class SelectDropdown<CustomAttrs extends ISelectDropdownAttrs = ISelectDropdownAttrs> extends Dropdown<CustomAttrs> {\n static initAttrs(attrs: ISelectDropdownAttrs) {\n attrs.caretIcon ??= 'fas fa-sort';\n\n super.initAttrs(attrs);\n\n attrs.className = classList(attrs.className, 'Dropdown--select');\n }\n\n getButtonContent(children: Mithril.ChildArray): Mithril.ChildArray {\n const activeChild = children.find(isActive);\n let label = (activeChild && typeof activeChild === 'object' && 'children' in activeChild && activeChild.children) || this.attrs.defaultLabel;\n\n // @ts-ignore\n if (Array.isArray(label)) label = label[0];\n\n return [<span className=\"Button-label\">{label}</span>, this.attrs.caretIcon ? icon(this.attrs.caretIcon, { className: 'Button-caret' }) : null];\n }\n}\n","import app from '../common/app';\nimport { FlarumRequestOptions } from './Application';\nimport { fireDeprecationWarning } from './helpers/fireDebugWarning';\nimport Store, { ApiPayloadSingle, ApiResponseSingle, MetaInformation } from './Store';\n\nexport interface ModelIdentifier {\n type: string;\n id: string;\n}\n\nexport interface ModelAttributes {\n [key: string]: unknown;\n}\n\nexport interface ModelRelationships {\n [relationship: string]: {\n data: ModelIdentifier | ModelIdentifier[];\n };\n}\n\nexport interface UnsavedModelData {\n type?: string;\n attributes?: ModelAttributes;\n relationships?: ModelRelationships;\n}\n\nexport interface SavedModelData {\n type: string;\n id: string;\n attributes?: ModelAttributes;\n relationships?: ModelRelationships;\n}\n\nexport type ModelData = UnsavedModelData | SavedModelData;\n\nexport interface SaveRelationships {\n [relationship: string]: null | Model | Model[];\n}\n\nexport interface SaveAttributes {\n [key: string]: unknown;\n relationships?: SaveRelationships;\n}\n\n/**\n * The `Model` class represents a local data resource. It provides methods to\n * persist changes via the API.\n */\nexport default abstract class Model {\n /**\n * The resource object from the API.\n */\n data: ModelData = {};\n\n /**\n * The time at which the model's data was last updated. Watching the value\n * of this property is a fast way to retain/cache a subtree if data hasn't\n * changed.\n */\n freshness: Date = new Date();\n\n /**\n * Whether or not the resource exists on the server.\n */\n exists: boolean = false;\n\n /**\n * The data store that this resource should be persisted to.\n */\n protected store: Store;\n\n /**\n * @param data A resource object from the API.\n * @param store The data store that this model should be persisted to.\n */\n constructor(data: ModelData = {}, store = app.store) {\n this.data = data;\n this.store = store;\n }\n\n /**\n * Get the model's ID.\n *\n * @final\n */\n id(): string | undefined {\n return 'id' in this.data ? this.data.id : undefined;\n }\n\n /**\n * Get one of the model's attributes.\n *\n * @final\n */\n attribute<T = unknown>(attribute: string): T {\n return this.data?.attributes?.[attribute] as T;\n }\n\n /**\n * Merge new data into this model locally.\n *\n * @param data A resource object to merge into this model\n */\n pushData(data: ModelData | { relationships?: SaveRelationships }): this {\n if ('id' in data) {\n (this.data as SavedModelData).id = data.id;\n }\n\n if ('type' in data) {\n this.data.type = data.type;\n }\n\n if ('attributes' in data) {\n this.data.attributes ||= {};\n\n // @deprecated\n // Filter out relationships that got in by accident.\n for (const key in data.attributes) {\n const val = data.attributes[key];\n if (val && val instanceof Model) {\n fireDeprecationWarning('Providing models as attributes to `Model.pushData()` or `Model.pushAttributes()` is deprecated.', '3249');\n delete data.attributes[key];\n data.relationships ||= {};\n data.relationships[key] = { data: Model.getIdentifier(val) };\n }\n }\n\n Object.assign(this.data.attributes, data.attributes);\n }\n\n if ('relationships' in data) {\n const relationships = this.data.relationships ?? {};\n\n // For every relationship field, we need to check if we've\n // been handed a Model instance. If so, we will convert it to a\n // relationship data object.\n for (const r in data.relationships) {\n const relationship = data.relationships[r];\n\n if (relationship === null) {\n delete relationships[r];\n delete data.relationships[r];\n continue;\n }\n\n let identifier: ModelRelationships[string];\n if (relationship instanceof Model) {\n identifier = { data: Model.getIdentifier(relationship) };\n } else if (relationship instanceof Array) {\n identifier = { data: relationship.map(Model.getIdentifier) };\n } else {\n identifier = relationship;\n }\n\n data.relationships[r] = identifier;\n relationships[r] = identifier;\n }\n\n this.data.relationships = relationships;\n }\n\n // Now that we've updated the data, we can say that the model is fresh.\n // This is an easy way to invalidate retained subtrees etc.\n this.freshness = new Date();\n\n return this;\n }\n\n /**\n * Merge new attributes into this model locally.\n *\n * @param attributes The attributes to merge.\n */\n pushAttributes(attributes: ModelAttributes) {\n this.pushData({ attributes });\n }\n\n /**\n * Merge new attributes into this model, both locally and with persistence.\n *\n * @param attributes The attributes to save. If a 'relationships' key\n * exists, it will be extracted and relationships will also be saved.\n */\n save(\n attributes: SaveAttributes,\n options: Omit<FlarumRequestOptions<ApiPayloadSingle>, 'url'> & { meta?: MetaInformation } = {}\n ): Promise<ApiResponseSingle<this>> {\n const data: ModelData & { id?: string } = {\n type: this.data.type,\n attributes,\n };\n\n if ('id' in this.data) {\n data.id = this.data.id;\n }\n\n // If a 'relationships' key exists, extract it from the attributes hash and\n // set it on the top-level data object instead. We will be sending this data\n // object to the API for persistence.\n if (attributes.relationships) {\n data.relationships = {};\n\n for (const key in attributes.relationships) {\n const model = attributes.relationships[key];\n\n if (model === null) continue;\n\n data.relationships[key] = {\n data: model instanceof Array ? model.map(Model.getIdentifier) : Model.getIdentifier(model),\n };\n }\n\n delete attributes.relationships;\n }\n\n // Before we update the model's data, we should make a copy of the model's\n // old data so that we can revert back to it if something goes awry during\n // persistence.\n const oldData = this.copyData();\n\n this.pushData(data);\n\n const request = {\n data,\n meta: options.meta || undefined,\n };\n\n return app\n .request<ApiPayloadSingle>({\n method: this.exists ? 'PATCH' : 'POST',\n url: app.forum.attribute('apiUrl') + this.apiEndpoint(),\n body: request,\n ...options,\n })\n .then(\n // If everything went well, we'll make sure the store knows that this\n // model exists now (if it didn't already), and we'll push the data that\n // the API returned into the store.\n (payload) => {\n return this.store.pushPayload<this>(payload);\n },\n\n // If something went wrong, though... good thing we backed up our model's\n // old data! We'll revert to that and let others handle the error.\n (err: Error) => {\n this.pushData(oldData);\n m.redraw();\n throw err;\n }\n );\n }\n\n /**\n * Send a request to delete the resource.\n *\n * @param body Data to send along with the DELETE request.\n */\n delete(body: FlarumRequestOptions<void>['body'] = {}, options: Omit<FlarumRequestOptions<void>, 'url'> = {}): Promise<void> {\n if (!this.exists) return Promise.resolve();\n\n return app\n .request({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + this.apiEndpoint(),\n body,\n ...options,\n })\n .then(() => {\n this.exists = false;\n\n this.store.remove(this);\n });\n }\n\n /**\n * Construct a path to the API endpoint for this resource.\n */\n protected apiEndpoint(): string {\n return '/' + this.data.type + ('id' in this.data ? '/' + this.data.id : '');\n }\n\n protected copyData(): ModelData {\n return JSON.parse(JSON.stringify(this.data));\n }\n\n protected rawRelationship<M extends Model>(relationship: string): undefined | ModelIdentifier;\n protected rawRelationship<M extends Model[]>(relationship: string): undefined | ModelIdentifier[];\n protected rawRelationship<_M extends Model | Model[]>(relationship: string): undefined | ModelIdentifier | ModelIdentifier[] {\n return this.data.relationships?.[relationship]?.data;\n }\n\n /**\n * Generate a function which returns the value of the given attribute.\n *\n * @param transform A function to transform the attribute value\n */\n static attribute<T>(name: string): () => T;\n static attribute<T, O = unknown>(name: string, transform: (attr: O) => T): () => T;\n static attribute<T, O = unknown>(name: string, transform?: (attr: O) => T): () => T {\n return function (this: Model) {\n if (transform) {\n return transform(this.attribute(name));\n }\n\n return this.attribute(name);\n };\n }\n\n /**\n * Generate a function which returns the value of the given has-one\n * relationship.\n *\n * @return false if no information about the\n * relationship exists; undefined if the relationship exists but the model\n * has not been loaded; or the model if it has been loaded.\n */\n static hasOne<M extends Model>(name: string): () => M | false;\n static hasOne<M extends Model | null>(name: string): () => M | null | false;\n static hasOne<M extends Model>(name: string): () => M | false {\n return function (this: Model) {\n const relationshipData = this.data.relationships?.[name]?.data;\n\n if (relationshipData && relationshipData instanceof Array) {\n throw new Error(`Relationship ${name} on model ${this.data.type} is plural, so the hasOne method cannot be used to access it.`);\n }\n\n if (relationshipData) {\n return this.store.getById<M>(relationshipData.type, relationshipData.id) as M;\n }\n\n return false;\n };\n }\n\n /**\n * Generate a function which returns the value of the given has-many\n * relationship.\n *\n * @return false if no information about the relationship\n * exists; an array if it does, containing models if they have been\n * loaded, and undefined for those that have not.\n */\n static hasMany<M extends Model>(name: string): () => (M | undefined)[] | false {\n return function (this: Model) {\n const relationshipData = this.data.relationships?.[name]?.data;\n\n if (relationshipData && !(relationshipData instanceof Array)) {\n throw new Error(`Relationship ${name} on model ${this.data.type} is singular, so the hasMany method cannot be used to access it.`);\n }\n\n if (relationshipData) {\n return relationshipData.map((data) => this.store.getById<M>(data.type, data.id));\n }\n\n return false;\n };\n }\n\n /**\n * Transform the given value into a Date object.\n */\n static transformDate(value: string): Date;\n static transformDate(value: string | null): Date | null;\n static transformDate(value: string | undefined): Date | undefined;\n static transformDate(value: string | null | undefined): Date | null | undefined;\n static transformDate(value: string | null | undefined): Date | null | undefined {\n return value != null ? new Date(value) : value;\n }\n\n /**\n * Get a resource identifier object for the given model.\n */\n protected static getIdentifier(model: Model): ModelIdentifier;\n protected static getIdentifier(model?: Model): ModelIdentifier | null {\n if (!model || !('id' in model.data)) return null;\n\n return {\n type: model.data.type,\n id: model.data.id,\n };\n }\n}\n","import Model from '../Model';\n\n/**\n * The `computed` utility creates a function that will cache its output until\n * any of the dependent values are dirty.\n *\n * @param dependentKeys The keys of the dependent values.\n * @param compute The function which computes the value using the\n * dependent values.\n */\nexport default function computed<T, M = Model>(...args: [...string[], (this: M, ...args: unknown[]) => T]): () => T {\n const keys = args.slice(0, -1) as string[];\n const compute = args.slice(-1)[0] as (this: M, ...args: unknown[]) => T;\n\n const dependentValues: Record<string, unknown> = {};\n let computedValue: T;\n\n return function (this: M) {\n let recompute = false;\n\n // Read all of the dependent values. If any of them have changed since last\n // time, then we'll want to recompute our output.\n keys.forEach((key) => {\n const attr = (this as Record<string, unknown | (() => unknown)>)[key];\n const value = typeof attr === 'function' ? attr.call(this) : attr;\n\n if (dependentValues[key] !== value) {\n recompute = true;\n dependentValues[key] = value;\n }\n });\n\n if (recompute) {\n computedValue = compute.apply(\n this,\n keys.map((key) => dependentValues[key])\n );\n }\n\n return computedValue;\n };\n}\n","/**\n * The `isDark` utility converts a hex color to rgb, and then calculates a YIQ\n * value in order to get the appropriate brightness value. See\n * https://www.w3.org/TR/AERT/#color-contrast for references.\n *\n * A YIQ value >= 128 corresponds to a light color according to the W3C\n * standards, but we use a custom threshold for each light and dark modes\n * to preserve design consistency.\n */\nexport default function isDark(hexcolor: string | null): boolean {\n // return if hexcolor is undefined or shorter than 4 characters, shortest hex form is #333;\n // decided against regex hex color validation for performance considerations\n if (!hexcolor || hexcolor.length < 4) {\n return false;\n }\n\n let hexnumbers = hexcolor.replace('#', '');\n\n if (hexnumbers.length === 3) {\n hexnumbers += hexnumbers;\n }\n\n const r = parseInt(hexnumbers.slice(0, 2), 16);\n const g = parseInt(hexnumbers.slice(2, 4), 16);\n const b = parseInt(hexnumbers.slice(4, 6), 16);\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n\n const threshold = parseInt(getComputedStyle(document.body).getPropertyValue('--yiq-threshold').trim()) || 128;\n\n return yiq < threshold;\n}\n","import isDark from '../utils/isDark';\n\nexport default function textContrastClass(hexcolor: string | null | undefined): string {\n if (!hexcolor) return 'text-contrast--unchanged';\n\n return isDark(hexcolor) ? 'text-contrast--light' : 'text-contrast--dark';\n}\n","type KeyboardEventHandler = (event: KeyboardEvent) => void;\ntype ShouldHandle = (event: KeyboardEvent) => boolean;\n\nenum Keys {\n Enter = 13,\n Escape = 27,\n Space = 32,\n ArrowUp = 38,\n ArrowDown = 40,\n ArrowLeft = 37,\n ArrowRight = 39,\n Tab = 9,\n Backspace = 8,\n}\n\n/**\n * The `KeyboardNavigatable` class manages lists that can be navigated with the\n * keyboard, calling callbacks for each actions.\n *\n * This helper encapsulates the key binding logic, providing a simple fluent\n * API for use.\n */\nexport default class KeyboardNavigatable {\n /**\n * Callback to be executed for a specified input.\n */\n protected callbacks = new Map<number, KeyboardEventHandler>();\n\n /**\n * Callback that determines whether keyboard input should be handled.\n * By default, always handle keyboard navigation.\n */\n protected whenCallback: ShouldHandle = (event: KeyboardEvent) => true;\n\n /**\n * Provide a callback to be executed when navigating upwards.\n *\n * This will be triggered by the Up key.\n */\n onUp(callback: KeyboardEventHandler): KeyboardNavigatable {\n this.callbacks.set(Keys.ArrowUp, (e) => {\n e.preventDefault();\n callback(e);\n });\n\n return this;\n }\n\n /**\n * Provide a callback to be executed when navigating downwards.\n *\n * This will be triggered by the Down key.\n */\n onDown(callback: KeyboardEventHandler): KeyboardNavigatable {\n this.callbacks.set(Keys.ArrowDown, (e) => {\n e.preventDefault();\n callback(e);\n });\n\n return this;\n }\n\n /**\n * Provide a callback to be executed when the current item is selected..\n *\n * This will be triggered by the Return key (and Tab key, if not disabled).\n */\n onSelect(callback: KeyboardEventHandler, ignoreTabPress: boolean = false): KeyboardNavigatable {\n const handler: KeyboardEventHandler = (e) => {\n e.preventDefault();\n callback(e);\n };\n\n if (!ignoreTabPress) this.callbacks.set(Keys.Tab, handler);\n this.callbacks.set(Keys.Enter, handler);\n\n return this;\n }\n\n /**\n * Provide a callback to be executed when the current item is tabbed into.\n *\n * This will be triggered by the Tab key.\n */\n onTab(callback: KeyboardEventHandler): KeyboardNavigatable {\n const handler: KeyboardEventHandler = (e) => {\n e.preventDefault();\n callback(e);\n };\n\n this.callbacks.set(9, handler);\n\n return this;\n }\n\n /**\n * Provide a callback to be executed when the navigation is canceled.\n *\n * This will be triggered by the Escape key.\n */\n onCancel(callback: KeyboardEventHandler): KeyboardNavigatable {\n this.callbacks.set(Keys.Escape, (e) => {\n e.stopPropagation();\n e.preventDefault();\n callback(e);\n });\n\n return this;\n }\n\n /**\n * Provide a callback to be executed when previous input is removed.\n *\n * This will be triggered by the Backspace key.\n */\n onRemove(callback: KeyboardEventHandler): KeyboardNavigatable {\n this.callbacks.set(Keys.Backspace, (e) => {\n if (e instanceof KeyboardEvent && e.target instanceof HTMLInputElement && e.target.selectionStart === 0 && e.target.selectionEnd === 0) {\n callback(e);\n e.preventDefault();\n }\n });\n\n return this;\n }\n\n /**\n * Provide a callback that determines whether keyboard input should be handled.\n */\n when(callback: ShouldHandle): KeyboardNavigatable {\n this.whenCallback = callback;\n\n return this;\n }\n\n /**\n * Set up the navigation key bindings on the given jQuery element.\n */\n bindTo($element: JQuery<HTMLElement>) {\n // Handle navigation key events on the navigatable element.\n $element[0].addEventListener('keydown', this.navigate.bind(this));\n }\n\n /**\n * Interpret the given keyboard event as navigation commands.\n */\n navigate(event: KeyboardEvent) {\n // This callback determines whether keyboard should be handled or ignored.\n if (!this.whenCallback(event)) return;\n\n const keyCallback = this.callbacks.get(event.which);\n if (keyCallback) {\n keyCallback(event);\n }\n }\n}\n","import Tooltip from './Tooltip';\nimport Component, { ComponentAttrs } from '../Component';\nimport icon from '../helpers/icon';\nimport classList from '../utils/classList';\nimport textContrastClass from '../helpers/textContrastClass';\n\nexport interface IBadgeAttrs extends ComponentAttrs {\n icon: string;\n type?: string;\n label?: string;\n color?: string;\n}\n\n/**\n * The `Badge` component represents a user/discussion badge, indicating some\n * status (e.g. a discussion is stickied, a user is an admin).\n *\n * A badge may have the following special attrs:\n *\n * - `type` The type of badge this is. This will be used to give the badge a\n * class name of `Badge--{type}`.\n * - `icon` The name of an icon to show inside the badge.\n * - `label`\n *\n * All other attrs will be assigned as attributes on the badge element.\n */\nexport default class Badge<CustomAttrs extends IBadgeAttrs = IBadgeAttrs> extends Component<CustomAttrs> {\n view() {\n const { type, icon: iconName, label, color, style = {}, ...attrs } = this.attrs;\n\n const className = classList('Badge', [type && `Badge--${type}`], attrs.className, textContrastClass(color));\n\n const iconChild = iconName ? icon(iconName, { className: 'Badge-icon' }) : m.trust(' ');\n\n const newStyle = { ...style, '--badge-bg': color };\n\n const badgeAttrs = {\n ...attrs,\n className,\n style: newStyle,\n };\n\n const badgeNode = <div {...badgeAttrs}>{iconChild}</div>;\n\n // If we don't have a tooltip label, don't render the tooltip component.\n if (!label) return badgeNode;\n\n return <Tooltip text={label}>{badgeNode}</Tooltip>;\n }\n}\n","import app from '../../common/app';\nimport Model from '../Model';\nimport computed from '../utils/computed';\nimport ItemList from '../utils/ItemList';\nimport Badge from '../components/Badge';\nimport Mithril from 'mithril';\nimport Post from './Post';\nimport User from './User';\n\nexport default class Discussion extends Model {\n title() {\n return Model.attribute<string>('title').call(this);\n }\n slug() {\n return Model.attribute<string>('slug').call(this);\n }\n\n createdAt() {\n return Model.attribute<Date | undefined, string | undefined>('createdAt', Model.transformDate).call(this);\n }\n user() {\n return Model.hasOne<User | null>('user').call(this);\n }\n firstPost() {\n return Model.hasOne<Post | null>('firstPost').call(this);\n }\n\n lastPostedAt() {\n return Model.attribute('lastPostedAt', Model.transformDate).call(this);\n }\n lastPostedUser() {\n return Model.hasOne<User | null>('lastPostedUser').call(this);\n }\n lastPost() {\n return Model.hasOne<Post | null>('lastPost').call(this);\n }\n lastPostNumber() {\n return Model.attribute<number | null | undefined>('lastPostNumber').call(this);\n }\n\n commentCount() {\n return Model.attribute<number | undefined>('commentCount').call(this);\n }\n replyCount() {\n return computed<number, this>('commentCount', (commentCount) => Math.max(0, ((commentCount as number) ?? 0) - 1)).call(this);\n }\n posts() {\n return Model.hasMany<Post>('posts').call(this);\n }\n mostRelevantPost() {\n return Model.hasOne<Post | null>('mostRelevantPost').call(this);\n }\n\n lastReadAt() {\n return Model.attribute('lastReadAt', Model.transformDate).call(this);\n }\n lastReadPostNumber() {\n return Model.attribute<number | null | undefined>('lastReadPostNumber').call(this);\n }\n isUnread() {\n return computed<boolean, this>('unreadCount', (unreadCount) => !!unreadCount).call(this);\n }\n isRead() {\n return computed<boolean, this>('unreadCount', (unreadCount) => !!(app.session.user && !unreadCount)).call(this);\n }\n\n hiddenAt() {\n return Model.attribute('hiddenAt', Model.transformDate).call(this);\n }\n hiddenUser() {\n return Model.hasOne<User | null>('hiddenUser').call(this);\n }\n isHidden() {\n return computed<boolean, this>('hiddenAt', (hiddenAt) => !!hiddenAt).call(this);\n }\n\n canReply() {\n return Model.attribute<boolean | undefined>('canReply').call(this);\n }\n canRename() {\n return Model.attribute<boolean | undefined>('canRename').call(this);\n }\n canHide() {\n return Model.attribute<boolean | undefined>('canHide').call(this);\n }\n canDelete() {\n return Model.attribute<boolean | undefined>('canDelete').call(this);\n }\n\n /**\n * Remove a post from the discussion's posts relationship.\n */\n removePost(id: string): void {\n const posts = this.rawRelationship<Post[]>('posts');\n\n if (!posts) {\n return;\n }\n\n posts.some((data, i) => {\n if (id === data.id) {\n posts.splice(i, 1);\n return true;\n }\n\n return false;\n });\n }\n\n /**\n * Get the estimated number of unread posts in this discussion for the current\n * user.\n */\n unreadCount(): number {\n const user = app.session.user;\n\n if (user && (user.markedAllAsReadAt()?.getTime() ?? 0) < this.lastPostedAt()?.getTime()!) {\n const unreadCount = Math.max(0, (this.lastPostNumber() ?? 0) - (this.lastReadPostNumber() || 0));\n // If posts have been deleted, it's possible that the unread count could exceed the\n // actual post count. As such, we take the min of the two to ensure this isn't an issue.\n return Math.min(unreadCount, this.commentCount() ?? 0);\n }\n\n return 0;\n }\n\n /**\n * Get the Badge components that apply to this discussion.\n */\n badges(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n if (this.isHidden()) {\n items.add('hidden', <Badge type=\"hidden\" icon=\"fas fa-trash\" label={app.translator.trans('core.lib.badge.hidden_tooltip')} />);\n }\n\n return items;\n }\n\n /**\n * Get a list of all of the post IDs in this discussion.\n */\n postIds(): string[] {\n return this.rawRelationship<Post[]>('posts')?.map((link) => link.id) ?? [];\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport listItems from '../../common/helpers/listItems';\nimport Button from '../../common/components/Button';\nimport Link from '../../common/components/Link';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport Discussion from '../../common/models/Discussion';\nimport ItemList from '../../common/utils/ItemList';\nimport Tooltip from '../../common/components/Tooltip';\n\n/**\n * The `NotificationList` component displays a list of the logged-in user's\n * notifications, grouped by discussion.\n */\nexport default class NotificationList extends Component {\n view() {\n const state = this.attrs.state;\n\n return (\n <div className=\"NotificationList\">\n <div className=\"NotificationList-header\">\n <h4 className=\"App-titleControl App-titleControl--text\">{app.translator.trans('core.forum.notifications.title')}</h4>\n\n <div className=\"App-primaryControl\">{this.controlItems().toArray()}</div>\n </div>\n\n <div className=\"NotificationList-content\">{this.content(state)}</div>\n </div>\n );\n }\n\n controlItems() {\n const items = new ItemList();\n const state = this.attrs.state;\n\n items.add(\n 'mark_all_as_read',\n <Tooltip text={app.translator.trans('core.forum.notifications.mark_all_as_read_tooltip')}>\n <Button\n className=\"Button Button--link\"\n data-container=\".NotificationList\"\n icon=\"fas fa-check\"\n title={app.translator.trans('core.forum.notifications.mark_all_as_read_tooltip')}\n onclick={state.markAllAsRead.bind(state)}\n />\n </Tooltip>,\n 70\n );\n\n items.add(\n 'delete_all',\n <Tooltip text={app.translator.trans('core.forum.notifications.delete_all_tooltip')}>\n <Button\n className=\"Button Button--link\"\n data-container=\".NotificationList\"\n icon=\"fas fa-trash-alt\"\n title={app.translator.trans('core.forum.notifications.delete_all_tooltip')}\n onclick={() => {\n if (confirm(app.translator.trans('core.forum.notifications.delete_all_confirm'))) {\n state.deleteAll.call(state);\n }\n }}\n />\n </Tooltip>,\n 50\n );\n\n return items;\n }\n\n content(state) {\n if (state.isLoading()) {\n return <LoadingIndicator className=\"LoadingIndicator--block\" />;\n }\n\n if (state.hasItems()) {\n return state.getPages().map((page) => {\n const groups = [];\n const discussions = {};\n\n page.items.forEach((notification) => {\n const subject = notification.subject();\n\n if (typeof subject === 'undefined') return;\n\n // Get the discussion that this notification is related to. If it's not\n // directly related to a discussion, it may be related to a post or\n // other entity which is related to a discussion.\n let discussion = null;\n if (subject instanceof Discussion) discussion = subject;\n else if (subject && subject.discussion) discussion = subject.discussion();\n\n // If the notification is not related to a discussion directly or\n // indirectly, then we will assign it to a neutral group.\n const key = discussion ? discussion.id() : 0;\n discussions[key] = discussions[key] || { discussion: discussion, notifications: [] };\n discussions[key].notifications.push(notification);\n\n if (groups.indexOf(discussions[key]) === -1) {\n groups.push(discussions[key]);\n }\n });\n\n return groups.map((group) => {\n const badges = group.discussion && group.discussion.badges().toArray();\n\n return (\n <div className=\"NotificationGroup\">\n {group.discussion ? (\n <Link className=\"NotificationGroup-header\" href={app.route.discussion(group.discussion)}>\n {badges && !!badges.length && <ul className=\"NotificationGroup-badges badges\">{listItems(badges)}</ul>}\n <span>{group.discussion.title()}</span>\n </Link>\n ) : (\n <div className=\"NotificationGroup-header\">{app.forum.attribute('title')}</div>\n )}\n\n <ul className=\"NotificationGroup-content\">\n {group.notifications.map((notification) => {\n const NotificationComponent = app.notificationComponents[notification.contentType()];\n return (\n !!NotificationComponent && (\n <li>\n <NotificationComponent notification={notification} />\n </li>\n )\n );\n })}\n </ul>\n </div>\n );\n });\n });\n }\n\n return <div className=\"NotificationList-empty\">{app.translator.trans('core.forum.notifications.empty_text')}</div>;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.$notifications = this.$('.NotificationList-content');\n\n // If we are on the notifications page, the window will be scrolling and not the $notifications element.\n this.$scrollParent = this.inPanel() ? this.$notifications : $(window);\n\n this.boundScrollHandler = this.scrollHandler.bind(this);\n this.$scrollParent.on('scroll', this.boundScrollHandler);\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n this.$scrollParent.off('scroll', this.boundScrollHandler);\n }\n\n scrollHandler() {\n const state = this.attrs.state;\n\n // Whole-page scroll events are listened to on `window`, but we need to get the actual\n // scrollHeight, scrollTop, and clientHeight from the document element.\n const scrollParent = this.inPanel() ? this.$scrollParent[0] : document.documentElement;\n\n // On very short screens, the scrollHeight + scrollTop might not reach the clientHeight\n // by a fraction of a pixel, so we compensate for that.\n const atBottom = Math.abs(scrollParent.scrollHeight - scrollParent.scrollTop - scrollParent.clientHeight) <= 1;\n\n if (state.hasNext() && !state.isLoadingNext() && atBottom) {\n state.loadNext();\n }\n }\n\n /**\n * If the NotificationList component isn't in a panel (e.g. on NotificationPage when mobile),\n * we need to listen to scroll events on the window, and get scroll state from the body.\n */\n inPanel() {\n return this.$notifications.css('overflow') === 'auto';\n }\n}\n","import app from '../../forum/app';\nimport Dropdown, { IDropdownAttrs } from '../../common/components/Dropdown';\nimport icon from '../../common/helpers/icon';\nimport classList from '../../common/utils/classList';\nimport NotificationList from './NotificationList';\nimport extractText from '../../common/utils/extractText';\nimport type Mithril from 'mithril';\n\nexport interface INotificationsDropdown extends IDropdownAttrs {}\n\nexport default class NotificationsDropdown<CustomAttrs extends IDropdownAttrs = IDropdownAttrs> extends Dropdown<CustomAttrs> {\n static initAttrs(attrs: INotificationsDropdown) {\n attrs.className ||= 'NotificationsDropdown';\n attrs.buttonClassName ||= 'Button Button--flat';\n attrs.menuClassName ||= 'Dropdown-menu--right';\n attrs.label ||= extractText(app.translator.trans('core.forum.notifications.tooltip'));\n attrs.icon ||= 'fas fa-bell';\n\n // For best a11y support, both `title` and `aria-label` should be used\n attrs.accessibleToggleLabel ||= extractText(app.translator.trans('core.forum.notifications.toggle_dropdown_accessible_label'));\n\n super.initAttrs(attrs);\n }\n\n getButton(children: Mithril.ChildArray): Mithril.Vnode<any, any> {\n const newNotifications = this.getNewCount();\n\n const vdom = super.getButton(children);\n\n vdom.attrs.title = this.attrs.label;\n\n vdom.attrs.className = classList(vdom.attrs.className, [newNotifications && 'new']);\n vdom.attrs.onclick = this.onclick.bind(this);\n\n return vdom;\n }\n\n getButtonContent(): Mithril.ChildArray {\n const unread = this.getUnreadCount();\n\n return [\n this.attrs.icon ? icon(this.attrs.icon, { className: 'Button-icon' }) : null,\n unread !== 0 && <span className=\"NotificationsDropdown-unread\">{unread}</span>,\n <span className=\"Button-label\">{this.attrs.label}</span>,\n ];\n }\n\n getMenu() {\n return (\n <div className={classList('Dropdown-menu', this.attrs.menuClassName)} onclick={this.menuClick.bind(this)}>\n {this.showing && <NotificationList state={this.attrs.state} />}\n </div>\n );\n }\n\n onclick() {\n if (app.drawer.isOpen()) {\n this.goToRoute();\n } else {\n this.attrs.state.load();\n }\n }\n\n goToRoute() {\n m.route.set(app.route('notifications'));\n }\n\n getUnreadCount() {\n return app.session.user!.unreadNotificationCount();\n }\n\n getNewCount() {\n return app.session.user!.newNotificationCount();\n }\n\n menuClick(e: MouseEvent) {\n // Don't close the notifications dropdown if the user is opening a link in a\n // new tab or window.\n if (e.shiftKey || e.metaKey || e.ctrlKey || e.button === 1) e.stopPropagation();\n }\n}\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 if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\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 function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import app from '../../forum/app';\nimport highlight from '../../common/helpers/highlight';\nimport LinkButton from '../../common/components/LinkButton';\nimport Link from '../../common/components/Link';\nimport { SearchSource } from './Search';\nimport type Mithril from 'mithril';\nimport Discussion from '../../common/models/Discussion';\n\n/**\n * The `DiscussionsSearchSource` finds and displays discussion search results in\n * the search dropdown.\n */\nexport default class DiscussionsSearchSource implements SearchSource {\n protected results = new Map<string, Discussion[]>();\n\n async search(query: string): Promise<void> {\n query = query.toLowerCase();\n\n this.results.set(query, []);\n\n const params = {\n filter: { q: query },\n page: { limit: 3 },\n include: 'mostRelevantPost',\n };\n\n return app.store.find<Discussion[]>('discussions', params).then((results) => {\n this.results.set(query, results);\n m.redraw();\n });\n }\n\n view(query: string): Array<Mithril.Vnode> {\n query = query.toLowerCase();\n\n const results = (this.results.get(query) || []).map((discussion) => {\n const mostRelevantPost = discussion.mostRelevantPost();\n\n return (\n <li className=\"DiscussionSearchResult\" data-index={'discussions' + discussion.id()}>\n <Link href={app.route.discussion(discussion, (mostRelevantPost && mostRelevantPost.number()) || 0)}>\n <div className=\"DiscussionSearchResult-title\">{highlight(discussion.title(), query)}</div>\n {!!mostRelevantPost && (\n <div className=\"DiscussionSearchResult-excerpt\">{highlight(mostRelevantPost.contentPlain() ?? '', query, 100)}</div>\n )}\n </Link>\n </li>\n );\n }) as Array<Mithril.Vnode>;\n\n return [\n <li className=\"Dropdown-header\">{app.translator.trans('core.forum.search.discussions_heading')}</li>,\n <li>\n <LinkButton icon=\"fas fa-search\" href={app.route('index', { q: query })}>\n {app.translator.trans('core.forum.search.all_discussions_button', { query })}\n </LinkButton>\n </li>,\n ...results,\n ];\n }\n}\n","import type Mithril from 'mithril';\n\nimport app from '../../forum/app';\nimport highlight from '../../common/helpers/highlight';\nimport avatar from '../../common/helpers/avatar';\nimport username from '../../common/helpers/username';\nimport Link from '../../common/components/Link';\nimport { SearchSource } from './Search';\nimport User from '../../common/models/User';\n\n/**\n * The `UsersSearchSource` finds and displays user search results in the search\n * dropdown.\n */\nexport default class UsersSearchResults implements SearchSource {\n protected results = new Map<string, User[]>();\n\n async search(query: string): Promise<void> {\n return app.store\n .find<User[]>('users', {\n filter: { q: query },\n page: { limit: 5 },\n })\n .then((results) => {\n this.results.set(query, results);\n m.redraw();\n });\n }\n\n view(query: string): Array<Mithril.Vnode> {\n query = query.toLowerCase();\n\n const results = (this.results.get(query) || [])\n .concat(\n app.store\n .all<User>('users')\n .filter((user) => [user.username(), user.displayName()].some((value) => value.toLowerCase().substr(0, query.length) === query))\n )\n .filter((e, i, arr) => arr.lastIndexOf(e) === i)\n .sort((a, b) => a.displayName().localeCompare(b.displayName()));\n\n if (!results.length) return [];\n\n return [\n <li className=\"Dropdown-header\">{app.translator.trans('core.forum.search.users_heading')}</li>,\n ...results.map((user) => {\n const name = username(user);\n\n const children = [highlight(name.text as string, query)];\n\n return (\n <li className=\"UserSearchResult\" data-index={'users' + user.id()}>\n <Link href={app.route.user(user)}>\n {avatar(user)}\n {{ ...name, text: undefined, children }}\n </Link>\n </li>\n );\n }),\n ];\n }\n}\n","import app from '../../forum/app';\nimport Component, { ComponentAttrs } from '../../common/Component';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport ItemList from '../../common/utils/ItemList';\nimport classList from '../../common/utils/classList';\nimport extractText from '../../common/utils/extractText';\nimport KeyboardNavigatable from '../../common/utils/KeyboardNavigatable';\nimport icon from '../../common/helpers/icon';\nimport SearchState from '../states/SearchState';\nimport DiscussionsSearchSource from './DiscussionsSearchSource';\nimport UsersSearchSource from './UsersSearchSource';\nimport { fireDeprecationWarning } from '../../common/helpers/fireDebugWarning';\nimport type Mithril from 'mithril';\n\n/**\n * The `SearchSource` interface defines a section of search results in the\n * search dropdown.\n *\n * Search sources should be registered with the `Search` component class\n * by extending the `sourceItems` method. When the user types a\n * query, each search source will be prompted to load search results via the\n * `search` method. When the dropdown is redrawn, it will be constructed by\n * putting together the output from the `view` method of each source.\n */\nexport interface SearchSource {\n /**\n * Make a request to get results for the given query.\n * The results will be updated internally in the search source, not exposed.\n */\n search(query: string): Promise<void>;\n\n /**\n * Get an array of virtual <li>s that list the search results for the given\n * query.\n */\n view(query: string): Array<Mithril.Vnode>;\n}\n\nexport interface SearchAttrs extends ComponentAttrs {\n /** The type of alert this is. Will be used to give the alert a class name of `Alert--{type}`. */\n state: SearchState;\n}\n\n/**\n * The `Search` component displays a menu of as-you-type results from a variety\n * of sources.\n *\n * The search box will be 'activated' if the app's search state's\n * getInitialSearch() value is a truthy value. If this is the case, an 'x'\n * button will be shown next to the search field, and clicking it will clear the search.\n *\n * ATTRS:\n *\n * - state: SearchState instance.\n */\nexport default class Search<T extends SearchAttrs = SearchAttrs> extends Component<T, SearchState> {\n /**\n * The minimum query length before sources are searched.\n */\n protected static MIN_SEARCH_LEN = 3;\n\n /**\n * The instance of `SearchState` for this component.\n */\n protected searchState!: SearchState;\n\n /**\n * The instance of `SearchState` for this component.\n *\n * @deprecated Replace with`this.searchState` instead.\n */\n // TODO: [Flarum 2.0] Remove this.\n // @ts-expect-error This is a get accessor, while superclass defines this as a property. This is needed to prevent breaking changes, however.\n get state() {\n fireDeprecationWarning('`state` property of the Search component is deprecated', '3212');\n return this.searchState;\n }\n set state(state: SearchState) {\n // Workaround to prevent triggering deprecation warnings due to Mithril\n // setting state to undefined when creating components\n state !== undefined && fireDeprecationWarning('`state` property of the Search component is deprecated', '3212');\n this.searchState = state;\n }\n\n /**\n * Whether or not the search input has focus.\n */\n protected hasFocus = false;\n\n /**\n * An array of SearchSources.\n */\n protected sources?: SearchSource[];\n\n /**\n * The number of sources that are still loading results.\n */\n protected loadingSources = 0;\n\n /**\n * The index of the currently-selected <li> in the results list. This can be\n * a unique string (to account for the fact that an item's position may jump\n * around as new results load), but otherwise it will be numeric (the\n * sequential position within the list).\n */\n protected index: number = 0;\n\n protected navigator!: KeyboardNavigatable;\n\n protected searchTimeout?: number;\n\n private updateMaxHeightHandler?: () => void;\n\n oninit(vnode: Mithril.Vnode<T, this>) {\n super.oninit(vnode);\n\n this.searchState = this.attrs.state;\n }\n\n view() {\n const currentSearch = this.searchState.getInitialSearch();\n\n // Initialize search sources in the view rather than the constructor so\n // that we have access to app.forum.\n if (!this.sources) this.sources = this.sourceItems().toArray();\n\n // Hide the search view if no sources were loaded\n if (!this.sources.length) return <div></div>;\n\n const searchLabel = extractText(app.translator.trans('core.forum.header.search_placeholder'));\n\n const isActive = !!currentSearch;\n const shouldShowResults = !!(this.searchState.getValue() && this.hasFocus);\n const shouldShowClearButton = !!(!this.loadingSources && this.searchState.getValue());\n\n return (\n <div\n role=\"search\"\n aria-label={app.translator.trans('core.forum.header.search_role_label')}\n className={classList('Search', {\n open: this.searchState.getValue() && this.hasFocus,\n focused: this.hasFocus,\n active: isActive,\n loading: !!this.loadingSources,\n })}\n >\n <div className=\"Search-input\">\n <input\n aria-label={searchLabel}\n className=\"FormControl\"\n type=\"search\"\n placeholder={searchLabel}\n value={this.searchState.getValue()}\n oninput={(e: InputEvent) => this.searchState.setValue((e?.target as HTMLInputElement)?.value)}\n onfocus={() => (this.hasFocus = true)}\n onblur={() => (this.hasFocus = false)}\n />\n {!!this.loadingSources && <LoadingIndicator size=\"small\" display=\"inline\" containerClassName=\"Button Button--icon Button--link\" />}\n {shouldShowClearButton && (\n <button\n className=\"Search-clear Button Button--icon Button--link\"\n onclick={this.clear.bind(this)}\n aria-label={app.translator.trans('core.forum.header.search_clear_button_accessible_label')}\n type=\"button\"\n >\n {icon('fas fa-times-circle')}\n </button>\n )}\n </div>\n <ul\n className=\"Dropdown-menu Search-results\"\n aria-hidden={!shouldShowResults || undefined}\n aria-live={shouldShowResults ? 'polite' : undefined}\n >\n {shouldShowResults && this.sources.map((source) => source.view(this.searchState.getValue()))}\n </ul>\n </div>\n );\n }\n\n updateMaxHeight() {\n // Since extensions might add elements above the search box on mobile,\n // we need to calculate and set the max height dynamically.\n const resultsElementMargin = 14;\n const maxHeight =\n window.innerHeight - this.element.querySelector('.Search-input>.FormControl')!.getBoundingClientRect().bottom - resultsElementMargin;\n\n this.element.querySelector<HTMLElement>('.Search-results')?.style?.setProperty('max-height', `${maxHeight}px`);\n }\n\n onupdate(vnode: Mithril.VnodeDOM<T, this>) {\n super.onupdate(vnode);\n\n // Highlight the item that is currently selected.\n this.setIndex(this.getCurrentNumericIndex());\n\n // If there are no sources, the search view is not shown.\n if (!this.sources?.length) return;\n\n this.updateMaxHeight();\n }\n\n oncreate(vnode: Mithril.VnodeDOM<T, this>) {\n super.oncreate(vnode);\n\n // If there are no sources, we shouldn't initialize logic for\n // search elements, as they will not be shown.\n if (!this.sources?.length) return;\n\n const search = this;\n const state = this.searchState;\n\n // Highlight the item that is currently selected.\n this.setIndex(this.getCurrentNumericIndex());\n\n this.$('.Search-results')\n .on('mousedown', (e) => e.preventDefault())\n .on('click', () => this.$('input').trigger('blur'))\n\n // Whenever the mouse is hovered over a search result, highlight it.\n .on('mouseenter', '> li:not(.Dropdown-header)', function () {\n search.setIndex(search.selectableItems().index(this));\n });\n\n const $input = this.$('input') as JQuery<HTMLInputElement>;\n\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .onUp(() => this.setIndex(this.getCurrentNumericIndex() - 1, true))\n .onDown(() => this.setIndex(this.getCurrentNumericIndex() + 1, true))\n .onSelect(this.selectResult.bind(this), true)\n .onCancel(this.clear.bind(this))\n .bindTo($input);\n\n // Handle input key events on the search input, triggering results to load.\n $input\n .on('input focus', function () {\n const query = this.value.toLowerCase();\n\n if (!query) return;\n\n if (search.searchTimeout) clearTimeout(search.searchTimeout);\n search.searchTimeout = window.setTimeout(() => {\n if (state.isCached(query)) return;\n\n if (query.length >= (search.constructor as typeof Search).MIN_SEARCH_LEN) {\n search.sources?.map((source) => {\n if (!source.search) return;\n\n search.loadingSources++;\n\n source.search(query).then(() => {\n search.loadingSources = Math.max(0, search.loadingSources - 1);\n m.redraw();\n });\n });\n }\n\n state.cache(query);\n m.redraw();\n }, 250);\n })\n\n .on('focus', function () {\n $(this)\n .one('mouseup', (e) => e.preventDefault())\n .trigger('select');\n });\n\n this.updateMaxHeightHandler = this.updateMaxHeight.bind(this);\n window.addEventListener('resize', this.updateMaxHeightHandler);\n }\n\n onremove(vnode: Mithril.VnodeDOM<T, this>) {\n super.onremove(vnode);\n\n if (this.updateMaxHeightHandler) {\n window.removeEventListener('resize', this.updateMaxHeightHandler);\n }\n }\n\n /**\n * Navigate to the currently selected search result and close the list.\n */\n selectResult() {\n if (this.searchTimeout) clearTimeout(this.searchTimeout);\n\n this.loadingSources = 0;\n\n const selectedUrl = this.getItem(this.index).find('a').attr('href');\n if (this.searchState.getValue() && selectedUrl) {\n m.route.set(selectedUrl);\n } else {\n this.clear();\n }\n\n this.$('input').blur();\n }\n\n /**\n * Clear the search\n */\n clear() {\n this.searchState.clear();\n }\n\n /**\n * Build an item list of SearchSources.\n */\n sourceItems(): ItemList<SearchSource> {\n const items = new ItemList<SearchSource>();\n\n if (app.forum.attribute('canViewForum')) items.add('discussions', new DiscussionsSearchSource());\n if (app.forum.attribute('canSearchUsers')) items.add('users', new UsersSearchSource());\n\n return items;\n }\n\n /**\n * Get all of the search result items that are selectable.\n */\n selectableItems(): JQuery {\n return this.$('.Search-results > li:not(.Dropdown-header)');\n }\n\n /**\n * Get the position of the currently selected search result item.\n * Returns zero if not found.\n */\n getCurrentNumericIndex(): number {\n return Math.max(0, this.selectableItems().index(this.getItem(this.index)));\n }\n\n /**\n * Get the <li> in the search results with the given index (numeric or named).\n */\n getItem(index: number): JQuery {\n const $items = this.selectableItems();\n let $item = $items.filter(`[data-index=\"${index}\"]`);\n\n if (!$item.length) {\n $item = $items.eq(index);\n }\n\n return $item;\n }\n\n /**\n * Set the currently-selected search result item to the one with the given\n * index.\n */\n setIndex(index: number, scrollToItem: boolean = false) {\n const $items = this.selectableItems();\n const $dropdown = $items.parent();\n\n let fixedIndex = index;\n if (index < 0) {\n fixedIndex = $items.length - 1;\n } else if (index >= $items.length) {\n fixedIndex = 0;\n }\n\n const $item = $items.removeClass('active').eq(fixedIndex).addClass('active');\n\n this.index = parseInt($item.attr('data-index') as string) || fixedIndex;\n\n if (scrollToItem) {\n const dropdownScroll = $dropdown.scrollTop()!;\n const dropdownTop = $dropdown.offset()!.top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight()!;\n const itemTop = $item.offset()!.top;\n const itemBottom = itemTop + $item.outerHeight()!;\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({ scrollTop }, 100);\n }\n }\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport Button from '../../common/components/Button';\nimport LogInModal from './LogInModal';\nimport SignUpModal from './SignUpModal';\nimport SessionDropdown from './SessionDropdown';\nimport SelectDropdown from '../../common/components/SelectDropdown';\nimport NotificationsDropdown from './NotificationsDropdown';\nimport ItemList from '../../common/utils/ItemList';\nimport listItems from '../../common/helpers/listItems';\nimport Search from '../components/Search';\n\n/**\n * The `HeaderSecondary` component displays secondary header controls, such as\n * the search box and the user menu. On the default skin, these are shown on the\n * right side of the header.\n */\nexport default class HeaderSecondary extends Component {\n view() {\n return <ul className=\"Header-controls\">{listItems(this.items().toArray())}</ul>;\n }\n\n /**\n * Build an item list for the controls.\n *\n * @return {ItemList}\n */\n items() {\n const items = new ItemList();\n\n items.add('search', <Search state={app.search} />, 30);\n\n if (app.forum.attribute('showLanguageSelector') && Object.keys(app.data.locales).length > 1) {\n const locales = [];\n\n for (const locale in app.data.locales) {\n locales.push(\n <Button\n active={app.data.locale === locale}\n icon={app.data.locale === locale ? 'fas fa-check' : true}\n onclick={() => {\n if (app.session.user) {\n app.session.user.savePreferences({ locale }).then(() => window.location.reload());\n } else {\n document.cookie = `locale=${locale}; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT`;\n window.location.reload();\n }\n }}\n >\n {app.data.locales[locale]}\n </Button>\n );\n }\n\n items.add(\n 'locale',\n <SelectDropdown\n buttonClassName=\"Button Button--link\"\n accessibleToggleLabel={app.translator.trans('core.forum.header.locale_dropdown_accessible_label')}\n >\n {locales}\n </SelectDropdown>,\n 20\n );\n }\n\n if (app.session.user) {\n items.add('notifications', <NotificationsDropdown state={app.notifications} />, 10);\n items.add('session', <SessionDropdown />, 0);\n } else {\n if (app.forum.attribute('allowSignUp')) {\n items.add(\n 'signUp',\n <Button className=\"Button Button--link\" onclick={() => app.modal.show(SignUpModal)}>\n {app.translator.trans('core.forum.header.sign_up_link')}\n </Button>,\n 10\n );\n }\n\n items.add(\n 'logIn',\n <Button className=\"Button Button--link\" onclick={() => app.modal.show(LogInModal)}>\n {app.translator.trans('core.forum.header.log_in_link')}\n </Button>,\n 0\n );\n }\n\n return items;\n }\n}\n","import Button from '../../common/components/Button';\n\n/**\n * The `ComposerButton` component displays a button suitable for the composer\n * controls.\n */\nexport default class ComposerButton extends Button {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.className = attrs.className || 'Button Button--icon Button--link';\n }\n}\n","import app from '../../forum/app';\nimport subclassOf from '../../common/utils/subclassOf';\nimport Stream from '../../common/utils/Stream';\nimport ReplyComposer from '../components/ReplyComposer';\n\nclass ComposerState {\n constructor() {\n /**\n * The composer's current position.\n *\n * @type {ComposerState.Position}\n */\n this.position = ComposerState.Position.HIDDEN;\n\n /**\n * The composer's intended height, which can be modified by the user\n * (by dragging the composer handle).\n *\n * @type {number}\n */\n this.height = null;\n\n /**\n * The dynamic component being shown inside the composer.\n *\n * @type {Object}\n */\n this.body = { attrs: {} };\n\n /**\n * A reference to the text editor that allows text manipulation.\n *\n * @type {import('../../common/utils/EditorDriverInterface')|null}\n */\n this.editor = null;\n\n this.clear();\n }\n\n /**\n * Load a content component into the composer.\n *\n * @param {typeof import('../components/ComposerBody').default} componentClass\n */\n load(componentClass, attrs) {\n const body = { componentClass, attrs };\n\n if (this.preventExit()) return;\n\n // If we load a similar component into the composer, then Mithril will be\n // able to diff the old/new contents and some DOM-related state from the\n // old composer will remain. To prevent this from happening, we clear the\n // component and force a redraw, so that the new component will be working\n // on a blank slate.\n if (this.isVisible()) {\n this.clear();\n m.redraw.sync();\n }\n\n this.body = body;\n }\n\n /**\n * Clear the composer's content component.\n */\n clear() {\n this.position = ComposerState.Position.HIDDEN;\n this.body = { attrs: {} };\n this.onExit = null;\n\n this.fields = {\n content: Stream(''),\n };\n\n if (this.editor) {\n this.editor.destroy();\n }\n this.editor = null;\n }\n\n /**\n * Show the composer.\n */\n show() {\n if (this.position === ComposerState.Position.NORMAL || this.position === ComposerState.Position.FULLSCREEN) return;\n\n this.position = ComposerState.Position.NORMAL;\n m.redraw.sync();\n }\n\n /**\n * Close the composer.\n */\n hide() {\n this.clear();\n m.redraw();\n }\n\n /**\n * Confirm with the user so they don't lose their content, then close the\n * composer.\n */\n close() {\n if (this.preventExit()) return;\n\n this.hide();\n }\n\n /**\n * Minimize the composer. Has no effect if the composer is hidden.\n */\n minimize() {\n if (!this.isVisible()) return;\n\n this.position = ComposerState.Position.MINIMIZED;\n m.redraw();\n }\n\n /**\n * Take the composer into fullscreen mode. Has no effect if the composer is\n * hidden.\n */\n fullScreen() {\n if (!this.isVisible()) return;\n\n this.position = ComposerState.Position.FULLSCREEN;\n m.redraw();\n }\n\n /**\n * Exit fullscreen mode.\n */\n exitFullScreen() {\n if (this.position !== ComposerState.Position.FULLSCREEN) return;\n\n this.position = ComposerState.Position.NORMAL;\n m.redraw();\n }\n\n /**\n * Determine whether the body matches the given component class and data.\n *\n * @param {object} type The component class to check against. Subclasses are accepted as well.\n * @param {object} data\n * @return {boolean}\n */\n bodyMatches(type, data = {}) {\n // Fail early when the body is of a different type\n if (!subclassOf(this.body.componentClass, type)) return false;\n\n // Now that the type is known to be correct, we loop through the provided\n // data to see whether it matches the data in the attributes for the body.\n return Object.keys(data).every((key) => this.body.attrs[key] === data[key]);\n }\n\n /**\n * Determine whether or not the Composer is visible.\n *\n * True when the composer is displayed on the screen and has a body component.\n * It could be open in \"normal\" or full-screen mode, or even minimized.\n *\n * @returns {boolean}\n */\n isVisible() {\n return this.position !== ComposerState.Position.HIDDEN;\n }\n\n /**\n * Determine whether or not the Composer is covering the screen.\n *\n * This will be true if the Composer is in full-screen mode on desktop,\n * or if we are on a mobile device, where we always consider the composer as full-screen..\n *\n * @return {boolean}\n */\n isFullScreen() {\n return this.position === ComposerState.Position.FULLSCREEN || app.screen() === 'phone';\n }\n\n /**\n * Check whether or not the user is currently composing a reply to a\n * discussion.\n *\n * @param {import('../../common/models/Discussion').default} discussion\n * @return {boolean}\n */\n composingReplyTo(discussion) {\n return this.isVisible() && this.bodyMatches(ReplyComposer, { discussion });\n }\n\n /**\n * Confirm with the user that they want to close the composer and lose their\n * content.\n *\n * @return {boolean} Whether or not the exit was cancelled.\n */\n preventExit() {\n if (!this.isVisible()) return;\n if (!this.onExit) return;\n\n if (this.onExit.callback()) {\n return !confirm(this.onExit.message);\n }\n }\n\n /**\n * Configure when / what to ask the user before closing the composer.\n *\n * The provided callback will be used to determine whether asking for\n * confirmation is necessary. If the callback returns true at the time of\n * closing, the provided text will be shown in a standard confirmation dialog.\n *\n * @param {() => boolean} callback\n * @param {string} message\n */\n preventClosingWhen(callback, message) {\n this.onExit = { callback, message };\n }\n\n /**\n * Minimum height of the Composer.\n * @returns {number}\n */\n minimumHeight() {\n return 200;\n }\n\n /**\n * Maxmimum height of the Composer.\n * @returns {number}\n */\n maximumHeight() {\n return $(window).height() - $('#header').outerHeight();\n }\n\n /**\n * Computed the composer's current height, based on the intended height, and\n * the composer's current state. This will be applied to the composer\n * content's DOM element.\n * @returns {number | string}\n */\n computedHeight() {\n // If the composer is minimized, then we don't want to set a height; we'll\n // let the CSS decide how high it is. If it's fullscreen, then we need to\n // make it as high as the window.\n if (this.position === ComposerState.Position.MINIMIZED) {\n return '';\n } else if (this.position === ComposerState.Position.FULLSCREEN) {\n return $(window).height();\n }\n\n // Otherwise, if it's normal or hidden, then we use the intended height.\n // We don't let the composer get too small or too big, though.\n return Math.max(this.minimumHeight(), Math.min(this.height, this.maximumHeight()));\n }\n}\n\nComposerState.Position = {\n HIDDEN: 'hidden',\n NORMAL: 'normal',\n MINIMIZED: 'minimized',\n FULLSCREEN: 'fullScreen',\n};\n\nexport default ComposerState;\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport ItemList from '../../common/utils/ItemList';\nimport ComposerButton from './ComposerButton';\nimport listItems from '../../common/helpers/listItems';\nimport classList from '../../common/utils/classList';\nimport ComposerState from '../states/ComposerState';\n\n/**\n * The `Composer` component displays the composer. It can be loaded with a\n * content component with `load` and then its position/state can be altered with\n * `show`, `hide`, `close`, `minimize`, `fullScreen`, and `exitFullScreen`.\n */\nexport default class Composer extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n /**\n * The composer's \"state\".\n *\n * @type {ComposerState}\n */\n this.state = this.attrs.state;\n\n /**\n * Whether or not the composer currently has focus.\n *\n * @type {Boolean}\n */\n this.active = false;\n\n // Store the initial position so that we can trigger animations correctly.\n this.prevPosition = this.state.position;\n }\n\n view() {\n const body = this.state.body;\n const classes = {\n normal: this.state.position === ComposerState.Position.NORMAL,\n minimized: this.state.position === ComposerState.Position.MINIMIZED,\n fullScreen: this.state.position === ComposerState.Position.FULLSCREEN,\n active: this.active,\n visible: this.state.isVisible(),\n };\n\n // Set up a handler so that clicks on the content will show the composer.\n const showIfMinimized = this.state.position === ComposerState.Position.MINIMIZED ? this.state.show.bind(this.state) : undefined;\n\n const ComposerBody = body.componentClass;\n\n return (\n <div className={'Composer ' + classList(classes)}>\n <div className=\"Composer-handle\" oncreate={this.configHandle.bind(this)} />\n <ul className=\"Composer-controls\">{listItems(this.controlItems().toArray())}</ul>\n <div className=\"Composer-content\" onclick={showIfMinimized}>\n {ComposerBody && <ComposerBody {...body.attrs} composer={this.state} disabled={classes.minimized} />}\n </div>\n </div>\n );\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n\n if (this.state.position === this.prevPosition) {\n // Set the height of the Composer element and its contents on each redraw,\n // so that they do not lose it if their DOM elements are recreated.\n this.updateHeight();\n } else {\n this.animatePositionChange();\n\n this.prevPosition = this.state.position;\n }\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.initializeHeight();\n this.$().hide().css('bottom', -this.state.computedHeight());\n\n // Whenever any of the inputs inside the composer are have focus, we want to\n // add a class to the composer to draw attention to it.\n this.$().on('focus blur', ':input,.TextEditor-editorContainer', (e) => {\n this.active = e.type === 'focusin';\n m.redraw();\n });\n\n // When the escape key is pressed on any inputs, close the composer.\n this.$().on('keydown', ':input,.TextEditor-editorContainer', 'esc', () => this.state.close());\n\n this.handlers = {};\n\n $(window)\n .on('resize', (this.handlers.onresize = this.updateHeight.bind(this)))\n .resize();\n\n $(document)\n .on('mousemove', (this.handlers.onmousemove = this.onmousemove.bind(this)))\n .on('mouseup', (this.handlers.onmouseup = this.onmouseup.bind(this)));\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n $(window).off('resize', this.handlers.onresize);\n\n $(document).off('mousemove', this.handlers.onmousemove).off('mouseup', this.handlers.onmouseup);\n }\n\n /**\n * Add the necessary event handlers to the composer's handle so that it can\n * be used to resize the composer.\n */\n configHandle(vnode) {\n const composer = this;\n\n $(vnode.dom)\n .css('cursor', 'row-resize')\n .bind('dragstart mousedown', (e) => e.preventDefault())\n .mousedown(function (e) {\n composer.mouseStart = e.clientY;\n composer.heightStart = composer.$().height();\n composer.handle = $(this);\n $('body').css('cursor', 'row-resize');\n });\n }\n\n /**\n * Resize the composer according to mouse movement.\n *\n * @param {MouseEvent} e\n */\n onmousemove(e) {\n if (!this.handle) return;\n\n // Work out how much the mouse has been moved, and set the height\n // relative to the old one based on that. Then update the content's\n // height so that it fills the height of the composer, and update the\n // body's padding.\n const deltaPixels = this.mouseStart - e.clientY;\n this.changeHeight(this.heightStart + deltaPixels);\n\n // Update the body's padding-bottom so that no content on the page will ever\n // get permanently hidden behind the composer. If the user is already\n // scrolled to the bottom of the page, then we will keep them scrolled to\n // the bottom after the padding has been updated.\n const scrollTop = $(window).scrollTop();\n const anchorToBottom = scrollTop > 0 && scrollTop + $(window).height() >= $(document).height();\n this.updateBodyPadding(anchorToBottom);\n }\n\n /**\n * Finish resizing the composer when the mouse is released.\n */\n onmouseup() {\n if (!this.handle) return;\n\n this.handle = null;\n $('body').css('cursor', '');\n }\n\n /**\n * Draw focus to the first focusable content element (the text editor).\n */\n focus() {\n this.$('.Composer-content :input:enabled:visible, .TextEditor-editor').first().focus();\n }\n\n /**\n * Update the DOM to reflect the composer's current height. This involves\n * setting the height of the composer's root element, and adjusting the height\n * of any flexible elements inside the composer's body.\n */\n updateHeight() {\n const height = this.state.computedHeight();\n const $flexible = this.$('.Composer-flexible');\n\n this.$().height(height);\n\n if ($flexible.length) {\n const headerHeight = $flexible.offset().top - this.$().offset().top;\n const paddingBottom = parseInt($flexible.css('padding-bottom'), 10);\n const footerHeight = this.$('.Composer-footer').outerHeight(true);\n\n $flexible.height(this.$().outerHeight() - headerHeight - paddingBottom - footerHeight);\n }\n }\n\n /**\n * Update the amount of padding-bottom on the body so that the page's\n * content will still be visible above the composer when the page is\n * scrolled right to the bottom.\n */\n updateBodyPadding() {\n const visible =\n this.state.position !== ComposerState.Position.HIDDEN && this.state.position !== ComposerState.Position.MINIMIZED && app.screen() !== 'phone';\n\n const paddingBottom = visible ? this.state.computedHeight() - parseInt($('#app').css('padding-bottom'), 10) : 0;\n\n $('#content').css({ paddingBottom });\n }\n\n /**\n * Trigger the right animation depending on the desired new position.\n */\n animatePositionChange() {\n // When exiting full-screen mode: focus content\n if (this.prevPosition === ComposerState.Position.FULLSCREEN && this.state.position === ComposerState.Position.NORMAL) {\n this.focus();\n return;\n }\n\n switch (this.state.position) {\n case ComposerState.Position.HIDDEN:\n return this.hide();\n case ComposerState.Position.MINIMIZED:\n return this.minimize();\n case ComposerState.Position.FULLSCREEN:\n return this.focus();\n case ComposerState.Position.NORMAL:\n return this.show();\n }\n }\n\n /**\n * Animate the Composer into the new position by changing the height.\n */\n animateHeightChange() {\n const $composer = this.$().stop(true);\n const oldHeight = $composer.outerHeight();\n const scrollTop = $(window).scrollTop();\n\n $composer.show();\n this.updateHeight();\n\n const newHeight = $composer.outerHeight();\n\n if (this.prevPosition === ComposerState.Position.HIDDEN) {\n $composer.css({ bottom: -newHeight, height: newHeight });\n } else {\n $composer.css({ height: oldHeight });\n }\n\n const animation = $composer.animate({ bottom: 0, height: newHeight }, 'fast').promise();\n\n this.updateBodyPadding();\n $(window).scrollTop(scrollTop);\n return animation;\n }\n\n /**\n * Show the Composer backdrop.\n */\n showBackdrop() {\n this.$backdrop = $('<div/>').addClass('composer-backdrop').appendTo('body');\n }\n\n /**\n * Hide the Composer backdrop.\n */\n hideBackdrop() {\n if (this.$backdrop) this.$backdrop.remove();\n }\n\n /**\n * Animate the composer sliding up from the bottom to take its normal height.\n *\n * @private\n */\n show() {\n this.animateHeightChange().then(() => this.focus());\n\n if (app.screen() === 'phone') {\n // On safari fixed position doesn't properly work on mobile,\n // So we use absolute and set the top value.\n // https://github.com/flarum/core/issues/2652\n\n // Due to another safari bug, `scrollTop` is unreliable when\n // at the very bottom of the page AND opening the composer.\n // So we fallback to a calculated version of scrollTop.\n // https://github.com/flarum/core/issues/2683\n const scrollElement = document.documentElement;\n const topOfViewport = Math.min(scrollElement.scrollTop, scrollElement.scrollHeight - scrollElement.clientHeight);\n this.$().css('top', $('.App').is('.mobile-safari') ? topOfViewport : 0);\n this.showBackdrop();\n }\n }\n\n /**\n * Animate closing the composer.\n *\n * @private\n */\n hide() {\n const $composer = this.$();\n\n // Animate the composer sliding down off the bottom edge of the viewport.\n // Only when the animation is completed, update other elements on the page.\n $composer.stop(true).animate({ bottom: -$composer.height() }, 'fast', () => {\n $composer.hide();\n this.hideBackdrop();\n this.updateBodyPadding();\n });\n }\n\n /**\n * Shrink the composer until only its title is visible.\n *\n * @private\n */\n minimize() {\n this.animateHeightChange();\n\n this.$().css('top', 'auto');\n this.hideBackdrop();\n }\n\n /**\n * Build an item list for the composer's controls.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n controlItems() {\n const items = new ItemList();\n\n if (this.state.position === ComposerState.Position.FULLSCREEN) {\n items.add(\n 'exitFullScreen',\n <ComposerButton\n icon=\"fas fa-compress\"\n title={app.translator.trans('core.forum.composer.exit_full_screen_tooltip')}\n onclick={this.state.exitFullScreen.bind(this.state)}\n />\n );\n } else {\n if (this.state.position !== ComposerState.Position.MINIMIZED) {\n items.add(\n 'minimize',\n <ComposerButton\n icon=\"fas fa-minus minimize\"\n title={app.translator.trans('core.forum.composer.minimize_tooltip')}\n onclick={this.state.minimize.bind(this.state)}\n itemClassName=\"App-backControl\"\n />\n );\n\n items.add(\n 'fullScreen',\n <ComposerButton\n icon=\"fas fa-expand\"\n title={app.translator.trans('core.forum.composer.full_screen_tooltip')}\n onclick={this.state.fullScreen.bind(this.state)}\n />\n );\n }\n\n items.add(\n 'close',\n <ComposerButton\n icon=\"fas fa-times\"\n title={app.translator.trans('core.forum.composer.close_tooltip')}\n onclick={this.state.close.bind(this.state)}\n />\n );\n }\n\n return items;\n }\n\n /**\n * Initialize default Composer height.\n */\n initializeHeight() {\n this.state.height = localStorage.getItem('composerHeight');\n\n if (!this.state.height) {\n this.state.height = this.defaultHeight();\n }\n }\n\n /**\n * Default height of the Composer in case none is saved.\n * @returns {number}\n */\n defaultHeight() {\n return this.$().height();\n }\n\n /**\n * Save a new Composer height and update the DOM.\n * @param {number} height\n */\n changeHeight(height) {\n this.state.height = height;\n this.updateHeight();\n\n localStorage.setItem('composerHeight', this.state.height);\n }\n}\n","import app from '../../forum/app';\nimport type NotificationModel from '../../common/models/Notification';\nimport Component, { ComponentAttrs } from '../../common/Component';\nimport avatar from '../../common/helpers/avatar';\nimport icon from '../../common/helpers/icon';\nimport humanTime from '../../common/helpers/humanTime';\nimport Button from '../../common/components/Button';\nimport Link from '../../common/components/Link';\nimport classList from '../../common/utils/classList';\nimport type Mithril from 'mithril';\n\nexport interface INotificationAttrs extends ComponentAttrs {\n notification: NotificationModel;\n}\n\n// TODO [Flarum 2.0]: Remove `?.` from abstract function calls.\n\n/**\n * The `Notification` component abstract displays a single notification.\n * Subclasses should implement the `icon`, `href`, and `content` methods.\n */\nexport default abstract class Notification<CustomAttrs extends INotificationAttrs = INotificationAttrs> extends Component<CustomAttrs> {\n view(vnode: Mithril.Vnode<CustomAttrs, this>) {\n const notification = this.attrs.notification;\n const href = this.href?.() ?? '';\n\n const fromUser = notification.fromUser();\n\n return (\n <Link\n className={classList('Notification', `Notification--${notification.contentType()}`, [!notification.isRead() && 'unread'])}\n href={href}\n external={href.includes('://')}\n onclick={this.markAsRead.bind(this)}\n >\n {avatar(fromUser || null)}\n {icon(this.icon?.(), { className: 'Notification-icon' })}\n <span className=\"Notification-title\">\n <span className=\"Notification-content\">{this.content?.()}</span>\n <span className=\"Notification-title-spring\" />\n {humanTime(notification.createdAt())}\n </span>\n {!notification.isRead() && (\n <Button\n className=\"Notification-action Button Button--link\"\n icon=\"fas fa-check\"\n title={app.translator.trans('core.forum.notifications.mark_as_read_tooltip')}\n onclick={(e: Event) => {\n e.preventDefault();\n e.stopPropagation();\n\n this.markAsRead();\n }}\n />\n )}\n <div className=\"Notification-excerpt\">{this.excerpt?.()}</div>\n </Link>\n );\n }\n\n /**\n * Get the name of the icon that should be displayed in the notification.\n */\n abstract icon(): string;\n\n /**\n * Get the URL that the notification should link to.\n */\n abstract href(): string;\n\n /**\n * Get the content of the notification.\n */\n abstract content(): Mithril.Children;\n\n /**\n * Get the excerpt of the notification.\n */\n abstract excerpt(): Mithril.Children;\n\n /**\n * Mark the notification as read.\n */\n markAsRead() {\n if (this.attrs.notification.isRead()) return;\n\n app.session.user?.pushAttributes({ unreadNotificationCount: (app.session.user.unreadNotificationCount() ?? 1) - 1 });\n\n this.attrs.notification.save({ isRead: true });\n }\n}\n","import type Discussion from '../../common/models/Discussion';\nimport app from '../../forum/app';\nimport Notification from './Notification';\n\ninterface DiscussionRenamedContent {\n postNumber: number;\n}\n\n/**\n * The `DiscussionRenamedNotification` component displays a notification which\n * indicates that a discussion has had its title changed.\n */\nexport default class DiscussionRenamedNotification extends Notification {\n icon() {\n return 'fas fa-pencil-alt';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n if (!discussion) {\n return '#';\n }\n\n return app.route.discussion(discussion as Discussion, notification.content<DiscussionRenamedContent>().postNumber);\n }\n\n content() {\n return app.translator.trans('core.forum.notifications.discussion_renamed_text', { user: this.attrs.notification.fromUser() });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from '../../forum/app';\nimport ComposerBody from './ComposerBody';\nimport Button from '../../common/components/Button';\nimport Link from '../../common/components/Link';\nimport icon from '../../common/helpers/icon';\n\nfunction minimizeComposerIfFullScreen(e) {\n if (app.composer.isFullScreen()) {\n app.composer.minimize();\n e.stopPropagation();\n }\n}\n\n/**\n * The `EditPostComposer` component displays the composer content for editing a\n * post. It sets the initial content to the content of the post that is being\n * edited, and adds a header control to indicate which post is being edited.\n *\n * ### Attrs\n *\n * - All of the attrs for ComposerBody\n * - `post`\n */\nexport default class EditPostComposer extends ComposerBody {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.submitLabel = attrs.submitLabel || app.translator.trans('core.forum.composer_edit.submit_button');\n attrs.confirmExit = attrs.confirmExit || app.translator.trans('core.forum.composer_edit.discard_confirmation');\n attrs.originalContent = attrs.originalContent || attrs.post.content();\n attrs.user = attrs.user || attrs.post.user();\n\n attrs.post.editedContent = attrs.originalContent;\n }\n\n headerItems() {\n const items = super.headerItems();\n const post = this.attrs.post;\n\n items.add(\n 'title',\n <h3>\n {icon('fas fa-pencil-alt')}{' '}\n <Link href={app.route.discussion(post.discussion(), post.number())} onclick={minimizeComposerIfFullScreen}>\n {app.translator.trans('core.forum.composer_edit.post_link', { number: post.number(), discussion: post.discussion().title() })}\n </Link>\n </h3>\n );\n\n return items;\n }\n\n /**\n * Jump to the preview when triggered by the text editor.\n */\n jumpToPreview(e) {\n minimizeComposerIfFullScreen(e);\n\n m.route.set(app.route.post(this.attrs.post));\n }\n\n /**\n * Get the data to submit to the server when the post is saved.\n *\n * @return {Record<string, unknown>}\n */\n data() {\n return {\n content: this.composer.fields.content(),\n };\n }\n\n onsubmit() {\n const discussion = this.attrs.post.discussion();\n\n this.loading = true;\n\n const data = this.data();\n\n this.attrs.post.save(data).then((post) => {\n // If we're currently viewing the discussion which this edit was made\n // in, then we can scroll to the post.\n if (app.viewingDiscussion(discussion)) {\n app.current.get('stream').goToNumber(post.number());\n } else {\n // Otherwise, we'll create an alert message to inform the user that\n // their edit has been made, containing a button which will\n // transition to their edited post when clicked.\n const alert = app.alerts.show(\n {\n type: 'success',\n controls: [\n <Button\n className=\"Button Button--link\"\n onclick={() => {\n m.route.set(app.route.post(post));\n app.alerts.dismiss(alert);\n }}\n >\n {app.translator.trans('core.forum.composer_edit.view_button')}\n </Button>,\n ],\n },\n app.translator.trans('core.forum.composer_edit.edited_message')\n );\n }\n\n this.composer.hide();\n }, this.loaded.bind(this));\n }\n}\n","import app from '../../forum/app';\nimport EditPostComposer from '../components/EditPostComposer';\nimport Button from '../../common/components/Button';\nimport Separator from '../../common/components/Separator';\nimport ItemList from '../../common/utils/ItemList';\nimport extractText from '../../common/utils/extractText';\n\n/**\n * The `PostControls` utility constructs a list of buttons for a post which\n * perform actions on it.\n */\nexport default {\n /**\n * Get a list of controls for a post.\n *\n * @param {import('../../common/models/Post').default} post\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}')}\n */\n controls(post, context) {\n const items = new ItemList();\n\n ['user', 'moderation', 'destructive'].forEach((section) => {\n const controls = this[section + 'Controls'](post, context).toArray();\n if (controls.length) {\n controls.forEach((item) => items.add(item.itemName, item));\n items.add(section + 'Separator', <Separator />);\n }\n });\n\n return items;\n },\n\n /**\n * Get controls for a post pertaining to the current user (e.g. report).\n *\n * @param {import('../../common/models/Post').default} post\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}')}\n * @protected\n */\n userControls(post, context) {\n return new ItemList();\n },\n\n /**\n * Get controls for a post pertaining to moderation (e.g. edit).\n *\n * @param {import('../../common/models/Post').default} post\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}')}\n * @protected\n */\n moderationControls(post, context) {\n const items = new ItemList();\n\n if (post.contentType() === 'comment' && post.canEdit()) {\n if (!post.isHidden()) {\n items.add(\n 'edit',\n <Button icon=\"fas fa-pencil-alt\" onclick={this.editAction.bind(post)}>\n {app.translator.trans('core.forum.post_controls.edit_button')}\n </Button>\n );\n }\n }\n\n return items;\n },\n\n /**\n * Get controls for a post that are destructive (e.g. delete).\n *\n * @param {import('../../common/models/Post').default} post\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}')}\n * @protected\n */\n destructiveControls(post, context) {\n const items = new ItemList();\n\n if (post.contentType() === 'comment' && !post.isHidden()) {\n if (post.canHide()) {\n items.add(\n 'hide',\n <Button icon=\"far fa-trash-alt\" onclick={this.hideAction.bind(post)}>\n {app.translator.trans('core.forum.post_controls.delete_button')}\n </Button>\n );\n }\n } else {\n if (post.contentType() === 'comment' && post.canHide()) {\n items.add(\n 'restore',\n <Button icon=\"fas fa-reply\" onclick={this.restoreAction.bind(post)}>\n {app.translator.trans('core.forum.post_controls.restore_button')}\n </Button>\n );\n }\n if (post.canDelete()) {\n items.add(\n 'delete',\n <Button icon=\"fas fa-times\" onclick={this.deleteAction.bind(post, context)}>\n {app.translator.trans('core.forum.post_controls.delete_forever_button')}\n </Button>\n );\n }\n }\n\n return items;\n },\n\n /**\n * Open the composer to edit a post.\n *\n * @return {Promise<void>}\n */\n editAction() {\n return new Promise((resolve) => {\n app.composer.load(EditPostComposer, { post: this });\n app.composer.show();\n\n return resolve();\n });\n },\n\n /**\n * Hide a post.\n *\n * @return {Promise<void>}\n */\n hideAction() {\n if (!confirm(extractText(app.translator.trans('core.forum.post_controls.hide_confirmation')))) return;\n this.pushData({ attributes: { hiddenAt: new Date() }, relationships: { hiddenUser: app.session.user } });\n\n return this.save({ isHidden: true }).then(() => m.redraw());\n },\n\n /**\n * Restore a post.\n *\n * @return {Promise<void>}\n */\n restoreAction() {\n this.pushData({ attributes: { hiddenAt: null }, relationships: { hiddenUser: null } });\n\n return this.save({ isHidden: false }).then(() => m.redraw());\n },\n\n /**\n * Delete a post.\n *\n * @return {Promise<void>}\n */\n deleteAction(context) {\n if (!confirm(extractText(app.translator.trans('core.forum.post_controls.delete_confirmation')))) return;\n if (context) context.loading = true;\n\n return this.delete()\n .then(() => {\n const discussion = this.discussion();\n\n discussion.removePost(this.id());\n\n // If this was the last post in the discussion, then we will assume that\n // the whole discussion was deleted too.\n if (!discussion.postIds().length) {\n app.discussions.removeDiscussion(discussion);\n\n if (app.viewingDiscussion(discussion)) {\n app.history.back();\n }\n }\n })\n .catch(() => {})\n .then(() => {\n if (context) context.loading = false;\n m.redraw();\n });\n },\n};\n","import app from '../../forum/app';\nimport Component, { ComponentAttrs } from '../../common/Component';\nimport SubtreeRetainer from '../../common/utils/SubtreeRetainer';\nimport Dropdown from '../../common/components/Dropdown';\nimport PostControls from '../utils/PostControls';\nimport listItems from '../../common/helpers/listItems';\nimport ItemList from '../../common/utils/ItemList';\nimport type PostModel from '../../common/models/Post';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport type Mithril from 'mithril';\n\nexport interface IPostAttrs extends ComponentAttrs {\n post: PostModel;\n}\n\n/**\n * The `Post` component displays a single post. The basic post template just\n * includes a controls dropdown; subclasses must implement `content` and `attrs`\n * methods.\n */\nexport default abstract class Post<CustomAttrs extends IPostAttrs = IPostAttrs> extends Component<CustomAttrs> {\n /**\n * May be set by subclasses.\n */\n loading = false;\n\n /**\n * Ensures that the post will not be redrawn\n * unless new data comes in.\n */\n subtree!: SubtreeRetainer;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.loading = false;\n\n this.subtree = new SubtreeRetainer(\n () => this.loading,\n () => this.attrs.post.freshness,\n () => {\n const user = this.attrs.post.user();\n return user && user.freshness;\n }\n );\n }\n\n view(vnode: Mithril.Vnode<CustomAttrs, this>) {\n const attrs = this.elementAttrs();\n\n attrs.className = this.classes(attrs.className as string | undefined).join(' ');\n\n const controls = PostControls.controls(this.attrs.post, this).toArray();\n const footerItems = this.footerItems().toArray();\n\n return (\n <article {...attrs}>\n <div>\n {this.loading ? <LoadingIndicator /> : this.content()}\n <aside className=\"Post-actions\">\n <ul>\n {listItems(this.actionItems().toArray())}\n {!!controls.length && (\n <li>\n <Dropdown\n className=\"Post-controls\"\n buttonClassName=\"Button Button--icon Button--flat\"\n menuClassName=\"Dropdown-menu--right\"\n icon=\"fas fa-ellipsis-h\"\n onshow={() => this.$('.Post-controls').addClass('open')}\n onhide={() => this.$('.Post-controls').removeClass('open')}\n accessibleToggleLabel={app.translator.trans('core.forum.post_controls.toggle_dropdown_accessible_label')}\n >\n {controls}\n </Dropdown>\n </li>\n )}\n </ul>\n </aside>\n <footer className=\"Post-footer\">{footerItems.length ? <ul>{listItems(footerItems)}</ul> : null}</footer>\n </div>\n </article>\n );\n }\n\n onbeforeupdate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.onbeforeupdate(vnode);\n\n return this.subtree.needsRebuild();\n }\n\n onupdate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.onupdate(vnode);\n\n const $actions = this.$('.Post-actions');\n const $controls = this.$('.Post-controls');\n\n $actions.toggleClass('openWithin', $controls.hasClass('open'));\n }\n\n /**\n * Get attributes for the post element.\n */\n elementAttrs(): Record<string, unknown> {\n return {};\n }\n\n /**\n * Get the post's content.\n */\n content(): Mithril.Children {\n // TODO: [Flarum 2.0] return `null`\n return [];\n }\n\n /**\n * Get the post's classes.\n */\n classes(existing?: string): string[] {\n let classes = (existing || '').split(' ').concat(['Post']);\n\n const user = this.attrs.post.user();\n const discussion = this.attrs.post.discussion();\n\n if (this.loading) {\n classes.push('Post--loading');\n }\n\n if (user && user === app.session.user) {\n classes.push('Post--by-actor');\n }\n\n if (user && user === discussion.user()) {\n classes.push('Post--by-start-user');\n }\n\n return classes;\n }\n\n /**\n * Build an item list for the post's actions.\n */\n actionItems(): ItemList<Mithril.Children> {\n return new ItemList();\n }\n\n /**\n * Build an item list for the post's footer.\n */\n footerItems(): ItemList<Mithril.Children> {\n return new ItemList();\n }\n}\n","import Badge, { IBadgeAttrs } from './Badge';\nimport Group from '../models/Group';\n\nexport interface IGroupAttrs extends IBadgeAttrs {\n group?: Group;\n}\n\nexport default class GroupBadge<CustomAttrs extends IGroupAttrs = IGroupAttrs> extends Badge<CustomAttrs> {\n static initAttrs(attrs: IGroupAttrs): void {\n super.initAttrs(attrs);\n\n if (attrs.group) {\n attrs.icon = attrs.group.icon() || '';\n attrs.color = attrs.group.color() || '';\n attrs.label = typeof attrs.label === 'undefined' ? attrs.group.nameSingular() : attrs.label;\n attrs.type = 'group--' + attrs.group.id();\n\n delete attrs.group;\n }\n }\n}\n","import Model from '../Model';\n\nexport default class Group extends Model {\n static ADMINISTRATOR_ID = '1';\n static GUEST_ID = '2';\n static MEMBER_ID = '3';\n\n nameSingular() {\n return Model.attribute<string>('nameSingular').call(this);\n }\n namePlural() {\n return Model.attribute<string>('namePlural').call(this);\n }\n\n color() {\n return Model.attribute<string | null>('color').call(this);\n }\n icon() {\n return Model.attribute<string | null>('icon').call(this);\n }\n\n isHidden() {\n return Model.attribute<boolean>('isHidden').call(this);\n }\n}\n","import app from '../../common/app';\nimport Modal, { IInternalModalAttrs } from './Modal';\nimport Button from './Button';\nimport GroupBadge from './GroupBadge';\nimport Group from '../models/Group';\nimport extractText from '../utils/extractText';\nimport ItemList from '../utils/ItemList';\nimport Stream from '../utils/Stream';\nimport type Mithril from 'mithril';\nimport type User from '../models/User';\nimport type { SaveAttributes, SaveRelationships } from '../Model';\n\nexport interface IEditUserModalAttrs extends IInternalModalAttrs {\n user: User;\n}\n\nexport default class EditUserModal<CustomAttrs extends IEditUserModalAttrs = IEditUserModalAttrs> extends Modal<CustomAttrs> {\n protected username!: Stream<string>;\n protected email!: Stream<string>;\n protected isEmailConfirmed!: Stream<boolean>;\n protected setPassword!: Stream<boolean>;\n protected password!: Stream<string>;\n protected groups: Record<string, Stream<boolean>> = {};\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n const user = this.attrs.user;\n\n this.username = Stream(user.username() || '');\n this.email = Stream(user.email() || '');\n this.isEmailConfirmed = Stream(user.isEmailConfirmed() || false);\n this.setPassword = Stream(false as boolean);\n this.password = Stream(user.password() || '');\n\n const userGroups = user.groups() || [];\n\n app.store\n .all<Group>('groups')\n .filter((group) => ![Group.GUEST_ID, Group.MEMBER_ID].includes(group.id()!))\n .forEach((group) => (this.groups[group.id()!] = Stream(userGroups.includes(group))));\n }\n\n className() {\n return 'EditUserModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.lib.edit_user.title');\n }\n\n content() {\n const fields = this.fields().toArray();\n return (\n <div className=\"Modal-body\">\n {fields.length > 1 ? <div className=\"Form\">{this.fields().toArray()}</div> : app.translator.trans('core.lib.edit_user.nothing_available')}\n </div>\n );\n }\n\n fields() {\n const items = new ItemList();\n\n if (this.attrs.user.canEditCredentials()) {\n items.add(\n 'username',\n <div className=\"Form-group\">\n <label>{app.translator.trans('core.lib.edit_user.username_heading')}</label>\n <input\n className=\"FormControl\"\n placeholder={extractText(app.translator.trans('core.lib.edit_user.username_label'))}\n bidi={this.username}\n disabled={this.nonAdminEditingAdmin()}\n />\n </div>,\n 40\n );\n\n if (app.session.user !== this.attrs.user) {\n items.add(\n 'email',\n <div className=\"Form-group\">\n <label>{app.translator.trans('core.lib.edit_user.email_heading')}</label>\n <div>\n <input\n className=\"FormControl\"\n placeholder={extractText(app.translator.trans('core.lib.edit_user.email_label'))}\n bidi={this.email}\n disabled={this.nonAdminEditingAdmin()}\n />\n </div>\n {!this.isEmailConfirmed() && this.userIsAdmin(app.session.user) && (\n <div>\n <Button className=\"Button Button--block\" loading={this.loading} onclick={this.activate.bind(this)}>\n {app.translator.trans('core.lib.edit_user.activate_button')}\n </Button>\n </div>\n )}\n </div>,\n 30\n );\n\n items.add(\n 'password',\n <div className=\"Form-group\">\n <label>{app.translator.trans('core.lib.edit_user.password_heading')}</label>\n <div>\n <label className=\"checkbox\">\n <input\n type=\"checkbox\"\n onchange={(e: KeyboardEvent) => {\n const target = e.target as HTMLInputElement;\n this.setPassword(target.checked);\n m.redraw.sync();\n if (target.checked) this.$('[name=password]').select();\n e.redraw = false;\n }}\n disabled={this.nonAdminEditingAdmin()}\n />\n {app.translator.trans('core.lib.edit_user.set_password_label')}\n </label>\n {this.setPassword() && (\n <input\n className=\"FormControl\"\n type=\"password\"\n name=\"password\"\n placeholder={extractText(app.translator.trans('core.lib.edit_user.password_label'))}\n bidi={this.password}\n disabled={this.nonAdminEditingAdmin()}\n />\n )}\n </div>\n </div>,\n 20\n );\n }\n }\n\n if (this.attrs.user.canEditGroups()) {\n items.add(\n 'groups',\n <div className=\"Form-group EditUserModal-groups\">\n <label>{app.translator.trans('core.lib.edit_user.groups_heading')}</label>\n <div>\n {Object.keys(this.groups)\n .map((id) => app.store.getById<Group>('groups', id))\n .filter(Boolean)\n .map(\n (group) =>\n // Necessary because filter(Boolean) doesn't narrow out falsy values.\n group && (\n <label className=\"checkbox\">\n <input\n type=\"checkbox\"\n bidi={this.groups[group.id()!]}\n disabled={\n group.id() === Group.ADMINISTRATOR_ID && (this.attrs.user === app.session.user || !this.userIsAdmin(app.session.user))\n }\n />\n <GroupBadge group={group} label={null} /> {group.nameSingular()}\n </label>\n )\n )}\n </div>\n </div>,\n 10\n );\n }\n\n items.add(\n 'submit',\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.lib.edit_user.submit_button')}\n </Button>\n </div>,\n -10\n );\n\n return items;\n }\n\n activate() {\n this.loading = true;\n const data = {\n username: this.username(),\n isEmailConfirmed: true,\n };\n this.attrs.user\n .save(data, { errorHandler: this.onerror.bind(this) })\n .then(() => {\n this.isEmailConfirmed(true);\n this.loading = false;\n m.redraw();\n })\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n data() {\n const data: SaveAttributes = {};\n const relationships: SaveRelationships = {};\n\n if (this.attrs.user.canEditCredentials() && !this.nonAdminEditingAdmin()) {\n data.username = this.username();\n\n if (app.session.user !== this.attrs.user) {\n data.email = this.email();\n }\n\n if (this.setPassword()) {\n data.password = this.password();\n }\n }\n\n if (this.attrs.user.canEditGroups()) {\n relationships.groups = Object.keys(this.groups)\n .filter((id) => this.groups[id]())\n .map((id) => app.store.getById<Group>('groups', id))\n .filter((g): g is Group => g instanceof Group);\n }\n\n data.relationships = relationships;\n\n return data;\n }\n\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n this.loading = true;\n\n this.attrs.user\n .save(this.data(), { errorHandler: this.onerror.bind(this) })\n .then(this.hide.bind(this))\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n nonAdminEditingAdmin(): boolean {\n return this.userIsAdmin(this.attrs.user) && !this.userIsAdmin(app.session.user);\n }\n\n /**\n * @internal\n */\n protected userIsAdmin(user: User | null): boolean {\n return !!(user?.groups() || []).some((g) => g?.id() === Group.ADMINISTRATOR_ID);\n }\n}\n","import Component from '../../common/Component';\n\n/**\n * The `AffixedSidebar` component uses Bootstrap's \"affix\" plugin to keep a\n * sidebar navigation at the top of the viewport when scrolling.\n *\n * ### Children\n *\n * The component must wrap an element that itself wraps an <ul> element, which\n * will be \"affixed\".\n *\n * @see https://getbootstrap.com/docs/3.4/javascript/#affix\n */\nexport default class AffixedSidebar extends Component {\n view(vnode) {\n return vnode.children[0];\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n // Register the affix plugin to execute on every window resize (and trigger)\n this.boundOnresize = this.onresize.bind(this);\n $(window).on('resize', this.boundOnresize).resize();\n }\n\n onremove(vnode) {\n super.onremove(vnode);\n\n $(window).off('resize', this.boundOnresize);\n }\n\n onresize() {\n const $sidebar = this.$();\n const $header = $('#header');\n const $footer = $('#footer');\n const $affixElement = $sidebar.find('> ul');\n\n $(window).off('.affix');\n $affixElement.removeClass('affix affix-top affix-bottom').removeData('bs.affix');\n\n // Don't affix the sidebar if it is taller than the viewport (otherwise\n // there would be no way to scroll through its content).\n if ($sidebar.outerHeight(true) > $(window).height() - $header.outerHeight(true)) return;\n\n $affixElement.affix({\n offset: {\n top: () => $sidebar.offset().top - $header.outerHeight(true) - parseInt($sidebar.css('margin-top'), 10),\n bottom: () => (this.bottom = $footer.outerHeight(true)),\n },\n });\n }\n}\n","import app from '../../forum/app';\nimport Page, { IPageAttrs } from '../../common/components/Page';\nimport ItemList from '../../common/utils/ItemList';\nimport UserCard from './UserCard';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport SelectDropdown from '../../common/components/SelectDropdown';\nimport LinkButton from '../../common/components/LinkButton';\nimport Separator from '../../common/components/Separator';\nimport listItems from '../../common/helpers/listItems';\nimport AffixedSidebar from './AffixedSidebar';\nimport type User from '../../common/models/User';\nimport type Mithril from 'mithril';\n\nexport interface IUserPageAttrs extends IPageAttrs {}\n\n/**\n * The `UserPage` component shows a user's profile. It can be extended to show\n * content inside of the content area. See `ActivityPage` and `SettingsPage` for\n * examples.\n *\n * @abstract\n */\nexport default class UserPage<CustomAttrs extends IUserPageAttrs = IUserPageAttrs, CustomState = undefined> extends Page<CustomAttrs, CustomState> {\n /**\n * The user this page is for.\n */\n user: User | null = null;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.bodyClass = 'App--user';\n }\n\n /**\n * Base view template for the user page.\n */\n view() {\n return (\n <div className=\"UserPage\">\n {this.user\n ? [\n <UserCard\n user={this.user}\n className=\"Hero UserHero\"\n editable={this.user.canEdit() || this.user === app.session.user}\n controlsButtonClassName=\"Button\"\n />,\n <div className=\"container\">\n <div className=\"sideNavContainer\">\n <AffixedSidebar>\n <nav className=\"sideNav UserPage-nav\">\n <ul>{listItems(this.sidebarItems().toArray())}</ul>\n </nav>\n </AffixedSidebar>\n <div className=\"sideNavOffset UserPage-content\">{this.content()}</div>\n </div>\n </div>,\n ]\n : [<LoadingIndicator display=\"block\" />]}\n </div>\n );\n }\n\n /**\n * Get the content to display in the user page.\n */\n content(): Mithril.Children | void {}\n\n /**\n * Initialize the component with a user, and trigger the loading of their\n * activity feed.\n *\n * @protected\n */\n show(user: User): void {\n this.user = user;\n\n app.current.set('user', user);\n\n app.setTitle(user.displayName());\n\n m.redraw();\n }\n\n /**\n * Given a username, load the user's profile from the store, or make a request\n * if we don't have it yet. Then initialize the profile page with that user.\n */\n loadUser(username: string) {\n const lowercaseUsername = username.toLowerCase();\n\n // Load the preloaded user object, if any, into the global app store\n // We don't use the output of the method because it returns raw JSON\n // instead of the parsed models\n app.preloadedApiDocument();\n\n app.store.all<User>('users').some((user) => {\n if ((user.username().toLowerCase() === lowercaseUsername || user.id() === username) && user.joinTime()) {\n this.show(user);\n return true;\n }\n\n return false;\n });\n\n if (!this.user) {\n app.store.find<User>('users', username, { bySlug: true }).then(this.show.bind(this));\n }\n }\n\n /**\n * Build an item list for the content of the sidebar.\n */\n sidebarItems() {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'nav',\n <SelectDropdown className=\"App-titleControl\" buttonClassName=\"Button\">\n {this.navItems().toArray()}\n </SelectDropdown>\n );\n\n return items;\n }\n\n /**\n * Build an item list for the navigation in the sidebar.\n */\n navItems() {\n const items = new ItemList<Mithril.Children>();\n const user = this.user!;\n const isActor = app.session.user === user;\n\n items.add(\n 'posts',\n <LinkButton href={app.route('user.posts', { username: user.slug() })} icon=\"far fa-comment\">\n {app.translator.trans('core.forum.user.posts_link')} <span className=\"Button-badge\">{user.commentCount()}</span>\n </LinkButton>,\n 100\n );\n\n items.add(\n 'discussions',\n <LinkButton href={app.route('user.discussions', { username: user.slug() })} icon=\"fas fa-bars\">\n {app.translator.trans('core.forum.user.discussions_link')} <span className=\"Button-badge\">{user.discussionCount()}</span>\n </LinkButton>,\n 90\n );\n\n if (isActor) {\n items.add('separator', <Separator />, -90);\n items.add(\n 'settings',\n <LinkButton href={app.route('settings')} icon=\"fas fa-cog\">\n {app.translator.trans('core.forum.user.settings_link')}\n </LinkButton>,\n -100\n );\n }\n\n if (isActor || app.forum.attribute<boolean>('canModerateAccessTokens')) {\n if (!isActor) {\n items.add('security-separator', <Separator />, -90);\n }\n\n items.add(\n 'security',\n <LinkButton href={app.route('user.security', { username: user.slug() })} icon=\"fas fa-shield-alt\">\n {app.translator.trans('core.forum.user.security_link')}\n </LinkButton>,\n -100\n );\n }\n\n return items;\n }\n}\n","import app from '../../forum/app';\nimport Button from '../../common/components/Button';\nimport Separator from '../../common/components/Separator';\nimport EditUserModal from '../../common/components/EditUserModal';\nimport UserPage from '../components/UserPage';\nimport ItemList from '../../common/utils/ItemList';\n\n/**\n * The `UserControls` utility constructs a list of buttons for a user which\n * perform actions on it.\n */\nexport default {\n /**\n * Get a list of controls for a user.\n *\n * @param {import('../../common/models/User').default} user\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n controls(user, context) {\n const items = new ItemList();\n\n ['user', 'moderation', 'destructive'].forEach((section) => {\n const controls = this[section + 'Controls'](user, context).toArray();\n if (controls.length) {\n controls.forEach((item) => items.add(item.itemName, item));\n items.add(section + 'Separator', <Separator />);\n }\n });\n\n return items;\n },\n\n /**\n * Get controls for a user pertaining to the current user (e.g. poke, follow).\n *\n * @param {import('../../common/models/User').default} user\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n * @protected\n */\n userControls() {\n return new ItemList();\n },\n\n /**\n * Get controls for a user pertaining to moderation (e.g. suspend, edit).\n *\n * @param {import('../../common/models/User').default} user\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n * @protected\n */\n moderationControls(user) {\n const items = new ItemList();\n\n if (user.canEdit() || user.canEditCredentials() || user.canEditGroups()) {\n items.add(\n 'edit',\n <Button icon=\"fas fa-pencil-alt\" onclick={this.editAction.bind(this, user)}>\n {app.translator.trans('core.forum.user_controls.edit_button')}\n </Button>\n );\n }\n\n return items;\n },\n\n /**\n * Get controls for a user which are destructive (e.g. delete).\n *\n * @param {import('../../common/models/User').default} user\n * @param {import('../../common/Component').default<any, any>} context The parent component under which the controls menu will be displayed.\n *\n * @return {ItemList<import('mithril').Children>}\n * @protected\n */\n destructiveControls(user) {\n const items = new ItemList();\n\n if (user.id() !== '1' && user.canDelete()) {\n items.add(\n 'delete',\n <Button icon=\"fas fa-times\" onclick={this.deleteAction.bind(this, user)}>\n {app.translator.trans('core.forum.user_controls.delete_button')}\n </Button>\n );\n }\n\n return items;\n },\n\n /**\n * Delete the user.\n *\n * @param {import('../../common/models/User').default} user\n */\n deleteAction(user) {\n if (!confirm(app.translator.trans('core.forum.user_controls.delete_confirmation'))) {\n return;\n }\n\n user\n .delete()\n .then(() => {\n this.showDeletionAlert(user, 'success');\n if (app.current.matches(UserPage, { user })) {\n app.history.back();\n } else {\n window.location.reload();\n }\n })\n .catch(() => this.showDeletionAlert(user, 'error'));\n },\n\n /**\n * Show deletion alert of user.\n *\n * @param {import('../../common/models/User').default} user\n * @param {string} type\n */\n showDeletionAlert(user, type) {\n const message = {\n success: 'core.forum.user_controls.delete_success_message',\n error: 'core.forum.user_controls.delete_error_message',\n }[type];\n\n app.alerts.show(\n { type },\n app.translator.trans(message, {\n user,\n email: user.email(),\n })\n );\n },\n\n /**\n * Edit the user.\n *\n * @param {import('../../common/models/User').default} user\n */\n editAction(user) {\n app.modal.show(EditUserModal, { user });\n },\n};\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport avatar from '../../common/helpers/avatar';\nimport icon from '../../common/helpers/icon';\nimport listItems from '../../common/helpers/listItems';\nimport ItemList from '../../common/utils/ItemList';\nimport classList from '../../common/utils/classList';\nimport Button from '../../common/components/Button';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\n\n/**\n * The `AvatarEditor` component displays a user's avatar along with a dropdown\n * menu which allows the user to upload/remove the avatar.\n *\n * ### Attrs\n *\n * - `className`\n * - `user`\n */\nexport default class AvatarEditor extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n /**\n * Whether or not an avatar upload is in progress.\n *\n * @type {Boolean}\n */\n this.loading = false;\n\n /**\n * Whether or not an image has been dragged over the dropzone.\n *\n * @type {Boolean}\n */\n this.isDraggedOver = false;\n }\n\n view() {\n const user = this.attrs.user;\n\n return (\n <div className={classList(['AvatarEditor', 'Dropdown', this.attrs.className, this.loading && 'loading', this.isDraggedOver && 'dragover'])}>\n {avatar(user, { loading: 'eager' })}\n <a\n className={user.avatarUrl() ? 'Dropdown-toggle' : 'Dropdown-toggle AvatarEditor--noAvatar'}\n title={app.translator.trans('core.forum.user.avatar_upload_tooltip')}\n data-toggle=\"dropdown\"\n onclick={this.quickUpload.bind(this)}\n ondragover={this.enableDragover.bind(this)}\n ondragenter={this.enableDragover.bind(this)}\n ondragleave={this.disableDragover.bind(this)}\n ondragend={this.disableDragover.bind(this)}\n ondrop={this.dropUpload.bind(this)}\n >\n {this.loading ? (\n <LoadingIndicator display=\"unset\" size=\"large\" />\n ) : user.avatarUrl() ? (\n icon('fas fa-pencil-alt')\n ) : (\n icon('fas fa-plus-circle')\n )}\n </a>\n <ul className=\"Dropdown-menu Menu\">{listItems(this.controlItems().toArray())}</ul>\n </div>\n );\n }\n\n /**\n * Get the items in the edit avatar dropdown menu.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n controlItems() {\n const items = new ItemList();\n\n items.add(\n 'upload',\n <Button icon=\"fas fa-upload\" onclick={this.openPicker.bind(this)}>\n {app.translator.trans('core.forum.user.avatar_upload_button')}\n </Button>\n );\n\n items.add(\n 'remove',\n <Button icon=\"fas fa-times\" onclick={this.remove.bind(this)}>\n {app.translator.trans('core.forum.user.avatar_remove_button')}\n </Button>\n );\n\n return items;\n }\n\n /**\n * Enable dragover style\n *\n * @param {DragEvent} e\n */\n enableDragover(e) {\n e.preventDefault();\n e.stopPropagation();\n this.isDraggedOver = true;\n }\n\n /**\n * Disable dragover style\n *\n * @param {DragEvent} e\n */\n disableDragover(e) {\n e.preventDefault();\n e.stopPropagation();\n this.isDraggedOver = false;\n }\n\n /**\n * Upload avatar when file is dropped into dropzone.\n *\n * @param {DragEvent} e\n */\n dropUpload(e) {\n e.preventDefault();\n e.stopPropagation();\n this.isDraggedOver = false;\n this.upload(e.dataTransfer.files[0]);\n }\n\n /**\n * If the user doesn't have an avatar, there's no point in showing the\n * controls dropdown, because only one option would be viable: uploading.\n * Thus, when the avatar editor's dropdown toggle button is clicked, we prompt\n * the user to upload an avatar immediately.\n *\n * @param {MouseEvent} e\n */\n quickUpload(e) {\n if (!this.attrs.user.avatarUrl()) {\n e.preventDefault();\n e.stopPropagation();\n this.openPicker();\n }\n }\n\n /**\n * Upload avatar using file picker\n */\n openPicker() {\n if (this.loading) return;\n\n // Create a hidden HTML input element and click on it so the user can select\n // an avatar file. Once they have, we will upload it via the API.\n const $input = $('<input type=\"file\" accept=\".jpg, .jpeg, .png, .bmp, .gif\">');\n\n $input\n .appendTo('body')\n .hide()\n .click()\n .on('input', (e) => {\n this.upload($(e.target)[0].files[0]);\n });\n }\n\n /**\n * Upload avatar\n *\n * @param {File} file\n */\n upload(file) {\n if (this.loading) return;\n\n const user = this.attrs.user;\n const data = new FormData();\n data.append('avatar', file);\n\n this.loading = true;\n m.redraw();\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/users/${user.id()}/avatar`,\n serialize: (raw) => raw,\n body: data,\n })\n .then(this.success.bind(this), this.failure.bind(this));\n }\n\n /**\n * Remove the user's avatar.\n */\n remove() {\n const user = this.attrs.user;\n\n this.loading = true;\n m.redraw();\n\n app\n .request({\n method: 'DELETE',\n url: `${app.forum.attribute('apiUrl')}/users/${user.id()}/avatar`,\n })\n .then(this.success.bind(this), this.failure.bind(this));\n }\n\n /**\n * After a successful upload/removal, push the updated user data into the\n * store, and force a re-computation of the user's avatar color.\n *\n * @param {object} response\n * @protected\n */\n success(response) {\n app.store.pushPayload(response);\n delete this.attrs.user.avatarColor;\n\n this.loading = false;\n m.redraw();\n }\n\n /**\n * If avatar upload/removal fails, stop loading.\n *\n * @param {object} response\n * @protected\n */\n failure(response) {\n this.loading = false;\n m.redraw();\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport humanTime from '../../common/utils/humanTime';\nimport ItemList from '../../common/utils/ItemList';\nimport UserControls from '../utils/UserControls';\nimport avatar from '../../common/helpers/avatar';\nimport username from '../../common/helpers/username';\nimport icon from '../../common/helpers/icon';\nimport Dropdown from '../../common/components/Dropdown';\nimport Link from '../../common/components/Link';\nimport AvatarEditor from './AvatarEditor';\nimport listItems from '../../common/helpers/listItems';\nimport classList from '../../common/utils/classList';\n\n/**\n * The `UserCard` component displays a user's profile card. This is used both on\n * the `UserPage` (in the hero) and in discussions, shown when hovering over a\n * post author.\n *\n * ### Attrs\n *\n * - `user`\n * - `className`\n * - `editable`\n * - `controlsButtonClassName`\n */\nexport default class UserCard extends Component {\n view() {\n const user = this.attrs.user;\n const controls = UserControls.controls(user, this).toArray();\n const color = user.color();\n const badges = user.badges().toArray();\n\n return (\n <div className={classList('UserCard', this.attrs.className)} style={color && { '--usercard-bg': color }}>\n <div className=\"darkenBackground\">\n <div className=\"container\">\n {!!controls.length && (\n <Dropdown\n className=\"UserCard-controls App-primaryControl\"\n menuClassName=\"Dropdown-menu--right\"\n buttonClassName={this.attrs.controlsButtonClassName}\n label={app.translator.trans('core.forum.user_controls.button')}\n accessibleToggleLabel={app.translator.trans('core.forum.user_controls.toggle_dropdown_accessible_label')}\n icon=\"fas fa-ellipsis-v\"\n >\n {controls}\n </Dropdown>\n )}\n\n <div className=\"UserCard-profile\">\n <h1 className=\"UserCard-identity\">\n {this.attrs.editable ? (\n <>\n <AvatarEditor user={user} className=\"UserCard-avatar\" /> {username(user)}\n </>\n ) : (\n <Link href={app.route.user(user)}>\n <div className=\"UserCard-avatar\">{avatar(user, { loading: 'eager' })}</div>\n {username(user)}\n </Link>\n )}\n </h1>\n\n {!!badges.length && <ul className=\"UserCard-badges badges\">{listItems(badges)}</ul>}\n\n <ul className=\"UserCard-info\">{listItems(this.infoItems().toArray())}</ul>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n /**\n * Build an item list of tidbits of info to show on this user's profile.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n infoItems() {\n const items = new ItemList();\n const user = this.attrs.user;\n const lastSeenAt = user.lastSeenAt();\n\n if (lastSeenAt) {\n const online = user.isOnline();\n\n items.add(\n 'lastSeen',\n <span className={classList('UserCard-lastSeen', { online })}>\n {online\n ? [icon('fas fa-circle'), ' ', app.translator.trans('core.forum.user.online_text')]\n : [icon('far fa-clock'), ' ', humanTime(lastSeenAt)]}\n </span>,\n 100\n );\n }\n\n items.add('joined', app.translator.trans('core.forum.user.joined_date_text', { ago: humanTime(user.joinTime()) }), 90);\n\n return items;\n }\n}\n","import type Mithril from 'mithril';\nimport User from '../models/User';\nimport icon from './icon';\n\n/**\n * The `useronline` helper displays a green circle if the user is online.\n */\nexport default function userOnline(user: User): Mithril.Vnode<{}, {}> | null {\n if (user.lastSeenAt() && user.isOnline()) {\n return <span className=\"UserOnline\">{icon('fas fa-circle')}</span>;\n }\n\n return null;\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport Link from '../../common/components/Link';\nimport UserCard from './UserCard';\nimport avatar from '../../common/helpers/avatar';\nimport username from '../../common/helpers/username';\nimport userOnline from '../../common/helpers/userOnline';\nimport listItems from '../../common/helpers/listItems';\n\n/**\n * The `PostUser` component shows the avatar and username of a post's author.\n *\n * ### Attrs\n *\n * - `post`\n */\nexport default class PostUser extends Component {\n view() {\n const post = this.attrs.post;\n const user = post.user();\n\n if (!user) {\n return (\n <div className=\"PostUser\">\n <h3 className=\"PostUser-name\">\n {avatar(user, { className: 'PostUser-avatar' })} {username(user)}\n </h3>\n </div>\n );\n }\n\n return (\n <div className=\"PostUser\">\n <h3 className=\"PostUser-name\">\n <Link href={app.route.user(user)}>\n {avatar(user, { className: 'PostUser-avatar' })}\n {userOnline(user)}\n {username(user)}\n </Link>\n </h3>\n <ul className=\"PostUser-badges badges\">{listItems(user.badges().toArray())}</ul>\n\n {!post.isHidden() && this.attrs.cardVisible && (\n <UserCard user={user} className=\"UserCard--popover\" controlsButtonClassName=\"Button Button--icon Button--flat\" />\n )}\n </div>\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n let timeout;\n\n this.$()\n .on('mouseover', '.PostUser-name a, .UserCard', () => {\n clearTimeout(timeout);\n timeout = setTimeout(this.showCard.bind(this), 500);\n })\n .on('mouseout', '.PostUser-name a, .UserCard', () => {\n clearTimeout(timeout);\n timeout = setTimeout(this.hideCard.bind(this), 250);\n });\n }\n\n /**\n * Show the user card.\n */\n showCard() {\n this.attrs.oncardshow();\n\n setTimeout(() => this.$('.UserCard').addClass('in'));\n }\n\n /**\n * Hide the user card.\n */\n hideCard() {\n this.$('.UserCard')\n .removeClass('in')\n .one('transitionend webkitTransitionEnd oTransitionEnd', () => {\n this.attrs.oncardhide();\n });\n }\n}\n","import dayjs from 'dayjs';\nimport type Mithril from 'mithril';\n\n/**\n * The `fullTime` helper displays a formatted time string wrapped in a <time>\n * tag.\n */\nexport default function fullTime(time: Date): Mithril.Vnode {\n const d = dayjs(time);\n\n const datetime = d.format();\n const full = d.format('LLLL');\n\n return (\n <time pubdate datetime={datetime}>\n {full}\n </time>\n );\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport humanTime from '../../common/helpers/humanTime';\nimport fullTime from '../../common/helpers/fullTime';\n\n/**\n * The `PostMeta` component displays the time of a post, and when clicked, shows\n * a dropdown containing more information about the post (number, full time,\n * permalink).\n *\n * ### Attrs\n *\n * - `post`\n */\nexport default class PostMeta extends Component {\n view() {\n const post = this.attrs.post;\n const time = post.createdAt();\n const permalink = this.getPermalink(post);\n const touch = 'ontouchstart' in document.documentElement;\n\n // When the dropdown menu is shown, select the contents of the permalink\n // input so that the user can quickly copy the URL.\n const selectPermalink = function (e) {\n setTimeout(() => $(this).parent().find('.PostMeta-permalink').select());\n\n e.redraw = false;\n };\n\n return (\n <div className=\"Dropdown PostMeta\">\n <a className=\"Dropdown-toggle\" onclick={selectPermalink} data-toggle=\"dropdown\">\n {humanTime(time)}\n </a>\n\n <div className=\"Dropdown-menu dropdown-menu\">\n <span className=\"PostMeta-number\">{app.translator.trans('core.forum.post.number_tooltip', { number: post.number() })}</span>{' '}\n <span className=\"PostMeta-time\">{fullTime(time)}</span> <span className=\"PostMeta-ip\">{post.data.attributes.ipAddress}</span>\n {touch ? (\n <a className=\"Button PostMeta-permalink\" href={permalink}>\n {permalink}\n </a>\n ) : (\n <input className=\"FormControl PostMeta-permalink\" value={permalink} onclick={(e) => e.stopPropagation()} />\n )}\n </div>\n </div>\n );\n }\n\n /**\n * Get the permalink for the given post.\n *\n * @param {import('../../common/models/Post').default} post\n * @returns {string}\n */\n getPermalink(post) {\n return app.forum.attribute('baseOrigin') + app.route.post(post);\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport humanTime from '../../common/utils/humanTime';\nimport Tooltip from '../../common/components/Tooltip';\n\n/**\n * The `PostEdited` component displays information about when and by whom a post\n * was edited.\n *\n * ### Attrs\n *\n * - `post`\n */\nexport default class PostEdited extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n const post = this.attrs.post;\n const editedUser = post.editedUser();\n const editedInfo = app.translator.trans('core.forum.post.edited_tooltip', { user: editedUser, ago: humanTime(post.editedAt()) });\n\n return (\n <Tooltip text={editedInfo}>\n <span className=\"PostEdited\">{app.translator.trans('core.forum.post.edited_text')}</span>\n </Tooltip>\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n }\n}\n","import app from '../../forum/app';\nimport Post from './Post';\nimport classList from '../../common/utils/classList';\nimport PostUser from './PostUser';\nimport PostMeta from './PostMeta';\nimport PostEdited from './PostEdited';\nimport EditPostComposer from './EditPostComposer';\nimport ItemList from '../../common/utils/ItemList';\nimport listItems from '../../common/helpers/listItems';\nimport Button from '../../common/components/Button';\nimport ComposerPostPreview from './ComposerPostPreview';\n\n/**\n * The `CommentPost` component displays a standard `comment`-typed post. This\n * includes a number of item lists (controls, header, and footer) surrounding\n * the post's HTML content.\n *\n * ### Attrs\n *\n * - `post`\n */\nexport default class CommentPost extends Post {\n oninit(vnode) {\n super.oninit(vnode);\n\n /**\n * If the post has been hidden, then this flag determines whether or not its\n * content has been expanded.\n *\n * @type {Boolean}\n */\n this.revealContent = false;\n\n /**\n * Whether or not the user hover card inside of PostUser is visible.\n * The property must be managed in CommentPost to be able to use it in the subtree check\n *\n * @type {Boolean}\n */\n this.cardVisible = false;\n\n this.subtree.check(\n () => this.cardVisible,\n () => this.isEditing(),\n () => this.revealContent\n );\n }\n\n content() {\n return super.content().concat([\n <header className=\"Post-header\">\n <ul>{listItems(this.headerItems().toArray())}</ul>\n </header>,\n <div className=\"Post-body\">\n {this.isEditing() ? <ComposerPostPreview className=\"Post-preview\" composer={app.composer} /> : m.trust(this.attrs.post.contentHtml())}\n </div>,\n ]);\n }\n\n refreshContent() {\n const contentHtml = this.isEditing() ? '' : this.attrs.post.contentHtml();\n\n // If the post content has changed since the last render, we'll run through\n // all of the <script> tags in the content and evaluate them. This is\n // necessary because TextFormatter outputs them for e.g. syntax highlighting.\n if (this.contentHtml !== contentHtml) {\n this.$('.Post-body script').each(function () {\n const script = document.createElement('script');\n script.textContent = this.textContent;\n Array.from(this.attributes).forEach((attr) => script.setAttribute(attr.name, attr.value));\n this.parentNode.replaceChild(script, this);\n });\n }\n\n this.contentHtml = contentHtml;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.refreshContent();\n }\n\n onupdate(vnode) {\n super.onupdate(vnode);\n\n this.refreshContent();\n }\n\n isEditing() {\n return app.composer.bodyMatches(EditPostComposer, { post: this.attrs.post });\n }\n\n elementAttrs() {\n const post = this.attrs.post;\n const attrs = super.elementAttrs();\n\n attrs.className = classList(attrs.className, 'CommentPost', {\n 'Post--renderFailed': post.renderFailed(),\n 'Post--hidden': post.isHidden(),\n 'Post--edited': post.isEdited(),\n revealContent: this.revealContent,\n editing: this.isEditing(),\n });\n\n if (this.isEditing()) attrs['aria-busy'] = 'true';\n\n return attrs;\n }\n\n /**\n * Toggle the visibility of a hidden post's content.\n */\n toggleContent() {\n this.revealContent = !this.revealContent;\n }\n\n /**\n * Build an item list for the post's header.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n headerItems() {\n const items = new ItemList();\n const post = this.attrs.post;\n\n items.add(\n 'user',\n <PostUser\n post={post}\n cardVisible={this.cardVisible}\n oncardshow={() => {\n this.cardVisible = true;\n m.redraw();\n }}\n oncardhide={() => {\n this.cardVisible = false;\n m.redraw();\n }}\n />,\n 100\n );\n items.add('meta', <PostMeta post={post} />);\n\n if (post.isEdited() && !post.isHidden()) {\n items.add('edited', <PostEdited post={post} />);\n }\n\n // If the post is hidden, add a button that allows toggling the visibility\n // of the post's content.\n if (post.isHidden()) {\n items.add(\n 'toggle',\n <Button className=\"Button Button--default Button--more\" icon=\"fas fa-ellipsis-h\" onclick={this.toggleContent.bind(this)} />\n );\n }\n\n return items;\n }\n}\n","import app from '../../forum/app';\nimport Post from './Post';\nimport { ucfirst } from '../../common/utils/string';\nimport usernameHelper from '../../common/helpers/username';\nimport icon from '../../common/helpers/icon';\nimport Link from '../../common/components/Link';\nimport humanTime from '../../common/helpers/humanTime';\nimport classList from '../../common/utils/classList';\n\n/**\n * The `EventPost` component displays a post which indicating a discussion\n * event, like a discussion being renamed or stickied. Subclasses must implement\n * the `icon` and `description` methods.\n *\n * ### Attrs\n *\n * - All of the attrs for `Post`\n *\n * @abstract\n */\nexport default class EventPost extends Post {\n elementAttrs() {\n const attrs = super.elementAttrs();\n\n attrs.className = classList(attrs.className, 'EventPost', ucfirst(this.attrs.post.contentType()) + 'Post');\n\n return attrs;\n }\n\n content() {\n const user = this.attrs.post.user();\n const username = usernameHelper(user);\n const data = Object.assign(this.descriptionData(), {\n user,\n username: user ? (\n <Link className=\"EventPost-user\" href={app.route.user(user)}>\n {username}\n </Link>\n ) : (\n username\n ),\n time: humanTime(this.attrs.post.createdAt()),\n });\n\n return super\n .content()\n .concat([icon(this.icon(), { className: 'EventPost-icon' }), <div className=\"EventPost-info\">{this.description(data)}</div>]);\n }\n\n /**\n * Get the name of the event icon.\n *\n * @return {string}\n */\n icon() {\n return '';\n }\n\n /**\n * Get the description text for the event.\n *\n * @param {Record<string, unknown>} data\n * @return {import('mithril').Children} The description to render in the DOM\n */\n description(data) {\n return app.translator.trans(this.descriptionKey(), data);\n }\n\n /**\n * Get the translation key for the description of the event.\n *\n * @return {string}\n */\n descriptionKey() {\n return '';\n }\n\n /**\n * Get the translation data for the description of the event.\n *\n * @return {Record<string, unknown>}\n */\n descriptionData() {\n return {};\n }\n}\n","import app from '../../forum/app';\nimport EventPost from './EventPost';\nimport extractText from '../../common/utils/extractText';\nimport Tooltip from '../../common/components/Tooltip';\n\n/**\n * The `DiscussionRenamedPost` component displays a discussion event post\n * indicating that the discussion has been renamed.\n *\n * ### Attrs\n *\n * - All of the attrs for EventPost\n */\nexport default class DiscussionRenamedPost extends EventPost {\n icon() {\n return 'fas fa-pencil-alt';\n }\n\n description(data) {\n const renamed = app.translator.trans('core.forum.post_stream.discussion_renamed_text', data);\n\n return <span>{renamed}</span>;\n }\n\n descriptionData() {\n const post = this.attrs.post;\n const oldTitle = post.content()[0];\n const newTitle = post.content()[1];\n\n return {\n new: (\n <Tooltip text={extractText(app.translator.trans('core.forum.post_stream.discussion_renamed_old_tooltip', { old: oldTitle }))}>\n <strong className=\"DiscussionRenamedPost-new\">{newTitle}</strong>\n </Tooltip>\n ),\n };\n }\n}\n","import app from '../app';\nimport Component from '../../common/Component';\nimport Button from '../../common/components/Button';\nimport type Mithril from 'mithril';\n\nexport interface IWelcomeHeroAttrs {}\n\nconst LOCAL_STORAGE_KEY = 'welcomeHidden';\n\n/**\n * The `WelcomeHero` component displays a hero that welcomes the user to the\n * forum.\n */\nexport default class WelcomeHero extends Component<IWelcomeHeroAttrs> {\n /**\n * @deprecated Extend the `isHidden` method instead.\n */\n hidden: boolean = false;\n\n oninit(vnode: Mithril.Vnode<IWelcomeHeroAttrs, this>) {\n super.oninit(vnode);\n }\n\n view(vnode: Mithril.Vnode<IWelcomeHeroAttrs, this>) {\n if (this.isHidden()) return null;\n\n const slideUp = () => {\n this.$().slideUp(this.hide.bind(this));\n };\n\n return (\n <header className=\"Hero WelcomeHero\">\n <div className=\"container\">\n <Button\n icon=\"fas fa-times\"\n onclick={slideUp}\n className=\"Hero-close Button Button--icon Button--link\"\n aria-label={app.translator.trans('core.forum.welcome_hero.hide')}\n />\n\n <div className=\"containerNarrow\">\n <h1 className=\"Hero-title\">{app.forum.attribute('welcomeTitle')}</h1>\n <div className=\"Hero-subtitle\">{m.trust(app.forum.attribute('welcomeMessage'))}</div>\n </div>\n </div>\n </header>\n );\n }\n\n /**\n * Hide the welcome hero.\n */\n hide() {\n localStorage.setItem(LOCAL_STORAGE_KEY, 'true');\n }\n\n /**\n * Determines whether the welcome hero should be hidden.\n *\n * @returns if the welcome hero is hidden.\n */\n isHidden(): boolean {\n if (!app.forum.attribute<string>('welcomeTitle')?.trim()) return true;\n if (localStorage.getItem(LOCAL_STORAGE_KEY)) return true;\n if (this.hidden) return true;\n\n return false;\n }\n}\n","import app from '../../forum/app';\nimport ComposerBody from './ComposerBody';\nimport extractText from '../../common/utils/extractText';\nimport Stream from '../../common/utils/Stream';\n\n/**\n * The `DiscussionComposer` component displays the composer content for starting\n * a new discussion. It adds a text field as a header control so the user can\n * enter the title of their discussion. It also overrides the `submit` and\n * `willExit` actions to account for the title.\n *\n * ### Attrs\n *\n * - All of the attrs for ComposerBody\n * - `titlePlaceholder`\n */\nexport default class DiscussionComposer extends ComposerBody {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.placeholder = attrs.placeholder || extractText(app.translator.trans('core.forum.composer_discussion.body_placeholder'));\n attrs.submitLabel = attrs.submitLabel || app.translator.trans('core.forum.composer_discussion.submit_button');\n attrs.confirmExit = attrs.confirmExit || extractText(app.translator.trans('core.forum.composer_discussion.discard_confirmation'));\n attrs.titlePlaceholder = attrs.titlePlaceholder || extractText(app.translator.trans('core.forum.composer_discussion.title_placeholder'));\n attrs.className = 'ComposerBody--discussion';\n }\n\n oninit(vnode) {\n super.oninit(vnode);\n\n this.composer.fields.title = this.composer.fields.title || Stream('');\n\n /**\n * The value of the title input.\n *\n * @type {Function}\n */\n this.title = this.composer.fields.title;\n }\n\n headerItems() {\n const items = super.headerItems();\n\n items.add('title', <h3>{app.translator.trans('core.forum.composer_discussion.title')}</h3>, 100);\n\n items.add(\n 'discussionTitle',\n <h3>\n <input\n className=\"FormControl\"\n bidi={this.title}\n placeholder={this.attrs.titlePlaceholder}\n disabled={!!this.attrs.disabled}\n onkeydown={this.onkeydown.bind(this)}\n />\n </h3>\n );\n\n return items;\n }\n\n /**\n * Handle the title input's keydown event. When the return key is pressed,\n * move the focus to the start of the text editor.\n *\n * @param {KeyboardEvent} e\n */\n onkeydown(e) {\n if (e.which === 13) {\n // Return\n e.preventDefault();\n this.composer.editor.moveCursorTo(0);\n }\n\n e.redraw = false;\n }\n\n hasChanges() {\n return this.title() || this.composer.fields.content();\n }\n\n /**\n * Get the data to submit to the server when the discussion is saved.\n *\n * @return {Record<string, unknown>}\n */\n data() {\n return {\n title: this.title(),\n content: this.composer.fields.content(),\n };\n }\n\n onsubmit() {\n this.loading = true;\n\n const data = this.data();\n\n app.store\n .createRecord('discussions')\n .save(data)\n .then((discussion) => {\n this.composer.hide();\n app.discussions.refresh();\n m.route.set(app.route.discussion(discussion));\n }, this.loaded.bind(this));\n }\n}\n","import app from '../../forum/app';\nimport Page, { IPageAttrs } from '../../common/components/Page';\nimport ItemList from '../../common/utils/ItemList';\nimport listItems from '../../common/helpers/listItems';\nimport DiscussionList from './DiscussionList';\nimport WelcomeHero from './WelcomeHero';\nimport DiscussionComposer from './DiscussionComposer';\nimport LogInModal from './LogInModal';\nimport DiscussionPage from './DiscussionPage';\nimport Dropdown from '../../common/components/Dropdown';\nimport Button from '../../common/components/Button';\nimport LinkButton from '../../common/components/LinkButton';\nimport SelectDropdown from '../../common/components/SelectDropdown';\nimport extractText from '../../common/utils/extractText';\nimport type Mithril from 'mithril';\nimport type Discussion from '../../common/models/Discussion';\n\nexport interface IIndexPageAttrs extends IPageAttrs {}\n\n/**\n * The `IndexPage` component displays the index page, including the welcome\n * hero, the sidebar, and the discussion list.\n */\nexport default class IndexPage<CustomAttrs extends IIndexPageAttrs = IIndexPageAttrs, CustomState = {}> extends Page<CustomAttrs, CustomState> {\n static providesInitialSearch = true;\n lastDiscussion?: Discussion;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n // If the user is returning from a discussion page, then take note of which\n // discussion they have just visited. After the view is rendered, we will\n // scroll down so that this discussion is in view.\n if (app.previous.matches(DiscussionPage)) {\n this.lastDiscussion = app.previous.get('discussion');\n }\n\n // If the user is coming from the discussion list, then they have either\n // just switched one of the parameters (filter, sort, search) or they\n // probably want to refresh the results. We will clear the discussion list\n // cache so that results are reloaded.\n if (app.previous.matches(IndexPage)) {\n app.discussions.clear();\n }\n\n app.discussions.refreshParams(app.search.params(), (m.route.param('page') && Number(m.route.param('page'))) || 1);\n\n app.history.push('index', extractText(app.translator.trans('core.forum.header.back_to_index_tooltip')));\n\n this.bodyClass = 'App--index';\n this.scrollTopOnCreate = false;\n }\n\n view() {\n return (\n <div className=\"IndexPage\">\n {this.hero()}\n <div className=\"container\">\n <div className=\"sideNavContainer\">\n <nav className=\"IndexPage-nav sideNav\">\n <ul>{listItems(this.sidebarItems().toArray())}</ul>\n </nav>\n <div className=\"IndexPage-results sideNavOffset\">\n <div className=\"IndexPage-toolbar\">\n <ul className=\"IndexPage-toolbar-view\">{listItems(this.viewItems().toArray())}</ul>\n <ul className=\"IndexPage-toolbar-action\">{listItems(this.actionItems().toArray())}</ul>\n </div>\n <DiscussionList state={app.discussions} />\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n setTitle() {\n app.setTitle(extractText(app.translator.trans('core.forum.index.meta_title_text')));\n app.setTitleCount(0);\n }\n\n oncreate(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.oncreate(vnode);\n\n this.setTitle();\n\n // Work out the difference between the height of this hero and that of the\n // previous hero. Maintain the same scroll position relative to the bottom\n // of the hero so that the sidebar doesn't jump around.\n const oldHeroHeight = app.cache.heroHeight as number;\n const heroHeight = (app.cache.heroHeight = this.$('.Hero').outerHeight() || 0);\n const scrollTop = app.cache.scrollTop as number;\n\n $('#app').css('min-height', ($(window).height() || 0) + heroHeight);\n\n // Let browser handle scrolling on page reload.\n if (app.previous.type == null) return;\n\n // Only retain scroll position if we're coming from a discussion page.\n // Otherwise, we've just changed the filter, so we should go to the top of the page.\n if (this.lastDiscussion) {\n $(window).scrollTop(scrollTop - oldHeroHeight + heroHeight);\n } else {\n $(window).scrollTop(0);\n }\n\n // If we've just returned from a discussion page, then the constructor will\n // have set the `lastDiscussion` property. If this is the case, we want to\n // scroll down to that discussion so that it's in view.\n if (this.lastDiscussion) {\n const $discussion = this.$(`li[data-id=\"${this.lastDiscussion.id()}\"] .DiscussionListItem`);\n\n if ($discussion.length) {\n const indexTop = $('#header').outerHeight() || 0;\n const indexBottom = $(window).height() || 0;\n const discussionOffset = $discussion.offset();\n const discussionTop = (discussionOffset && discussionOffset.top) || 0;\n const discussionBottom = discussionTop + ($discussion.outerHeight() || 0);\n\n if (discussionTop < scrollTop + indexTop || discussionBottom > scrollTop + indexBottom) {\n $(window).scrollTop(discussionTop - indexTop);\n }\n }\n }\n }\n\n onbeforeremove(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.onbeforeremove(vnode);\n\n // Save the scroll position so we can restore it when we return to the\n // discussion list.\n app.cache.scrollTop = $(window).scrollTop();\n }\n\n onremove(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.onremove(vnode);\n\n $('#app').css('min-height', '');\n }\n\n /**\n * Get the component to display as the hero.\n */\n hero() {\n return <WelcomeHero />;\n }\n\n /**\n * Build an item list for the sidebar of the index page. By default this is a\n * \"New Discussion\" button, and then a DropdownSelect component containing a\n * list of navigation items.\n */\n sidebarItems() {\n const items = new ItemList<Mithril.Children>();\n const canStartDiscussion = app.forum.attribute('canStartDiscussion') || !app.session.user;\n\n items.add(\n 'newDiscussion',\n <Button\n icon=\"fas fa-edit\"\n className=\"Button Button--primary IndexPage-newDiscussion\"\n itemClassName=\"App-primaryControl\"\n onclick={() => {\n // If the user is not logged in, the promise rejects, and a login modal shows up.\n // Since that's already handled, we dont need to show an error message in the console.\n return this.newDiscussionAction().catch(() => {});\n }}\n disabled={!canStartDiscussion}\n >\n {app.translator.trans(`core.forum.index.${canStartDiscussion ? 'start_discussion_button' : 'cannot_start_discussion_button'}`)}\n </Button>\n );\n\n items.add(\n 'nav',\n <SelectDropdown\n buttonClassName=\"Button\"\n className=\"App-titleControl\"\n accessibleToggleLabel={app.translator.trans('core.forum.index.toggle_sidenav_dropdown_accessible_label')}\n >\n {this.navItems().toArray()}\n </SelectDropdown>\n );\n\n return items;\n }\n\n /**\n * Build an item list for the navigation in the sidebar of the index page. By\n * default this is just the 'All Discussions' link.\n */\n navItems() {\n const items = new ItemList<Mithril.Children>();\n const params = app.search.stickyParams();\n\n items.add(\n 'allDiscussions',\n <LinkButton href={app.route('index', params)} icon=\"far fa-comments\">\n {app.translator.trans('core.forum.index.all_discussions_link')}\n </LinkButton>,\n 100\n );\n\n return items;\n }\n\n /**\n * Build an item list for the part of the toolbar which is concerned with how\n * the results are displayed. By default this is just a select box to change\n * the way discussions are sorted.\n */\n viewItems() {\n const items = new ItemList<Mithril.Children>();\n const sortMap = app.discussions.sortMap();\n\n const sortOptions = Object.keys(sortMap).reduce((acc: any, sortId) => {\n acc[sortId] = app.translator.trans(`core.forum.index_sort.${sortId}_button`);\n return acc;\n }, {});\n\n items.add(\n 'sort',\n <Dropdown\n buttonClassName=\"Button\"\n label={sortOptions[app.search.params().sort] || Object.keys(sortMap).map((key) => sortOptions[key])[0]}\n accessibleToggleLabel={app.translator.trans('core.forum.index_sort.toggle_dropdown_accessible_label')}\n >\n {Object.keys(sortOptions).map((value) => {\n const label = sortOptions[value];\n const active = (app.search.params().sort || Object.keys(sortMap)[0]) === value;\n\n return (\n <Button icon={active ? 'fas fa-check' : true} onclick={app.search.changeSort.bind(app.search, value)} active={active}>\n {label}\n </Button>\n );\n })}\n </Dropdown>\n );\n\n return items;\n }\n\n /**\n * Build an item list for the part of the toolbar which is about taking action\n * on the results. By default this is just a \"mark all as read\" button.\n */\n actionItems() {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'refresh',\n <Button\n title={app.translator.trans('core.forum.index.refresh_tooltip')}\n icon=\"fas fa-sync\"\n className=\"Button Button--icon\"\n onclick={() => {\n app.discussions.refresh();\n if (app.session.user) {\n app.store.find('users', app.session.user.id()!);\n m.redraw();\n }\n }}\n />\n );\n\n if (app.session.user) {\n items.add(\n 'markAllAsRead',\n <Button\n title={app.translator.trans('core.forum.index.mark_all_as_read_tooltip')}\n icon=\"fas fa-check\"\n className=\"Button Button--icon\"\n onclick={this.markAllAsRead.bind(this)}\n />\n );\n }\n\n return items;\n }\n\n /**\n * Open the composer for a new discussion or prompt the user to login.\n */\n newDiscussionAction(): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (app.session.user) {\n app.composer.load(DiscussionComposer, { user: app.session.user });\n app.composer.show();\n\n return resolve(app.composer);\n } else {\n app.modal.show(LogInModal);\n\n return reject();\n }\n });\n }\n\n /**\n * Mark all discussions as read.\n */\n markAllAsRead() {\n const confirmation = confirm(extractText(app.translator.trans('core.forum.index.mark_all_as_read_confirmation')));\n\n if (confirmation) {\n app.session.user?.save({ markedAllAsReadAt: new Date() });\n }\n }\n}\n","import app from '../../forum/app';\nimport UserPage, { IUserPageAttrs } from './UserPage';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport Button from '../../common/components/Button';\nimport Link from '../../common/components/Link';\nimport Placeholder from '../../common/components/Placeholder';\nimport CommentPost from './CommentPost';\nimport type Post from '../../common/models/Post';\nimport type Mithril from 'mithril';\nimport type User from '../../common/models/User';\n\n/**\n * The `PostsUserPage` component shows a user's activity feed inside of their\n * profile.\n */\nexport default class PostsUserPage extends UserPage {\n /**\n * Whether or not the activity feed is currently loading.\n */\n loading: boolean = true;\n\n /**\n * Whether or not there are any more activity items that can be loaded.\n */\n moreResults: boolean = false;\n\n /**\n * The Post models in the feed.\n */\n posts: Post[] = [];\n\n /**\n * The number of activity items to load per request.\n */\n loadLimit: number = 20;\n\n oninit(vnode: Mithril.Vnode<IUserPageAttrs, this>) {\n super.oninit(vnode);\n\n this.loadUser(m.route.param('username'));\n }\n\n content() {\n if (this.posts.length === 0 && !this.loading) {\n return (\n <div className=\"PostsUserPage\">\n <Placeholder text={app.translator.trans('core.forum.user.posts_empty_text')} />\n </div>\n );\n }\n\n let footer;\n\n if (this.loading) {\n footer = <LoadingIndicator />;\n } else if (this.moreResults) {\n footer = (\n <div className=\"PostsUserPage-loadMore\">\n <Button className=\"Button\" onclick={this.loadMore.bind(this)}>\n {app.translator.trans('core.forum.user.posts_load_more_button')}\n </Button>\n </div>\n );\n }\n\n return (\n <div className=\"PostsUserPage\">\n <ul className=\"PostsUserPage-list\">\n {this.posts.map((post) => (\n <li>\n <div className=\"PostsUserPage-discussion\">\n {app.translator.trans('core.forum.user.in_discussion_text', {\n discussion: <Link href={app.route.post(post)}>{post.discussion().title()}</Link>,\n })}\n </div>\n\n <CommentPost post={post} />\n </li>\n ))}\n </ul>\n <div className=\"PostsUserPage-loadMore\">{footer}</div>\n </div>\n );\n }\n\n /**\n * Initialize the component with a user, and trigger the loading of their\n * activity feed.\n */\n show(user: User): void {\n super.show(user);\n\n this.refresh();\n }\n\n /**\n * Clear and reload the user's activity feed.\n */\n refresh() {\n this.loading = true;\n this.posts = [];\n\n m.redraw();\n\n this.loadResults().then(this.parseResults.bind(this));\n }\n\n /**\n * Load a new page of the user's activity feed.\n *\n * @protected\n */\n loadResults(offset = 0) {\n return app.store.find<Post[]>('posts', {\n filter: {\n author: this.user!.username(),\n type: 'comment',\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n\n /**\n * Load the next page of results.\n */\n loadMore() {\n this.loading = true;\n this.loadResults(this.posts.length).then(this.parseResults.bind(this));\n }\n\n /**\n * Parse results and append them to the activity feed.\n */\n parseResults(results: Post[]): Post[] {\n this.loading = false;\n\n this.posts.push(...results);\n\n this.moreResults = results.length >= this.loadLimit;\n m.redraw();\n\n return results;\n }\n}\n","import app from '../../common/app';\nimport Model from '../Model';\nimport { ApiQueryParamsPlural, ApiResponsePlural } from '../Store';\n\nexport interface Page<TModel> {\n number: number;\n items: TModel[];\n\n hasPrev?: boolean;\n hasNext?: boolean;\n}\n\nexport interface PaginationLocation {\n page: number;\n startIndex?: number;\n endIndex?: number;\n}\n\nexport interface PaginatedListParams {\n [key: string]: any;\n}\n\nexport interface PaginatedListRequestParams extends Omit<ApiQueryParamsPlural, 'include'> {\n include?: string | string[];\n}\n\nexport default abstract class PaginatedListState<T extends Model, P extends PaginatedListParams = PaginatedListParams> {\n protected location!: PaginationLocation;\n protected pageSize: number;\n\n protected pages: Page<T>[] = [];\n protected params: P = {} as P;\n\n protected initialLoading: boolean = false;\n protected loadingPrev: boolean = false;\n protected loadingNext: boolean = false;\n\n protected constructor(params: P = {} as P, page: number = 1, pageSize: number = 20) {\n this.params = params;\n\n this.location = { page };\n this.pageSize = pageSize;\n }\n\n abstract get type(): string;\n\n public clear(): void {\n this.pages = [];\n\n m.redraw();\n }\n\n public loadPrev(): Promise<void> {\n if (this.loadingPrev || this.getLocation().page === 1) return Promise.resolve();\n\n this.loadingPrev = true;\n\n const page: number = this.getPrevPageNumber();\n\n return this.loadPage(page)\n .then(this.parseResults.bind(this, page))\n .finally(() => (this.loadingPrev = false));\n }\n\n public loadNext(): Promise<void> {\n if (this.loadingNext) return Promise.resolve();\n\n this.loadingNext = true;\n\n const page: number = this.getNextPageNumber();\n\n return this.loadPage(page)\n .then(this.parseResults.bind(this, page))\n .finally(() => (this.loadingNext = false));\n }\n\n protected parseResults(pg: number, results: ApiResponsePlural<T>): void {\n const pageNum = Number(pg);\n\n const links = results.payload?.links;\n const page = {\n number: pageNum,\n items: results,\n hasNext: !!links?.next,\n hasPrev: !!links?.prev,\n };\n\n if (this.isEmpty() || pageNum > this.getNextPageNumber() - 1) {\n this.pages.push(page);\n } else {\n this.pages.unshift(page);\n }\n\n this.location = { page: pageNum };\n\n m.redraw();\n }\n\n /**\n * Load a new page of results.\n */\n protected loadPage(page = 1): Promise<ApiResponsePlural<T>> {\n const reqParams = this.requestParams();\n\n const include = Array.isArray(reqParams.include) ? reqParams.include.join(',') : reqParams.include;\n\n const params: ApiQueryParamsPlural = {\n ...reqParams,\n page: {\n ...reqParams.page,\n offset: this.pageSize * (page - 1),\n },\n include,\n };\n\n return app.store.find<T[]>(this.type, params);\n }\n\n /**\n * Get the parameters that should be passed in the API request.\n * Do not include page offset unless subclass overrides loadPage.\n *\n * @abstract\n * @see loadPage\n */\n protected requestParams(): PaginatedListRequestParams {\n return this.params;\n }\n\n /**\n * Update the `this.params` object, calling `refresh` if they have changed.\n * Use `requestParams` for converting `this.params` into API parameters\n *\n * @param newParams\n * @param page\n * @see requestParams\n */\n public refreshParams(newParams: P, page: number): Promise<void> {\n if (this.isEmpty() || this.paramsChanged(newParams)) {\n this.params = newParams;\n\n return this.refresh(page);\n }\n\n return Promise.resolve();\n }\n\n public refresh(page: number = 1): Promise<void> {\n this.initialLoading = true;\n this.loadingPrev = false;\n this.loadingNext = false;\n\n this.clear();\n\n this.location = { page };\n\n return this.loadPage()\n .then((results) => {\n this.pages = [];\n this.parseResults(this.location.page, results);\n })\n .finally(() => (this.initialLoading = false));\n }\n\n public getPages(): Page<T>[] {\n return this.pages;\n }\n public getLocation(): PaginationLocation {\n return this.location;\n }\n\n public isLoading(): boolean {\n return this.initialLoading || this.loadingNext || this.loadingPrev;\n }\n public isInitialLoading(): boolean {\n return this.initialLoading;\n }\n public isLoadingPrev(): boolean {\n return this.loadingPrev;\n }\n public isLoadingNext(): boolean {\n return this.loadingNext;\n }\n\n /**\n * Returns true when the number of items across all loaded pages is not 0.\n *\n * @see isEmpty\n */\n public hasItems(): boolean {\n return !!this.getAllItems().length;\n }\n\n /**\n * Returns true when there aren't any items *and* the state has already done its initial loading.\n * If you want to know whether there are items regardless of load state, use `hasItems()` instead\n *\n * @see hasItems\n */\n public isEmpty(): boolean {\n return !this.isInitialLoading() && !this.hasItems();\n }\n\n public hasPrev(): boolean {\n return !!this.pages[0]?.hasPrev;\n }\n public hasNext(): boolean {\n return !!this.pages[this.pages.length - 1]?.hasNext;\n }\n\n /**\n * Stored state parameters.\n */\n public getParams(): P {\n return this.params;\n }\n\n protected getNextPageNumber(): number {\n const pg = this.pages[this.pages.length - 1]?.number;\n\n if (pg && !isNaN(pg)) {\n return pg + 1;\n } else {\n return this.location.page;\n }\n }\n protected getPrevPageNumber(): number {\n const pg = this.pages[0]?.number;\n\n if (pg && !isNaN(pg)) {\n // If the calculated page number is less than 1,\n // return 1 as the prev page (first possible page number)\n return Math.max(pg - 1, 1);\n } else {\n return this.location.page;\n }\n }\n\n protected paramsChanged(newParams: P): boolean {\n return Object.keys(newParams).some((key) => this.getParams()[key] !== newParams[key]);\n }\n\n protected getAllItems(): T[] {\n return this.getPages()\n .map((pg) => pg.items)\n .flat();\n }\n}\n","export default class EventEmitter {\n protected events: any = {};\n\n public constructor() {\n this.events = {};\n }\n\n public on(event: string, listener: Function): EventEmitter {\n if (!this.events[event]) {\n this.events[event] = [];\n }\n\n this.events[event].push(listener);\n\n return this;\n }\n\n public emit(event: string, ...args: any[]): void {\n if (this.events[event]) {\n this.events[event].forEach((listener: Function) => listener(...args));\n }\n }\n}\n","import app from '../../forum/app';\nimport PaginatedListState, { Page, PaginatedListParams, PaginatedListRequestParams } from '../../common/states/PaginatedListState';\nimport Discussion from '../../common/models/Discussion';\nimport { ApiResponsePlural } from '../../common/Store';\nimport EventEmitter from '../../common/utils/EventEmitter';\n\nexport interface DiscussionListParams extends PaginatedListParams {\n sort?: string;\n}\n\nconst globalEventEmitter = new EventEmitter();\n\nexport default class DiscussionListState<P extends DiscussionListParams = DiscussionListParams> extends PaginatedListState<Discussion, P> {\n protected extraDiscussions: Discussion[] = [];\n protected eventEmitter: EventEmitter;\n\n constructor(params: P, page: number = 1) {\n super(params, page, 20);\n\n this.eventEmitter = globalEventEmitter.on('discussion.deleted', this.deleteDiscussion.bind(this));\n }\n\n get type(): string {\n return 'discussions';\n }\n\n requestParams(): PaginatedListRequestParams {\n const params = {\n include: ['user', 'lastPostedUser'],\n filter: this.params.filter || {},\n sort: this.sortMap()[this.params.sort ?? ''],\n };\n\n if (this.params.q) {\n params.filter.q = this.params.q;\n params.include.push('mostRelevantPost', 'mostRelevantPost.user');\n }\n\n return params;\n }\n\n protected loadPage(page: number = 1): Promise<ApiResponsePlural<Discussion>> {\n const preloadedDiscussions = app.preloadedApiDocument<Discussion[]>();\n\n if (preloadedDiscussions) {\n this.initialLoading = false;\n\n return Promise.resolve(preloadedDiscussions);\n }\n\n return super.loadPage(page);\n }\n\n clear(): void {\n super.clear();\n\n this.extraDiscussions = [];\n }\n\n /**\n * Get a map of sort keys (which appear in the URL, and are used for\n * translation) to the API sort value that they represent.\n */\n sortMap() {\n const map: any = {};\n\n if (this.params.q) {\n map.relevance = '';\n }\n map.latest = '-lastPostedAt';\n map.top = '-commentCount';\n map.newest = '-createdAt';\n map.oldest = 'createdAt';\n\n return map;\n }\n\n /**\n * In the last request, has the user searched for a discussion?\n */\n isSearchResults(): boolean {\n return !!this.params.q;\n }\n\n removeDiscussion(discussion: Discussion): void {\n this.eventEmitter.emit('discussion.deleted', discussion);\n }\n\n deleteDiscussion(discussion: Discussion): void {\n for (const page of this.pages) {\n const index = page.items.indexOf(discussion);\n\n if (index !== -1) {\n page.items.splice(index, 1);\n break;\n }\n }\n\n const index = this.extraDiscussions.indexOf(discussion);\n\n if (index !== -1) {\n this.extraDiscussions.splice(index);\n }\n\n m.redraw();\n }\n\n /**\n * Add a discussion to the top of the list.\n */\n addDiscussion(discussion: Discussion): void {\n this.removeDiscussion(discussion);\n this.extraDiscussions.unshift(discussion);\n\n m.redraw();\n }\n\n protected getAllItems(): Discussion[] {\n return this.extraDiscussions.concat(super.getAllItems());\n }\n\n public getPages(): Page<Discussion>[] {\n const pages = super.getPages();\n\n if (this.extraDiscussions.length) {\n return [\n {\n number: -1,\n items: this.extraDiscussions,\n },\n ...pages,\n ];\n }\n\n return pages;\n }\n}\n","import UserPage, { IUserPageAttrs } from './UserPage';\nimport DiscussionList from './DiscussionList';\nimport DiscussionListState from '../states/DiscussionListState';\nimport type Mithril from 'mithril';\nimport type User from '../../common/models/User';\n\n/**\n * The `DiscussionsUserPage` component shows a discussion list inside of a user\n * page.\n */\nexport default class DiscussionsUserPage extends UserPage<IUserPageAttrs, DiscussionListState> {\n oninit(vnode: Mithril.Vnode<IUserPageAttrs, this>) {\n super.oninit(vnode);\n\n this.loadUser(m.route.param('username'));\n }\n\n show(user: User): void {\n super.show(user);\n\n this.state = new DiscussionListState({\n filter: { author: user.username() },\n sort: 'newest',\n });\n\n this.state.refresh();\n }\n\n content() {\n return (\n <div className=\"DiscussionsUserPage\">\n <DiscussionList state={this.state} />\n </div>\n );\n }\n}\n","/**\n * An event handler factory that makes it simpler to implement data binding\n * for component event listeners.\n *\n * The handler created by this factory passes the DOM element's attribute\n * identified by the first argument to the callback (usually a bidirectional\n * Mithril stream: https://mithril.js.org/stream.html#bidirectional-bindings).\n *\n * Replaces m.withAttr for Mithril 2.0.\n * @see https://mithril.js.org/archive/v0.2.5/mithril.withAttr.html\n */\nexport default (key: string, cb: Function) =>\n function (this: Element) {\n cb(this.getAttribute(key) || (this as any)[key]);\n };\n","import Component, { ComponentAttrs } from '../Component';\nimport LoadingIndicator from './LoadingIndicator';\nimport icon from '../helpers/icon';\nimport classList from '../utils/classList';\nimport withAttr from '../utils/withAttr';\nimport type Mithril from 'mithril';\n\nexport interface ICheckboxAttrs extends ComponentAttrs {\n state?: boolean;\n loading?: boolean;\n disabled?: boolean;\n onchange: (checked: boolean, component: Checkbox<this>) => void;\n}\n\n/**\n * The `Checkbox` component defines a checkbox input.\n *\n * ### Attrs\n *\n * - `state` Whether or not the checkbox is checked.\n * - `className` The class name for the root element.\n * - `disabled` Whether or not the checkbox is disabled.\n * - `loading` Whether or not the checkbox is loading.\n * - `onchange` A callback to run when the checkbox is checked/unchecked.\n * - `children` A text label to display next to the checkbox.\n */\nexport default class Checkbox<CustomAttrs extends ICheckboxAttrs = ICheckboxAttrs> extends Component<CustomAttrs> {\n view(vnode: Mithril.Vnode<CustomAttrs, this>) {\n const className = classList([\n 'Checkbox',\n this.attrs.state ? 'on' : 'off',\n this.attrs.className,\n this.attrs.loading && 'loading',\n this.attrs.disabled && 'disabled',\n ]);\n\n return (\n <label className={className}>\n <input type=\"checkbox\" checked={this.attrs.state} disabled={this.attrs.disabled} onchange={withAttr('checked', this.onchange.bind(this))} />\n <div className=\"Checkbox-display\" aria-hidden=\"true\">\n {this.getDisplay()}\n </div>\n {vnode.children}\n </label>\n );\n }\n\n /**\n * Get the template for the checkbox's display (tick/cross icon).\n */\n protected getDisplay(): Mithril.Children {\n return this.attrs.loading ? <LoadingIndicator display=\"unset\" size=\"small\" /> : icon(this.attrs.state ? 'fas fa-check' : 'fas fa-times');\n }\n\n /**\n * Run a callback when the state of the checkbox is changed.\n */\n protected onchange(checked: boolean): void {\n if (this.attrs.onchange) this.attrs.onchange(checked, this);\n }\n}\n","import classList from '../utils/classList';\nimport Checkbox, { ICheckboxAttrs } from './Checkbox';\n\n/**\n * The `Switch` component is a `Checkbox`, but with a switch display instead of\n * a tick/cross one.\n */\nexport default class Switch extends Checkbox {\n static initAttrs(attrs: ICheckboxAttrs) {\n super.initAttrs(attrs);\n\n attrs.className = classList(attrs.className, 'Checkbox--switch');\n }\n\n getDisplay() {\n return !!this.attrs.loading && super.getDisplay();\n }\n}\n","import Component from '../Component';\nimport listItems from '../helpers/listItems';\n\n/**\n * The `FieldSet` component defines a collection of fields, displayed in a list\n * underneath a title. Accepted properties are:\n *\n * - `className` The class name for the fieldset.\n * - `label` The title of this group of fields.\n *\n * The children should be an array of items to show in the fieldset.\n */\nexport default class FieldSet extends Component {\n view(vnode) {\n return (\n <fieldset className={this.attrs.className}>\n <legend>{this.attrs.label}</legend>\n <ul>{listItems(vnode.children)}</ul>\n </fieldset>\n );\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport Checkbox from '../../common/components/Checkbox';\nimport icon from '../../common/helpers/icon';\nimport ItemList from '../../common/utils/ItemList';\n\n/**\n * The `NotificationGrid` component displays a table of notification types and\n * methods, allowing the user to toggle each combination.\n *\n * ### Attrs\n *\n * - `user`\n */\nexport default class NotificationGrid extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n /**\n * Information about the available notification methods.\n *\n * @type {({ name: string, icon: string, label: import('mithril').Children })[]}\n */\n this.methods = this.notificationMethods().toArray();\n\n /**\n * A map of which notification checkboxes are loading.\n *\n * @type {Record<string, boolean>}\n */\n this.loading = {};\n\n /**\n * Information about the available notification types.\n *\n * @type {({ name: string, icon: string, label: import('mithril').Children })[]}\n */\n this.types = this.notificationTypes().toArray();\n }\n\n view() {\n const preferences = this.attrs.user.preferences();\n\n return (\n <table className=\"NotificationGrid\">\n <thead>\n <tr>\n <td />\n {this.methods.map((method) => (\n <th className=\"NotificationGrid-groupToggle\" onclick={this.toggleMethod.bind(this, method.name)}>\n {icon(method.icon)} {method.label}\n </th>\n ))}\n </tr>\n </thead>\n\n <tbody>\n {this.types.map((type) => (\n <tr>\n <td className=\"NotificationGrid-groupToggle\" onclick={this.toggleType.bind(this, type.name)}>\n {icon(type.icon)} {type.label}\n </td>\n {this.methods.map((method) => {\n const key = this.preferenceKey(type.name, method.name);\n\n return (\n <td className=\"NotificationGrid-checkbox\">\n <Checkbox\n state={!!preferences[key]}\n loading={this.loading[key]}\n disabled={!(key in preferences)}\n onchange={this.toggle.bind(this, [key])}\n >\n <span className=\"sr-only\">\n {app.translator.trans('core.forum.settings.notification_checkbox_a11y_label_template', {\n description: type.label,\n method: method.label,\n })}\n </span>\n </Checkbox>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.$('thead .NotificationGrid-groupToggle').bind('mouseenter mouseleave', function (e) {\n const i = parseInt($(this).index(), 10) + 1;\n $(this)\n .parents('table')\n .find('td:nth-child(' + i + ')')\n .toggleClass('highlighted', e.type === 'mouseenter');\n });\n\n this.$('tbody .NotificationGrid-groupToggle').bind('mouseenter mouseleave', function (e) {\n $(this)\n .parent()\n .find('td')\n .toggleClass('highlighted', e.type === 'mouseenter');\n });\n }\n\n /**\n * Toggle the state of the given preferences, based on the value of the first\n * one.\n *\n * @param {string[]} keys\n */\n toggle(keys) {\n const user = this.attrs.user;\n const preferences = user.preferences();\n const enabled = !preferences[keys[0]];\n\n keys.forEach((key) => {\n this.loading[key] = true;\n preferences[key] = enabled;\n });\n\n m.redraw();\n\n user.save({ preferences }).then(() => {\n keys.forEach((key) => (this.loading[key] = false));\n\n m.redraw();\n });\n }\n\n /**\n * Toggle all notification types for the given method.\n *\n * @param {string} method\n */\n toggleMethod(method) {\n const keys = this.types.map((type) => this.preferenceKey(type.name, method)).filter((key) => key in this.attrs.user.preferences());\n\n this.toggle(keys);\n }\n\n /**\n * Toggle all notification methods for the given type.\n *\n * @param {string} type\n */\n toggleType(type) {\n const keys = this.methods.map((method) => this.preferenceKey(type, method.name)).filter((key) => key in this.attrs.user.preferences());\n\n this.toggle(keys);\n }\n\n /**\n * Get the name of the preference key for the given notification type-method\n * combination.\n *\n * @param {string} type\n * @param {string} method\n * @return {string}\n */\n preferenceKey(type, method) {\n return 'notify_' + type + '_' + method;\n }\n\n /**\n * Build an item list for the notification methods to display in the grid.\n *\n * Each notification method is an object which has the following properties:\n *\n * - `name` The name of the notification method.\n * - `icon` The icon to display in the column header.\n * - `label` The label to display in the column header.\n *\n * @return {ItemList<{ name: string, icon: string, label: import('mithril').Children }>}\n */\n notificationMethods() {\n const items = new ItemList();\n\n items.add('alert', {\n name: 'alert',\n icon: 'fas fa-bell',\n label: app.translator.trans('core.forum.settings.notify_by_web_heading'),\n });\n\n items.add('email', {\n name: 'email',\n icon: 'far fa-envelope',\n label: app.translator.trans('core.forum.settings.notify_by_email_heading'),\n });\n\n return items;\n }\n\n /**\n * Build an item list for the notification types to display in the grid.\n *\n * Each notification type is an object which has the following properties:\n *\n * - `name` The name of the notification type.\n * - `icon` The icon to display in the notification grid row.\n * - `label` The label to display in the notification grid row.\n *\n * @return {ItemList<{ name: string, icon: string, label: import('mithril').Children}>}\n */\n notificationTypes() {\n const items = new ItemList();\n\n items.add('discussionRenamed', {\n name: 'discussionRenamed',\n icon: 'fas fa-pencil-alt',\n label: app.translator.trans('core.forum.settings.notify_discussion_renamed_label'),\n });\n\n return items;\n }\n}\n","import app from '../../forum/app';\nimport Modal, { IInternalModalAttrs } from '../../common/components/Modal';\nimport Button from '../../common/components/Button';\nimport Mithril from 'mithril';\nimport ItemList from '../../common/utils/ItemList';\n\n/**\n * The `ChangePasswordModal` component shows a modal dialog which allows the\n * user to send themself a password reset email.\n */\nexport default class ChangePasswordModal<CustomAttrs extends IInternalModalAttrs = IInternalModalAttrs> extends Modal<CustomAttrs> {\n className() {\n return 'ChangePasswordModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.forum.change_password.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">{this.fields().toArray()}</div>\n </div>\n );\n }\n\n fields() {\n const fields = new ItemList<Mithril.Children>();\n\n fields.add('help', <p className=\"helpText\">{app.translator.trans('core.forum.change_password.text')}</p>);\n\n fields.add(\n 'submit',\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.forum.change_password.send_button')}\n </Button>\n </div>\n );\n\n return fields;\n }\n\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n this.loading = true;\n\n app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/forgot',\n body: this.requestBody(),\n })\n .then(this.hide.bind(this), this.loaded.bind(this));\n }\n\n requestBody() {\n return { email: app.session.user!.email() };\n }\n}\n","import app from '../../forum/app';\nimport Modal, { IInternalModalAttrs } from '../../common/components/Modal';\nimport Button from '../../common/components/Button';\nimport Stream from '../../common/utils/Stream';\nimport type Mithril from 'mithril';\nimport RequestError from '../../common/utils/RequestError';\nimport ItemList from '../../common/utils/ItemList';\n\n/**\n * The `ChangeEmailModal` component shows a modal dialog which allows the user\n * to change their email address.\n */\nexport default class ChangeEmailModal<CustomAttrs extends IInternalModalAttrs = IInternalModalAttrs> extends Modal<CustomAttrs> {\n /**\n * The value of the email input.\n */\n email!: Stream<string>;\n\n /**\n * The value of the password input.\n */\n password!: Stream<string>;\n\n /**\n * Whether or not the email has been changed successfully.\n */\n success: boolean = false;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.email = Stream(app.session.user!.email() || '');\n this.password = Stream('');\n }\n\n className() {\n return 'ChangeEmailModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.forum.change_email.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">{this.fields().toArray()}</div>\n </div>\n );\n }\n\n fields(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n if (this.success) {\n items.add(\n 'help',\n <p className=\"helpText\">\n {app.translator.trans('core.forum.change_email.confirmation_message', {\n email: <strong>{this.email()}</strong>,\n })}\n </p>\n );\n\n items.add(\n 'dismiss',\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" onclick={this.hide.bind(this)}>\n {app.translator.trans('core.forum.change_email.dismiss_button')}\n </Button>\n </div>\n );\n } else {\n items.add(\n 'email',\n <div className=\"Form-group\">\n <input\n type=\"email\"\n name=\"email\"\n className=\"FormControl\"\n placeholder={app.session.user!.email()}\n bidi={this.email}\n disabled={this.loading}\n />\n </div>\n );\n\n items.add(\n 'password',\n <div className=\"Form-group\">\n <input\n type=\"password\"\n name=\"password\"\n className=\"FormControl\"\n autocomplete=\"current-password\"\n placeholder={app.translator.trans('core.forum.change_email.confirm_password_placeholder')}\n bidi={this.password}\n disabled={this.loading}\n />\n </div>\n );\n\n items.add(\n 'submit',\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.forum.change_email.submit_button')}\n </Button>\n </div>\n );\n }\n\n return items;\n }\n\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n // If the user hasn't actually entered a different email address, we don't\n // need to do anything. Woot!\n if (this.email() === app.session.user!.email()) {\n this.hide();\n return;\n }\n\n this.loading = true;\n this.alertAttrs = null;\n\n app.session\n .user!.save(this.requestAttributes(), {\n errorHandler: this.onerror.bind(this),\n meta: { password: this.password() },\n })\n .then(() => {\n this.success = true;\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n requestAttributes() {\n return { email: this.email() };\n }\n\n onerror(error: RequestError) {\n if (error.status === 401 && error.alert) {\n error.alert.content = app.translator.trans('core.forum.change_email.incorrect_password_message');\n }\n\n super.onerror(error);\n }\n}\n","import app from '../../forum/app';\nimport UserPage, { IUserPageAttrs } from './UserPage';\nimport ItemList from '../../common/utils/ItemList';\nimport Switch from '../../common/components/Switch';\nimport Button from '../../common/components/Button';\nimport FieldSet from '../../common/components/FieldSet';\nimport NotificationGrid from './NotificationGrid';\nimport ChangePasswordModal from './ChangePasswordModal';\nimport ChangeEmailModal from './ChangeEmailModal';\nimport listItems from '../../common/helpers/listItems';\nimport extractText from '../../common/utils/extractText';\nimport type Mithril from 'mithril';\n\n/**\n * The `SettingsPage` component displays the user's settings control panel, in\n * the context of their user profile.\n */\nexport default class SettingsPage<CustomAttrs extends IUserPageAttrs = IUserPageAttrs> extends UserPage<CustomAttrs> {\n discloseOnlineLoading?: boolean;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.show(app.session.user!);\n\n app.setTitle(extractText(app.translator.trans('core.forum.settings.title')));\n }\n\n content() {\n return (\n <div className=\"SettingsPage\">\n <ul>{listItems(this.settingsItems().toArray())}</ul>\n </div>\n );\n }\n\n /**\n * Build an item list for the user's settings controls.\n */\n settingsItems() {\n const items = new ItemList<Mithril.Children>();\n\n ['account', 'notifications', 'privacy'].forEach((section, index) => {\n const sectionItems = `${section}Items` as 'accountItems' | 'notificationsItems' | 'privacyItems';\n\n items.add(\n section,\n <FieldSet className={`Settings-${section}`} label={app.translator.trans(`core.forum.settings.${section}_heading`)}>\n {this[sectionItems]().toArray()}\n </FieldSet>,\n 100 - index * 10\n );\n });\n\n return items;\n }\n\n /**\n * Build an item list for the user's account settings.\n */\n accountItems() {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'changePassword',\n <Button className=\"Button\" onclick={() => app.modal.show(ChangePasswordModal)}>\n {app.translator.trans('core.forum.settings.change_password_button')}\n </Button>,\n 100\n );\n\n items.add(\n 'changeEmail',\n <Button className=\"Button\" onclick={() => app.modal.show(ChangeEmailModal)}>\n {app.translator.trans('core.forum.settings.change_email_button')}\n </Button>,\n 90\n );\n\n return items;\n }\n\n /**\n * Build an item list for the user's notification settings.\n */\n notificationsItems() {\n const items = new ItemList<Mithril.Children>();\n\n items.add('notificationGrid', <NotificationGrid user={this.user} />, 100);\n\n return items;\n }\n\n /**\n * Build an item list for the user's privacy settings.\n */\n privacyItems() {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'discloseOnline',\n <Switch\n state={this.user!.preferences()?.discloseOnline}\n onchange={(value: boolean) => {\n this.discloseOnlineLoading = true;\n\n this.user!.savePreferences({ discloseOnline: value }).then(() => {\n this.discloseOnlineLoading = false;\n m.redraw();\n });\n }}\n loading={this.discloseOnlineLoading}\n >\n {app.translator.trans('core.forum.settings.privacy_disclose_online_label')}\n </Switch>,\n 100\n );\n\n return items;\n }\n}\n","import app from '../../forum/app';\nimport Page, { IPageAttrs } from '../../common/components/Page';\nimport NotificationList from './NotificationList';\nimport type Mithril from 'mithril';\nimport extractText from '../../common/utils/extractText';\n\n/**\n * The `NotificationsPage` component shows the notifications list. It is only\n * used on mobile devices where the notifications dropdown is within the drawer.\n */\nexport default class NotificationsPage<CustomAttrs extends IPageAttrs = IPageAttrs> extends Page<CustomAttrs> {\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n app.history.push('notifications', extractText(app.translator.trans('core.forum.notifications.title')));\n\n app.notifications.load();\n\n this.bodyClass = 'App--notifications';\n }\n\n view() {\n return (\n <div className=\"NotificationsPage\">\n <NotificationList state={app.notifications}></NotificationList>\n </div>\n );\n }\n}\n","import type Mithril from 'mithril';\nimport type { RouteResolver } from '../Application';\nimport type { default as Component, ComponentAttrs } from '../Component';\n\n/**\n * Generates a route resolver for a given component.\n *\n * In addition to regular route resolver functionality:\n * - It provide the current route name as an attr\n * - It sets a key on the component so a rerender will be triggered on route change.\n */\nexport default class DefaultResolver<\n Attrs extends ComponentAttrs,\n Comp extends Component<Attrs & { routeName: string }>,\n RouteArgs extends Record<string, unknown> = {}\n> implements RouteResolver<Attrs, Comp, RouteArgs>\n{\n component: new () => Comp;\n routeName: string;\n\n constructor(component: new () => Comp, routeName: string) {\n this.component = component;\n this.routeName = routeName;\n }\n\n /**\n * When a route change results in a changed key, a full page\n * rerender occurs. This method can be overriden in subclasses\n * to prevent rerenders on some route changes.\n */\n makeKey(): string {\n return this.routeName + JSON.stringify(m.route.param());\n }\n\n makeAttrs(vnode: Mithril.Vnode<Attrs, Comp>): Attrs & { routeName: string } {\n return {\n ...vnode.attrs,\n routeName: this.routeName,\n };\n }\n\n onmatch(args: RouteArgs, requestedPath: string, route: string): { new (): Comp } {\n return this.component;\n }\n\n render(vnode: Mithril.Vnode<Attrs, Comp>): Mithril.Children {\n return [{ ...vnode, attrs: this.makeAttrs(vnode), key: this.makeKey() }];\n }\n}\n","import type Mithril from 'mithril';\n\nimport app from '../../forum/app';\nimport DefaultResolver from '../../common/resolvers/DefaultResolver';\nimport DiscussionPage, { IDiscussionPageAttrs } from '../components/DiscussionPage';\n\n/**\n * A custom route resolver for DiscussionPage that generates the same key to all posts\n * on the same discussion. It triggers a scroll when going from one post to another\n * in the same discussion.\n */\nexport default class DiscussionPageResolver<\n Attrs extends IDiscussionPageAttrs = IDiscussionPageAttrs,\n RouteArgs extends Record<string, unknown> = {}\n> extends DefaultResolver<Attrs, DiscussionPage<Attrs>, RouteArgs> {\n static scrollToPostNumber: number | null = null;\n\n /**\n * Remove optional parts of a discussion's slug to keep the substring\n * that bijectively maps to a discussion object. By default this just\n * extracts the numerical ID from the slug. If a custom discussion\n * slugging driver is used, this may need to be overriden.\n * @param slug\n */\n canonicalizeDiscussionSlug(slug: string | undefined) {\n if (!slug) return;\n return slug.split('-')[0];\n }\n\n /**\n * @inheritdoc\n */\n makeKey() {\n const params = { ...m.route.param() };\n if ('near' in params) {\n delete params.near;\n }\n params.id = this.canonicalizeDiscussionSlug(params.id);\n return this.routeName.replace('.near', '') + JSON.stringify(params);\n }\n\n onmatch(args: Attrs & RouteArgs, requestedPath: string, route: string) {\n if (app.current.matches(DiscussionPage) && this.canonicalizeDiscussionSlug(args.id) === this.canonicalizeDiscussionSlug(m.route.param('id'))) {\n // By default, the first post number of any discussion is 1\n DiscussionPageResolver.scrollToPostNumber = args.near || 1;\n }\n\n return super.onmatch(args, requestedPath, route);\n }\n\n render(vnode: Mithril.Vnode<Attrs, DiscussionPage<Attrs>>) {\n if (DiscussionPageResolver.scrollToPostNumber !== null) {\n const number = DiscussionPageResolver.scrollToPostNumber;\n // Scroll after a timeout to avoid clashes with the render.\n setTimeout(() => app.current.get('stream').goToNumber(number));\n DiscussionPageResolver.scrollToPostNumber = null;\n }\n\n return super.render(vnode);\n }\n}\n","import Component, { ComponentAttrs } from '../Component';\nimport type Mithril from 'mithril';\nimport app from '../app';\n\nexport interface ILabelValueAttrs extends ComponentAttrs {\n label: Mithril.Children;\n value: Mithril.Children;\n}\n\n/**\n * A generic component for displaying a label and value inline.\n * Created to avoid reinventing the wheel.\n *\n * `label: value`\n */\nexport default class LabelValue<CustomAttrs extends ILabelValueAttrs = ILabelValueAttrs> extends Component<CustomAttrs> {\n view(vnode: Mithril.Vnode<CustomAttrs, this>): Mithril.Children {\n return (\n <div className=\"LabelValue\">\n <div className=\"LabelValue-label\">\n {app.translator.trans('core.lib.data_segment.label', {\n label: this.attrs.label,\n })}\n </div>\n <div className=\"LabelValue-value\">{this.attrs.value}</div>\n </div>\n );\n }\n}\n","import app from '../app';\nimport Component, { ComponentAttrs } from '../../common/Component';\nimport icon from '../../common/helpers/icon';\nimport Button from '../../common/components/Button';\nimport humanTime from '../../common/helpers/humanTime';\nimport ItemList from '../../common/utils/ItemList';\nimport LabelValue from '../../common/components/LabelValue';\nimport extractText from '../../common/utils/extractText';\nimport classList from '../../common/utils/classList';\nimport Tooltip from '../../common/components/Tooltip';\nimport type Mithril from 'mithril';\nimport type AccessToken from '../../common/models/AccessToken';\nimport { NestedStringArray } from '@askvortsov/rich-icu-message-formatter';\n\nexport interface IAccessTokensListAttrs extends ComponentAttrs {\n tokens: AccessToken[];\n type: 'session' | 'developer_token';\n hideTokens?: boolean;\n icon?: string;\n ondelete?: (token: AccessToken) => void;\n}\n\nexport default class AccessTokensList<CustomAttrs extends IAccessTokensListAttrs = IAccessTokensListAttrs> extends Component<CustomAttrs> {\n protected loading: Record<string, boolean | undefined> = {};\n protected showingTokens: Record<string, boolean | undefined> = {};\n\n view(vnode: Mithril.Vnode<CustomAttrs, this>): Mithril.Children {\n return (\n <div className=\"AccessTokensList\">\n {this.attrs.tokens.length ? (\n this.attrs.tokens.map(this.tokenView.bind(this))\n ) : (\n <div className=\"AccessTokensList--empty\">{app.translator.trans('core.forum.security.empty_text')}</div>\n )}\n </div>\n );\n }\n\n tokenView(token: AccessToken): Mithril.Children {\n return (\n <div\n className={classList('AccessTokensList-item', {\n 'AccessTokensList-item--active': token.isCurrent(),\n })}\n key={token.id()!}\n >\n {this.tokenViewItems(token).toArray()}\n </div>\n );\n }\n\n tokenViewItems(token: AccessToken): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n items.add('icon', <div className=\"AccessTokensList-item-icon\">{icon(this.attrs.icon || 'fas fa-key')}</div>, 50);\n\n items.add('info', <div className=\"AccessTokensList-item-info\">{this.tokenInfoItems(token).toArray()}</div>, 40);\n\n items.add('actions', <div className=\"AccessTokensList-item-actions\">{this.tokenActionItems(token).toArray()}</div>, 30);\n\n return items;\n }\n\n tokenInfoItems(token: AccessToken) {\n const items = new ItemList<Mithril.Children>();\n\n if (this.attrs.type === 'session') {\n items.add(\n 'title',\n <div className=\"AccessTokensList-item-title\">\n <span className=\"AccessTokensList-item-title-main\">{token.device()}</span>\n {token.isCurrent() && [\n ' \u2014 ',\n <span className=\"AccessTokensList-item-title-sub\">{app.translator.trans('core.forum.security.current_active_session')}</span>,\n ]}\n </div>\n );\n } else {\n items.add(\n 'title',\n <div className=\"AccessTokensList-item-title\">\n <span className=\"AccessTokensList-item-title-main\">{this.generateTokenTitle(token)}</span>\n </div>\n );\n }\n\n items.add(\n 'createdAt',\n <div className=\"AccessTokensList-item-createdAt\">\n <LabelValue label={app.translator.trans('core.forum.security.created')} value={humanTime(token.createdAt())} />\n </div>\n );\n\n items.add(\n 'lastActivityAt',\n <div className=\"AccessTokensList-item-lastActivityAt\">\n <LabelValue\n label={app.translator.trans('core.forum.security.last_activity')}\n value={\n token.lastActivityAt() ? (\n <>\n {humanTime(token.lastActivityAt())}\n {token.lastIpAddress() && ` \u2014 ${token.lastIpAddress()}`}\n {this.attrs.type === 'developer_token' && token.device() && (\n <>\n {' '}\n \u2014 <span className=\"AccessTokensList-item-title-sub\">{token.device()}</span>\n </>\n )}\n </>\n ) : (\n app.translator.trans('core.forum.security.never')\n )\n }\n />\n </div>\n );\n\n return items;\n }\n\n tokenActionItems(token: AccessToken) {\n const items = new ItemList<Mithril.Children>();\n\n const deleteKey = {\n session: 'terminate_session',\n developer_token: 'revoke_access_token',\n }[this.attrs.type];\n\n if (this.attrs.type === 'developer_token') {\n const isHidden = !this.showingTokens[token.id()!];\n const displayKey = isHidden ? 'show_access_token' : 'hide_access_token';\n\n items.add(\n 'toggleDisplay',\n <Button\n className=\"Button Button--inverted\"\n icon={isHidden ? 'fas fa-eye' : 'fas fa-eye-slash'}\n onclick={() => {\n this.showingTokens[token.id()!] = isHidden;\n m.redraw();\n }}\n >\n {app.translator.trans(`core.forum.security.${displayKey}`)}\n </Button>\n );\n }\n\n let revokeButton = (\n <Button className=\"Button Button--danger\" disabled={token.isCurrent()} loading={!!this.loading[token.id()!]} onclick={() => this.revoke(token)}>\n {app.translator.trans(`core.forum.security.${deleteKey}`)}\n </Button>\n );\n\n if (token.isCurrent()) {\n revokeButton = (\n <Tooltip text={app.translator.trans('core.forum.security.cannot_terminate_current_session')}>\n <div tabindex=\"0\">{revokeButton}</div>\n </Tooltip>\n );\n }\n\n items.add('revoke', revokeButton);\n\n return items;\n }\n\n async revoke(token: AccessToken) {\n if (!confirm(extractText(app.translator.trans('core.forum.security.revoke_access_token_confirmation')))) return;\n\n this.loading[token.id()!] = true;\n\n await token.delete();\n\n this.loading[token.id()!] = false;\n this.attrs.ondelete?.(token);\n\n const key = this.attrs.type === 'session' ? 'session_terminated' : 'token_revoked';\n\n app.alerts.show({ type: 'success' }, app.translator.trans(`core.forum.security.${key}`, { count: 1 }));\n m.redraw();\n }\n\n generateTokenTitle(token: AccessToken): NestedStringArray {\n const name = token.title() || app.translator.trans('core.forum.security.token_title_placeholder');\n const value = this.tokenValueDisplay(token);\n\n return app.translator.trans('core.forum.security.token_item_title', { title: name, token: value });\n }\n\n tokenValueDisplay(token: AccessToken): Mithril.Children {\n const obfuscatedName = Array(12).fill('*').join('');\n const value = this.showingTokens[token.id()!] ? token.token() : obfuscatedName;\n\n return <code className=\"AccessTokensList-item-token\">{value}</code>;\n }\n}\n","import app from '../app';\nimport Modal, { IInternalModalAttrs } from '../../common/components/Modal';\nimport Button from '../../common/components/Button';\nimport Stream from '../../common/utils/Stream';\nimport type AccessToken from '../../common/models/AccessToken';\nimport type { SaveAttributes } from '../../common/Model';\nimport type Mithril from 'mithril';\n\nexport interface INewAccessTokenModalAttrs extends IInternalModalAttrs {\n onsuccess: (token: AccessToken) => void;\n}\n\nexport default class NewAccessTokenModal<CustomAttrs extends INewAccessTokenModalAttrs = INewAccessTokenModalAttrs> extends Modal<CustomAttrs> {\n protected titleInput = Stream('');\n\n className(): string {\n return 'Modal--small NewAccessTokenModal';\n }\n\n title(): Mithril.Children {\n return app.translator.trans('core.forum.security.new_access_token_modal.title');\n }\n\n content(): Mithril.Children {\n const titleLabel = app.translator.trans('core.forum.security.new_access_token_modal.title_placeholder');\n\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <div className=\"Form-group\">\n <input type=\"text\" className=\"FormControl\" bidi={this.titleInput} placeholder={titleLabel} aria-label={titleLabel} />\n </div>\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('core.forum.security.new_access_token_modal.submit_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n submitData(): SaveAttributes {\n return {\n title: this.titleInput(),\n };\n }\n\n onsubmit(e: SubmitEvent) {\n super.onsubmit(e);\n e.preventDefault();\n\n this.loading = true;\n\n app.store\n .createRecord<AccessToken>('access-tokens')\n .save(this.submitData())\n .then((token) => {\n this.attrs.onsuccess(token);\n app.modal.close();\n })\n .finally(this.loaded.bind(this));\n }\n}\n","import AccessToken from '../../common/models/AccessToken';\n\nexport default class UserSecurityPageState {\n protected tokens: AccessToken[] | null = null;\n public loadingTerminateSessions: boolean = false;\n public loadingGlobalLogout: boolean = false;\n\n public hasLoadedTokens(): boolean {\n return this.tokens !== null;\n }\n\n public getTokens(): AccessToken[] | null {\n return this.tokens;\n }\n\n public setTokens(tokens: AccessToken[]): void {\n this.tokens = tokens;\n }\n\n public pushToken(token: AccessToken): void {\n this.tokens?.push(token);\n }\n\n public removeToken(token: AccessToken): void {\n this.tokens = this.tokens!.filter((t) => t !== token);\n }\n\n public getSessionTokens(): AccessToken[] {\n return this.tokens?.filter((token) => token.isSessionToken()).sort((a, b) => (b.isCurrent() ? 1 : -1)) || [];\n }\n\n public getDeveloperTokens(): AccessToken[] | null {\n return this.tokens?.filter((token) => !token.isSessionToken()) || null;\n }\n\n /**\n * Look up session tokens other than the current one.\n */\n public getOtherSessionTokens(): AccessToken[] {\n return this.tokens?.filter((token) => token.isSessionToken() && !token.isCurrent()) || [];\n }\n\n public hasOtherActiveSessions(): boolean {\n return (this.getOtherSessionTokens() || []).length > 0;\n }\n\n public removeOtherSessionTokens() {\n this.tokens = this.tokens!.filter((token) => !token.isSessionToken() || token.isCurrent());\n }\n}\n","import app from '../../forum/app';\nimport UserPage, { IUserPageAttrs } from './UserPage';\nimport ItemList from '../../common/utils/ItemList';\nimport FieldSet from '../../common/components/FieldSet';\nimport listItems from '../../common/helpers/listItems';\nimport extractText from '../../common/utils/extractText';\nimport AccessTokensList from './AccessTokensList';\nimport LoadingIndicator from '../../common/components/LoadingIndicator';\nimport Button from '../../common/components/Button';\nimport NewAccessTokenModal from './NewAccessTokenModal';\nimport { camelCaseToSnakeCase } from '../../common/utils/string';\nimport type AccessToken from '../../common/models/AccessToken';\nimport type Mithril from 'mithril';\nimport Tooltip from '../../common/components/Tooltip';\nimport UserSecurityPageState from '../states/UserSecurityPageState';\n\n/**\n * The `UserSecurityPage` component displays the user's security control panel, in\n * the context of their user profile.\n */\nexport default class UserSecurityPage<CustomAttrs extends IUserPageAttrs = IUserPageAttrs> extends UserPage<CustomAttrs, UserSecurityPageState> {\n state = new UserSecurityPageState();\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n const routeUsername = m.route.param('username');\n\n if (routeUsername !== app.session.user?.slug() && !app.forum.attribute<boolean>('canModerateAccessTokens')) {\n m.route.set('/');\n }\n\n this.loadUser(routeUsername);\n\n app.setTitle(extractText(app.translator.trans('core.forum.security.title')));\n\n this.loadTokens();\n }\n\n content() {\n return (\n <div className=\"UserSecurityPage\">\n <ul>{listItems(this.settingsItems().toArray())}</ul>\n </div>\n );\n }\n\n /**\n * Build an item list for the user's settings controls.\n */\n settingsItems() {\n const items = new ItemList<Mithril.Children>();\n\n if (\n app.forum.attribute('canCreateAccessToken') ||\n app.forum.attribute('canModerateAccessTokens') ||\n (this.state.hasLoadedTokens() && this.state.getDeveloperTokens()?.length)\n ) {\n items.add(\n 'developerTokens',\n <FieldSet className=\"UserSecurityPage-developerTokens\" label={app.translator.trans(`core.forum.security.developer_tokens_heading`)}>\n {this.developerTokensItems().toArray()}\n </FieldSet>\n );\n } else if (!this.state.hasLoadedTokens()) {\n items.add('developerTokens', <LoadingIndicator />);\n }\n\n items.add(\n 'sessions',\n <FieldSet className=\"UserSecurityPage-sessions\" label={app.translator.trans(`core.forum.security.sessions_heading`)}>\n {this.sessionsItems().toArray()}\n </FieldSet>\n );\n\n if (this.user!.id() === app.session.user!.id()) {\n items.add(\n 'globalLogout',\n <FieldSet className=\"UserSecurityPage-globalLogout\" label={app.translator.trans('core.forum.security.global_logout.heading')}>\n <span className=\"helpText\">{app.translator.trans('core.forum.security.global_logout.help_text')}</span>\n <Button\n className=\"Button\"\n icon=\"fas fa-sign-out-alt\"\n onclick={this.globalLogout.bind(this)}\n loading={this.state.loadingGlobalLogout}\n disabled={this.state.loadingTerminateSessions}\n >\n {app.translator.trans('core.forum.security.global_logout.log_out_button')}\n </Button>\n </FieldSet>\n );\n }\n\n return items;\n }\n\n /**\n * Build an item list for the user's access accessToken settings.\n */\n developerTokensItems() {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'accessTokenList',\n !this.state.hasLoadedTokens() ? (\n <LoadingIndicator />\n ) : (\n <AccessTokensList\n type=\"developer_token\"\n ondelete={(token: AccessToken) => {\n this.state.removeToken(token);\n m.redraw();\n }}\n tokens={this.state.getDeveloperTokens()}\n icon=\"fas fa-key\"\n hideTokens={false}\n />\n )\n );\n\n if (this.user!.id() === app.session.user!.id()) {\n items.add(\n 'newAccessToken',\n <Button\n className=\"Button\"\n disabled={!app.forum.attribute<boolean>('canCreateAccessToken')}\n onclick={() =>\n app.modal.show(NewAccessTokenModal, {\n onsuccess: (token: AccessToken) => {\n this.state.pushToken(token);\n m.redraw();\n },\n })\n }\n >\n {app.translator.trans('core.forum.security.new_access_token_button')}\n </Button>\n );\n }\n\n return items;\n }\n\n /**\n * Build an item list for the user's access accessToken settings.\n */\n sessionsItems() {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'sessionsList',\n !this.state.hasLoadedTokens() ? (\n <LoadingIndicator />\n ) : (\n <AccessTokensList\n type=\"session\"\n ondelete={(token: AccessToken) => {\n this.state.removeToken(token);\n m.redraw();\n }}\n tokens={this.state.getSessionTokens()}\n icon=\"fas fa-laptop\"\n hideTokens={true}\n />\n )\n );\n\n if (this.user!.id() === app.session.user!.id()) {\n const isDisabled = !this.state.hasOtherActiveSessions();\n\n let terminateAllOthersButton = (\n <Button\n className=\"Button\"\n onclick={this.terminateAllOtherSessions.bind(this)}\n loading={this.state.loadingTerminateSessions}\n disabled={this.state.loadingGlobalLogout || isDisabled}\n >\n {app.translator.trans('core.forum.security.terminate_all_other_sessions')}\n </Button>\n );\n\n if (isDisabled) {\n terminateAllOthersButton = (\n <Tooltip text={app.translator.trans('core.forum.security.cannot_terminate_current_session')}>\n <span tabindex=\"0\">{terminateAllOthersButton}</span>\n </Tooltip>\n );\n }\n\n items.add('terminateAllOtherSessions', terminateAllOthersButton);\n }\n\n return items;\n }\n\n loadTokens() {\n return app.store\n .find<AccessToken[]>('access-tokens', {\n filter: { user: this.user!.id()! },\n })\n .then((tokens) => {\n this.state.setTokens(tokens);\n m.redraw();\n });\n }\n\n terminateAllOtherSessions() {\n if (!confirm(extractText(app.translator.trans('core.forum.security.terminate_all_other_sessions_confirmation')))) return;\n\n this.state.loadingTerminateSessions = true;\n\n return app\n .request({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + '/sessions',\n })\n .then(() => {\n // Count terminated sessions first.\n const count = this.state.getOtherSessionTokens().length;\n\n this.state.removeOtherSessionTokens();\n\n app.alerts.show({ type: 'success' }, app.translator.trans('core.forum.security.session_terminated', { count }));\n })\n .catch(() => {\n app.alerts.show({ type: 'error' }, app.translator.trans('core.forum.security.session_termination_failed'));\n })\n .finally(() => {\n this.state.loadingTerminateSessions = false;\n m.redraw();\n });\n }\n\n globalLogout() {\n this.state.loadingGlobalLogout = true;\n\n return app\n .request({\n method: 'POST',\n url: app.forum.attribute<string>('baseUrl') + '/global-logout',\n })\n .then(() => window.location.reload())\n .finally(() => {\n this.state.loadingGlobalLogout = false;\n m.redraw();\n });\n }\n}\n","import ForumApplication from './ForumApplication';\nimport IndexPage from './components/IndexPage';\nimport DiscussionPage from './components/DiscussionPage';\nimport PostsUserPage from './components/PostsUserPage';\nimport DiscussionsUserPage from './components/DiscussionsUserPage';\nimport SettingsPage from './components/SettingsPage';\nimport NotificationsPage from './components/NotificationsPage';\nimport DiscussionPageResolver from './resolvers/DiscussionPageResolver';\nimport Discussion from '../common/models/Discussion';\nimport type Post from '../common/models/Post';\nimport type User from '../common/models/User';\nimport UserSecurityPage from './components/UserSecurityPage';\n\n/**\n * Helper functions to generate URLs to form pages.\n */\nexport interface ForumRoutes {\n discussion: (discussion: Discussion, near?: number) => string;\n post: (post: Post) => string;\n user: (user: User) => string;\n}\n\n/**\n * The `routes` initializer defines the forum app's routes.\n */\nexport default function (app: ForumApplication) {\n app.routes = {\n index: { path: '/all', component: IndexPage },\n\n discussion: { path: '/d/:id', component: DiscussionPage, resolverClass: DiscussionPageResolver },\n 'discussion.near': { path: '/d/:id/:near', component: DiscussionPage, resolverClass: DiscussionPageResolver },\n\n user: { path: '/u/:username', component: PostsUserPage },\n 'user.posts': { path: '/u/:username', component: PostsUserPage },\n 'user.discussions': { path: '/u/:username/discussions', component: DiscussionsUserPage },\n\n settings: { path: '/settings', component: SettingsPage },\n 'user.security': { path: '/u/:username/security', component: UserSecurityPage },\n notifications: { path: '/notifications', component: NotificationsPage },\n };\n}\n\nexport function makeRouteHelpers(app: ForumApplication) {\n return {\n /**\n * Generate a URL to a discussion.\n */\n discussion: (discussion: Discussion, near?: number) => {\n return app.route(near && near !== 1 ? 'discussion.near' : 'discussion', {\n id: discussion.slug(),\n near: near && near !== 1 ? near : undefined,\n });\n },\n\n /**\n * Generate a URL to a post.\n */\n post: (post: Post) => {\n return app.route.discussion(post.discussion(), post.number());\n },\n\n /**\n * Generate a URL to a user.\n */\n user: (user: User) => {\n return app.route('user', {\n username: user.slug(),\n });\n },\n };\n}\n","import Alert from '../../common/components/Alert';\nimport Button from '../../common/components/Button';\nimport icon from '../../common/helpers/icon';\nimport Component from '../../common/Component';\n\n/**\n * Shows an alert if the user has not yet confirmed their email address.\n *\n * @param {import('../ForumApplication').default} app\n */\nexport default function alertEmailConfirmation(app) {\n const user = app.session.user;\n\n if (!user || user.isEmailConfirmed()) return;\n\n class ResendButton extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.loading = false;\n this.sent = false;\n }\n\n view() {\n return (\n <Button className=\"Button Button--link\" onclick={this.onclick.bind(this)} loading={this.loading} disabled={this.sent}>\n {this.sent\n ? [icon('fas fa-check'), ' ', app.translator.trans('core.forum.user_email_confirmation.sent_message')]\n : app.translator.trans('core.forum.user_email_confirmation.resend_button')}\n </Button>\n );\n }\n\n onclick() {\n this.loading = true;\n m.redraw();\n\n app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/users/' + user.id() + '/send-confirmation',\n })\n .then(() => {\n this.loading = false;\n this.sent = true;\n m.redraw();\n })\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n }\n\n class ContainedAlert extends Alert {\n view(vnode) {\n const vdom = super.view(vnode);\n return { ...vdom, children: [<div className=\"container\">{vdom.children}</div>] };\n }\n }\n\n m.mount($('<div className=\"App-notices\"/>').insertBefore('#content')[0], {\n view: () => (\n <ContainedAlert dismissible={false} controls={[<ResendButton />]} className=\"Alert--emailConfirmation\">\n {app.translator.trans('core.forum.user_email_confirmation.alert_message', { email: <strong>{user.email()}</strong> })}\n </ContainedAlert>\n ),\n });\n}\n","const candidateSelectors = [\n 'input',\n 'select',\n 'textarea',\n 'a[href]',\n 'button',\n '[tabindex]:not(slot)',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n];\nconst candidateSelector = /* #__PURE__ */ candidateSelectors.join(',');\n\nconst NoElement = typeof Element === 'undefined';\n\nconst matches = NoElement\n ? function () {}\n : Element.prototype.matches ||\n Element.prototype.msMatchesSelector ||\n Element.prototype.webkitMatchesSelector;\n\nconst getRootNode =\n !NoElement && Element.prototype.getRootNode\n ? (element) => element.getRootNode()\n : (element) => element.ownerDocument;\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nconst getCandidates = function (el, includeContainer, filter) {\n let candidates = Array.prototype.slice.apply(\n el.querySelectorAll(candidateSelector)\n );\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidatesScope\n * @property {Element} scope contains inner candidates\n * @property {Element[]} candidates\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidatesScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidatesScope>}\n */\nconst getCandidatesIteratively = function (\n elements,\n includeContainer,\n options\n) {\n const candidates = [];\n const elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n const element = elementsToCheck.shift();\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n const assigned = element.assignedElements();\n const content = assigned.length ? assigned : element.children;\n const nestedCandidates = getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push(...nestedCandidates);\n } else {\n candidates.push({\n scope: element,\n candidates: nestedCandidates,\n });\n }\n } else {\n // check candidate element\n const validCandidate = matches.call(element, candidateSelector);\n if (\n validCandidate &&\n options.filter(element) &&\n (includeContainer || !elements.includes(element))\n ) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n const shadowRoot =\n element.shadowRoot ||\n // check for an undisclosed shadow\n (typeof options.getShadowRoot === 'function' &&\n options.getShadowRoot(element));\n\n const validShadowRoot =\n !options.shadowRootFilter || options.shadowRootFilter(element);\n\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n const nestedCandidates = getCandidatesIteratively(\n shadowRoot === true ? element.children : shadowRoot.children,\n true,\n options\n );\n\n if (options.flatten) {\n candidates.push(...nestedCandidates);\n } else {\n candidates.push({\n scope: element,\n candidates: nestedCandidates,\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift(...element.children);\n }\n }\n }\n return candidates;\n};\n\nconst getTabindex = function (node, isScope) {\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n //\n // isScope is positive for custom element with shadow root or slot that by default\n // have tabIndex -1, but need to be sorted by document order in order for their\n // content to be inserted in the correct position\n if (\n (isScope ||\n /^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) ||\n node.isContentEditable) &&\n isNaN(parseInt(node.getAttribute('tabindex'), 10))\n ) {\n return 0;\n }\n }\n\n return node.tabIndex;\n};\n\nconst sortOrderedTabbables = function (a, b) {\n return a.tabIndex === b.tabIndex\n ? a.documentOrder - b.documentOrder\n : a.tabIndex - b.tabIndex;\n};\n\nconst isInput = function (node) {\n return node.tagName === 'INPUT';\n};\n\nconst isHiddenInput = function (node) {\n return isInput(node) && node.type === 'hidden';\n};\n\nconst isDetailsWithSummary = function (node) {\n const r =\n node.tagName === 'DETAILS' &&\n Array.prototype.slice\n .apply(node.children)\n .some((child) => child.tagName === 'SUMMARY');\n return r;\n};\n\nconst getCheckedRadio = function (nodes, form) {\n for (let i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\n\nconst isTabbableRadio = function (node) {\n if (!node.name) {\n return true;\n }\n const radioScope = node.form || getRootNode(node);\n const queryRadios = function (name) {\n return radioScope.querySelectorAll(\n 'input[type=\"radio\"][name=\"' + name + '\"]'\n );\n };\n\n let radioSet;\n if (\n typeof window !== 'undefined' &&\n typeof window.CSS !== 'undefined' &&\n typeof window.CSS.escape === 'function'\n ) {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\n 'Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s',\n err.message\n );\n return false;\n }\n }\n\n const checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\n\nconst isRadio = function (node) {\n return isInput(node) && node.type === 'radio';\n};\n\nconst isNonTabbableRadio = function (node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\nconst isZeroArea = function (node) {\n const { width, height } = node.getBoundingClientRect();\n return width === 0 && height === 0;\n};\nconst isHidden = function (node, { displayCheck, getShadowRoot }) {\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n\n const isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n const nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n const nodeRootHost = getRootNode(node).host;\n const nodeIsAttached =\n nodeRootHost?.ownerDocument.contains(nodeRootHost) ||\n node.ownerDocument.contains(node);\n\n if (!displayCheck || displayCheck === 'full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n const originalNode = node;\n while (node) {\n const parentElement = node.parentElement;\n const rootNode = getRootNode(node);\n if (\n parentElement &&\n !parentElement.shadowRoot &&\n getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (nodeIsAttached) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck` mode\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nconst isDisabledFromFieldset = function (node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n let parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (let i = 0; i < parentNode.children.length; i++) {\n const child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *')\n ? true\n : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\n\nconst isNodeMatchingSelectorFocusable = function (options, node) {\n if (\n node.disabled ||\n isHiddenInput(node) ||\n isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) ||\n isDisabledFromFieldset(node)\n ) {\n return false;\n }\n return true;\n};\n\nconst isNodeMatchingSelectorTabbable = function (options, node) {\n if (\n isNonTabbableRadio(node) ||\n getTabindex(node) < 0 ||\n !isNodeMatchingSelectorFocusable(options, node)\n ) {\n return false;\n }\n return true;\n};\n\nconst isValidShadowRootTabbable = function (shadowHostNode) {\n const tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidatesScope>} candidates\n * @returns Element[]\n */\nconst sortByOrder = function (candidates) {\n const regularTabbables = [];\n const orderedTabbables = [];\n candidates.forEach(function (item, i) {\n const isScope = !!item.scope;\n const element = isScope ? item.scope : item;\n const candidateTabindex = getTabindex(element, isScope);\n const elements = isScope ? sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope\n ? regularTabbables.push(...elements)\n : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements,\n });\n }\n });\n\n return orderedTabbables\n .sort(sortOrderedTabbables)\n .reduce((acc, sortable) => {\n sortable.isScope\n ? acc.push(...sortable.content)\n : acc.push(sortable.content);\n return acc;\n }, [])\n .concat(regularTabbables);\n};\n\nconst tabbable = function (el, options) {\n options = options || {};\n\n let candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively([el], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isValidShadowRootTabbable,\n });\n } else {\n candidates = getCandidates(\n el,\n options.includeContainer,\n isNodeMatchingSelectorTabbable.bind(null, options)\n );\n }\n return sortByOrder(candidates);\n};\n\nconst focusable = function (el, options) {\n options = options || {};\n\n let candidates;\n if (options.getShadowRoot) {\n candidates = getCandidatesIteratively([el], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot,\n });\n } else {\n candidates = getCandidates(\n el,\n options.includeContainer,\n isNodeMatchingSelectorFocusable.bind(null, options)\n );\n }\n\n return candidates;\n};\n\nconst isTabbable = function (node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\n\nconst focusableCandidateSelector = /* #__PURE__ */ candidateSelectors\n .concat('iframe')\n .join(',');\n\nconst isFocusable = function (node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { tabbable, focusable, isTabbable, isFocusable };\n","import { tabbable, focusable, isFocusable, isTabbable } from 'tabbable';\n\nconst activeFocusTraps = (function () {\n const trapQueue = [];\n return {\n activateTrap(trap) {\n if (trapQueue.length > 0) {\n const activeTrap = trapQueue[trapQueue.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n\n const trapIndex = trapQueue.indexOf(trap);\n if (trapIndex === -1) {\n trapQueue.push(trap);\n } else {\n // move this existing trap to the front of the queue\n trapQueue.splice(trapIndex, 1);\n trapQueue.push(trap);\n }\n },\n\n deactivateTrap(trap) {\n const trapIndex = trapQueue.indexOf(trap);\n if (trapIndex !== -1) {\n trapQueue.splice(trapIndex, 1);\n }\n\n if (trapQueue.length > 0) {\n trapQueue[trapQueue.length - 1].unpause();\n }\n },\n };\n})();\n\nconst isSelectableInput = function (node) {\n return (\n node.tagName &&\n node.tagName.toLowerCase() === 'input' &&\n typeof node.select === 'function'\n );\n};\n\nconst isEscapeEvent = function (e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n};\n\nconst isTabEvent = function (e) {\n return e.key === 'Tab' || e.keyCode === 9;\n};\n\nconst delay = function (fn) {\n return setTimeout(fn, 0);\n};\n\n// Array.find/findIndex() are not supported on IE; this replicates enough\n// of Array.findIndex() for our needs\nconst findIndex = function (arr, fn) {\n let idx = -1;\n\n arr.every(function (value, i) {\n if (fn(value)) {\n idx = i;\n return false; // break\n }\n\n return true; // next\n });\n\n return idx;\n};\n\n/**\n * Get an option's value when it could be a plain value, or a handler that provides\n * the value.\n * @param {*} value Option's value to check.\n * @param {...*} [params] Any parameters to pass to the handler, if `value` is a function.\n * @returns {*} The `value`, or the handler's returned value.\n */\nconst valueOrHandler = function (value, ...params) {\n return typeof value === 'function' ? value(...params) : value;\n};\n\nconst getActualTarget = function (event) {\n // NOTE: If the trap is _inside_ a shadow DOM, event.target will always be the\n // shadow host. However, event.target.composedPath() will be an array of\n // nodes \"clicked\" from inner-most (the actual element inside the shadow) to\n // outer-most (the host HTML document). If we have access to composedPath(),\n // then use its first element; otherwise, fall back to event.target (and\n // this only works for an _open_ shadow DOM; otherwise,\n // composedPath()[0] === event.target always).\n return event.target.shadowRoot && typeof event.composedPath === 'function'\n ? event.composedPath()[0]\n : event.target;\n};\n\nconst createFocusTrap = function (elements, userOptions) {\n // SSR: a live trap shouldn't be created in this type of environment so this\n // should be safe code to execute if the `document` option isn't specified\n const doc = userOptions?.document || document;\n\n const config = {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n ...userOptions,\n };\n\n const state = {\n // containers given to createFocusTrap()\n // @type {Array<HTMLElement>}\n containers: [],\n\n // list of objects identifying tabbable nodes in `containers` in the trap\n // NOTE: it's possible that a group has no tabbable nodes if nodes get removed while the trap\n // is active, but the trap should never get to a state where there isn't at least one group\n // with at least one tabbable node in it (that would lead to an error condition that would\n // result in an error being thrown)\n // @type {Array<{\n // container: HTMLElement,\n // tabbableNodes: Array<HTMLElement>, // empty if none\n // focusableNodes: Array<HTMLElement>, // empty if none\n // firstTabbableNode: HTMLElement|null,\n // lastTabbableNode: HTMLElement|null,\n // nextTabbableNode: (node: HTMLElement, forward: boolean) => HTMLElement|undefined\n // }>}\n containerGroups: [], // same order/length as `containers` list\n\n // references to objects in `containerGroups`, but only those that actually have\n // tabbable nodes in them\n // NOTE: same order as `containers` and `containerGroups`, but __not necessarily__\n // the same length\n tabbableGroups: [],\n\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n\n // timer ID for when delayInitialFocus is true and initial focus in this trap\n // has been delayed during activation\n delayInitialFocusTimer: undefined,\n };\n\n let trap; // eslint-disable-line prefer-const -- some private functions reference it, and its methods reference private functions, so we must declare here and define later\n\n /**\n * Gets a configuration option value.\n * @param {Object|undefined} configOverrideOptions If true, and option is defined in this set,\n * value will be taken from this object. Otherwise, value will be taken from base configuration.\n * @param {string} optionName Name of the option whose value is sought.\n * @param {string|undefined} [configOptionName] Name of option to use __instead of__ `optionName`\n * IIF `configOverrideOptions` is not defined. Otherwise, `optionName` is used.\n */\n const getOption = (configOverrideOptions, optionName, configOptionName) => {\n return configOverrideOptions &&\n configOverrideOptions[optionName] !== undefined\n ? configOverrideOptions[optionName]\n : config[configOptionName || optionName];\n };\n\n /**\n * Finds the index of the container that contains the element.\n * @param {HTMLElement} element\n * @returns {number} Index of the container in either `state.containers` or\n * `state.containerGroups` (the order/length of these lists are the same); -1\n * if the element isn't found.\n */\n const findContainerIndex = function (element) {\n // NOTE: search `containerGroups` because it's possible a group contains no tabbable\n // nodes, but still contains focusable nodes (e.g. if they all have `tabindex=-1`)\n // and we still need to find the element in there\n return state.containerGroups.findIndex(\n ({ container, tabbableNodes }) =>\n container.contains(element) ||\n // fall back to explicit tabbable search which will take into consideration any\n // web components if the `tabbableOptions.getShadowRoot` option was used for\n // the trap, enabling shadow DOM support in tabbable (`Node.contains()` doesn't\n // look inside web components even if open)\n tabbableNodes.find((node) => node === element)\n );\n };\n\n /**\n * Gets the node for the given option, which is expected to be an option that\n * can be either a DOM node, a string that is a selector to get a node, `false`\n * (if a node is explicitly NOT given), or a function that returns any of these\n * values.\n * @param {string} optionName\n * @returns {undefined | false | HTMLElement | SVGElement} Returns\n * `undefined` if the option is not specified; `false` if the option\n * resolved to `false` (node explicitly not given); otherwise, the resolved\n * DOM node.\n * @throws {Error} If the option is set, not `false`, and is not, or does not\n * resolve to a node.\n */\n const getNodeForOption = function (optionName, ...params) {\n let optionValue = config[optionName];\n\n if (typeof optionValue === 'function') {\n optionValue = optionValue(...params);\n }\n\n if (optionValue === true) {\n optionValue = undefined; // use default value\n }\n\n if (!optionValue) {\n if (optionValue === undefined || optionValue === false) {\n return optionValue;\n }\n // else, empty string (invalid), null (invalid), 0 (invalid)\n\n throw new Error(\n `\\`${optionName}\\` was specified but was not a node, or did not return a node`\n );\n }\n\n let node = optionValue; // could be HTMLElement, SVGElement, or non-empty string at this point\n\n if (typeof optionValue === 'string') {\n node = doc.querySelector(optionValue); // resolve to node, or null if fails\n if (!node) {\n throw new Error(\n `\\`${optionName}\\` as selector refers to no known node`\n );\n }\n }\n\n return node;\n };\n\n const getInitialFocusNode = function () {\n let node = getNodeForOption('initialFocus');\n\n // false explicitly indicates we want no initialFocus at all\n if (node === false) {\n return false;\n }\n\n if (node === undefined) {\n // option not specified: use fallback options\n if (findContainerIndex(doc.activeElement) >= 0) {\n node = doc.activeElement;\n } else {\n const firstTabbableGroup = state.tabbableGroups[0];\n const firstTabbableNode =\n firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n\n // NOTE: `fallbackFocus` option function cannot return `false` (not supported)\n node = firstTabbableNode || getNodeForOption('fallbackFocus');\n }\n }\n\n if (!node) {\n throw new Error(\n 'Your focus-trap needs to have at least one focusable element'\n );\n }\n\n return node;\n };\n\n const updateTabbableNodes = function () {\n state.containerGroups = state.containers.map((container) => {\n const tabbableNodes = tabbable(container, config.tabbableOptions);\n\n // NOTE: if we have tabbable nodes, we must have focusable nodes; focusable nodes\n // are a superset of tabbable nodes\n const focusableNodes = focusable(container, config.tabbableOptions);\n\n return {\n container,\n tabbableNodes,\n focusableNodes,\n firstTabbableNode: tabbableNodes.length > 0 ? tabbableNodes[0] : null,\n lastTabbableNode:\n tabbableNodes.length > 0\n ? tabbableNodes[tabbableNodes.length - 1]\n : null,\n\n /**\n * Finds the __tabbable__ node that follows the given node in the specified direction,\n * in this container, if any.\n * @param {HTMLElement} node\n * @param {boolean} [forward] True if going in forward tab order; false if going\n * in reverse.\n * @returns {HTMLElement|undefined} The next tabbable node, if any.\n */\n nextTabbableNode(node, forward = true) {\n // NOTE: If tabindex is positive (in order to manipulate the tab order separate\n // from the DOM order), this __will not work__ because the list of focusableNodes,\n // while it contains tabbable nodes, does not sort its nodes in any order other\n // than DOM order, because it can't: Where would you place focusable (but not\n // tabbable) nodes in that order? They have no order, because they aren't tabbale...\n // Support for positive tabindex is already broken and hard to manage (possibly\n // not supportable, TBD), so this isn't going to make things worse than they\n // already are, and at least makes things better for the majority of cases where\n // tabindex is either 0/unset or negative.\n // FYI, positive tabindex issue: https://github.com/focus-trap/focus-trap/issues/375\n const nodeIdx = focusableNodes.findIndex((n) => n === node);\n if (nodeIdx < 0) {\n return undefined;\n }\n\n if (forward) {\n return focusableNodes\n .slice(nodeIdx + 1)\n .find((n) => isTabbable(n, config.tabbableOptions));\n }\n\n return focusableNodes\n .slice(0, nodeIdx)\n .reverse()\n .find((n) => isTabbable(n, config.tabbableOptions));\n },\n };\n });\n\n state.tabbableGroups = state.containerGroups.filter(\n (group) => group.tabbableNodes.length > 0\n );\n\n // throw if no groups have tabbable nodes and we don't have a fallback focus node either\n if (\n state.tabbableGroups.length <= 0 &&\n !getNodeForOption('fallbackFocus') // returning false not supported for this option\n ) {\n throw new Error(\n 'Your focus-trap must have at least one container with at least one tabbable node in it at all times'\n );\n }\n };\n\n const tryFocus = function (node) {\n if (node === false) {\n return;\n }\n\n if (node === doc.activeElement) {\n return;\n }\n\n if (!node || !node.focus) {\n tryFocus(getInitialFocusNode());\n return;\n }\n\n node.focus({ preventScroll: !!config.preventScroll });\n state.mostRecentlyFocusedNode = node;\n\n if (isSelectableInput(node)) {\n node.select();\n }\n };\n\n const getReturnFocusNode = function (previousActiveElement) {\n const node = getNodeForOption('setReturnFocus', previousActiveElement);\n return node ? node : node === false ? false : previousActiveElement;\n };\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event.\n const checkPointerDown = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target) >= 0) {\n // allow the click since it ocurred inside the trap\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n // immediately deactivate the trap\n trap.deactivate({\n // if, on deactivation, we should return focus to the node originally-focused\n // when the trap was activated (or the configured `setReturnFocus` node),\n // then assume it's also OK to return focus to the outside node that was\n // just clicked, causing deactivation, as long as that node is focusable;\n // if it isn't focusable, then return focus to the original node focused\n // on activation (or the configured `setReturnFocus` node)\n // NOTE: by setting `returnFocus: false`, deactivate() will do nothing,\n // which will result in the outside click setting focus to the node\n // that was clicked, whether it's focusable or not; by setting\n // `returnFocus: true`, we'll attempt to re-focus the node originally-focused\n // on activation (or the configured `setReturnFocus` node)\n returnFocus:\n config.returnFocusOnDeactivate &&\n !isFocusable(target, config.tabbableOptions),\n });\n return;\n }\n\n // This is needed for mobile devices.\n // (If we'll only let `click` events through,\n // then on mobile they will be blocked anyways if `touchstart` is blocked.)\n if (valueOrHandler(config.allowOutsideClick, e)) {\n // allow the click outside the trap to take place\n return;\n }\n\n // otherwise, prevent the click\n e.preventDefault();\n };\n\n // In case focus escapes the trap for some strange reason, pull it back in.\n const checkFocusIn = function (e) {\n const target = getActualTarget(e);\n const targetContained = findContainerIndex(target) >= 0;\n\n // In Firefox when you Tab out of an iframe the Document is briefly focused.\n if (targetContained || target instanceof Document) {\n if (targetContained) {\n state.mostRecentlyFocusedNode = target;\n }\n } else {\n // escaped! pull it back in to where it just left\n e.stopImmediatePropagation();\n tryFocus(state.mostRecentlyFocusedNode || getInitialFocusNode());\n }\n };\n\n // Hijack Tab events on the first and last focusable nodes of the trap,\n // in order to prevent focus from escaping. If it escapes for even a\n // moment it can end up scrolling the page and causing confusion so we\n // kind of need to capture the action at the keydown phase.\n const checkTab = function (e) {\n const target = getActualTarget(e);\n updateTabbableNodes();\n\n let destinationNode = null;\n\n if (state.tabbableGroups.length > 0) {\n // make sure the target is actually contained in a group\n // NOTE: the target may also be the container itself if it's focusable\n // with tabIndex='-1' and was given initial focus\n const containerIndex = findContainerIndex(target);\n const containerGroup =\n containerIndex >= 0 ? state.containerGroups[containerIndex] : undefined;\n\n if (containerIndex < 0) {\n // target not found in any group: quite possible focus has escaped the trap,\n // so bring it back in to...\n if (e.shiftKey) {\n // ...the last node in the last group\n destinationNode =\n state.tabbableGroups[state.tabbableGroups.length - 1]\n .lastTabbableNode;\n } else {\n // ...the first node in the first group\n destinationNode = state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (e.shiftKey) {\n // REVERSE\n\n // is the target the first tabbable node in a group?\n let startOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ firstTabbableNode }) => target === firstTabbableNode\n );\n\n if (\n startOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target, false)))\n ) {\n // an exception case where the target is either the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle shift+tab as if focus were on the container's\n // first tabbable node, and go to the last tabbable node of the LAST group\n startOfGroupIndex = containerIndex;\n }\n\n if (startOfGroupIndex >= 0) {\n // YES: then shift+tab should go to the last tabbable node in the\n // previous group (and wrap around to the last tabbable node of\n // the LAST group if it's the first tabbable node of the FIRST group)\n const destinationGroupIndex =\n startOfGroupIndex === 0\n ? state.tabbableGroups.length - 1\n : startOfGroupIndex - 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = destinationGroup.lastTabbableNode;\n }\n } else {\n // FORWARD\n\n // is the target the last tabbable node in a group?\n let lastOfGroupIndex = findIndex(\n state.tabbableGroups,\n ({ lastTabbableNode }) => target === lastTabbableNode\n );\n\n if (\n lastOfGroupIndex < 0 &&\n (containerGroup.container === target ||\n (isFocusable(target, config.tabbableOptions) &&\n !isTabbable(target, config.tabbableOptions) &&\n !containerGroup.nextTabbableNode(target)))\n ) {\n // an exception case where the target is the container itself, or\n // a non-tabbable node that was given focus (i.e. tabindex is negative\n // and user clicked on it or node was programmatically given focus)\n // and is not followed by any other tabbable node, in which\n // case, we should handle tab as if focus were on the container's\n // last tabbable node, and go to the first tabbable node of the FIRST group\n lastOfGroupIndex = containerIndex;\n }\n\n if (lastOfGroupIndex >= 0) {\n // YES: then tab should go to the first tabbable node in the next\n // group (and wrap around to the first tabbable node of the FIRST\n // group if it's the last tabbable node of the LAST group)\n const destinationGroupIndex =\n lastOfGroupIndex === state.tabbableGroups.length - 1\n ? 0\n : lastOfGroupIndex + 1;\n\n const destinationGroup = state.tabbableGroups[destinationGroupIndex];\n destinationNode = destinationGroup.firstTabbableNode;\n }\n }\n } else {\n // NOTE: the fallbackFocus option does not support returning false to opt-out\n destinationNode = getNodeForOption('fallbackFocus');\n }\n\n if (destinationNode) {\n e.preventDefault();\n tryFocus(destinationNode);\n }\n // else, let the browser take care of [shift+]tab and move the focus\n };\n\n const checkKey = function (e) {\n if (\n isEscapeEvent(e) &&\n valueOrHandler(config.escapeDeactivates, e) !== false\n ) {\n e.preventDefault();\n trap.deactivate();\n return;\n }\n\n if (isTabEvent(e)) {\n checkTab(e);\n return;\n }\n };\n\n const checkClick = function (e) {\n const target = getActualTarget(e);\n\n if (findContainerIndex(target) >= 0) {\n return;\n }\n\n if (valueOrHandler(config.clickOutsideDeactivates, e)) {\n return;\n }\n\n if (valueOrHandler(config.allowOutsideClick, e)) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n };\n\n //\n // EVENT LISTENERS\n //\n\n const addListeners = function () {\n if (!state.active) {\n return;\n }\n\n // There can be only one listening focus trap at a time\n activeFocusTraps.activateTrap(trap);\n\n // Delay ensures that the focused element doesn't capture the event\n // that caused the focus trap activation.\n state.delayInitialFocusTimer = config.delayInitialFocus\n ? delay(function () {\n tryFocus(getInitialFocusNode());\n })\n : tryFocus(getInitialFocusNode());\n\n doc.addEventListener('focusin', checkFocusIn, true);\n doc.addEventListener('mousedown', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('touchstart', checkPointerDown, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('click', checkClick, {\n capture: true,\n passive: false,\n });\n doc.addEventListener('keydown', checkKey, {\n capture: true,\n passive: false,\n });\n\n return trap;\n };\n\n const removeListeners = function () {\n if (!state.active) {\n return;\n }\n\n doc.removeEventListener('focusin', checkFocusIn, true);\n doc.removeEventListener('mousedown', checkPointerDown, true);\n doc.removeEventListener('touchstart', checkPointerDown, true);\n doc.removeEventListener('click', checkClick, true);\n doc.removeEventListener('keydown', checkKey, true);\n\n return trap;\n };\n\n //\n // TRAP DEFINITION\n //\n\n trap = {\n get active() {\n return state.active;\n },\n\n get paused() {\n return state.paused;\n },\n\n activate(activateOptions) {\n if (state.active) {\n return this;\n }\n\n const onActivate = getOption(activateOptions, 'onActivate');\n const onPostActivate = getOption(activateOptions, 'onPostActivate');\n const checkCanFocusTrap = getOption(activateOptions, 'checkCanFocusTrap');\n\n if (!checkCanFocusTrap) {\n updateTabbableNodes();\n }\n\n state.active = true;\n state.paused = false;\n state.nodeFocusedBeforeActivation = doc.activeElement;\n\n if (onActivate) {\n onActivate();\n }\n\n const finishActivation = () => {\n if (checkCanFocusTrap) {\n updateTabbableNodes();\n }\n addListeners();\n if (onPostActivate) {\n onPostActivate();\n }\n };\n\n if (checkCanFocusTrap) {\n checkCanFocusTrap(state.containers.concat()).then(\n finishActivation,\n finishActivation\n );\n return this;\n }\n\n finishActivation();\n return this;\n },\n\n deactivate(deactivateOptions) {\n if (!state.active) {\n return this;\n }\n\n const options = {\n onDeactivate: config.onDeactivate,\n onPostDeactivate: config.onPostDeactivate,\n checkCanReturnFocus: config.checkCanReturnFocus,\n ...deactivateOptions,\n };\n\n clearTimeout(state.delayInitialFocusTimer); // noop if undefined\n state.delayInitialFocusTimer = undefined;\n\n removeListeners();\n state.active = false;\n state.paused = false;\n\n activeFocusTraps.deactivateTrap(trap);\n\n const onDeactivate = getOption(options, 'onDeactivate');\n const onPostDeactivate = getOption(options, 'onPostDeactivate');\n const checkCanReturnFocus = getOption(options, 'checkCanReturnFocus');\n const returnFocus = getOption(\n options,\n 'returnFocus',\n 'returnFocusOnDeactivate'\n );\n\n if (onDeactivate) {\n onDeactivate();\n }\n\n const finishDeactivation = () => {\n delay(() => {\n if (returnFocus) {\n tryFocus(getReturnFocusNode(state.nodeFocusedBeforeActivation));\n }\n if (onPostDeactivate) {\n onPostDeactivate();\n }\n });\n };\n\n if (returnFocus && checkCanReturnFocus) {\n checkCanReturnFocus(\n getReturnFocusNode(state.nodeFocusedBeforeActivation)\n ).then(finishDeactivation, finishDeactivation);\n return this;\n }\n\n finishDeactivation();\n return this;\n },\n\n pause() {\n if (state.paused || !state.active) {\n return this;\n }\n\n state.paused = true;\n removeListeners();\n\n return this;\n },\n\n unpause() {\n if (!state.paused || !state.active) {\n return this;\n }\n\n state.paused = false;\n updateTabbableNodes();\n addListeners();\n\n return this;\n },\n\n updateContainerElements(containerElements) {\n const elementsAsArray = [].concat(containerElements).filter(Boolean);\n\n state.containers = elementsAsArray.map((element) =>\n typeof element === 'string' ? doc.querySelector(element) : element\n );\n\n if (state.active) {\n updateTabbableNodes();\n }\n\n return this;\n },\n };\n\n // initialize container elements\n trap.updateContainerElements(elements);\n\n return trap;\n};\n\nexport { createFocusTrap };\n","import { createFocusTrap as _createFocusTrap } from 'focus-trap';\n\n/**\n * Creates a focus trap for the given element with the given options.\n * \n * This function applies some default options that are different to the library.\n * Your own options still override these custom defaults:\n * \n * ```json\n * {\n escapeDeactivates: false,\n * }\n * ```\n * \n * @param element The element to be the focus trap, or a selector that will be used to find the element.\n * \n * @see https://github.com/focus-trap/focus-trap#readme - Library documentation\n */\nfunction createFocusTrap(...args: Parameters<typeof _createFocusTrap>): ReturnType<typeof _createFocusTrap> {\n args[1] = {\n escapeDeactivates: false,\n ...args[1],\n };\n\n return _createFocusTrap(...args);\n}\n\nexport * from 'focus-trap';\nexport { createFocusTrap };\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPosition = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = computedBodyPaddingRight + scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\nvar setPositionFixed = function setPositionFixed() {\n return window.requestAnimationFrame(function () {\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === undefined) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left\n };\n\n // Update the dom inside an animation frame \n var _window = window,\n scrollY = _window.scrollY,\n scrollX = _window.scrollX,\n innerHeight = _window.innerHeight;\n\n document.body.style.position = 'fixed';\n document.body.style.top = -scrollY;\n document.body.style.left = -scrollX;\n\n setTimeout(function () {\n return window.requestAnimationFrame(function () {\n // Attempt to check if the bottom bar appeared due to the position change\n var bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollY >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = -(scrollY + bottomBarHeight);\n }\n });\n }, 300);\n }\n });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n if (previousBodyPosition !== undefined) {\n // Convert the position from \"px\" to Int\n var y = -parseInt(document.body.style.top, 10);\n var x = -parseInt(document.body.style.left, 10);\n\n // Restore styles\n document.body.style.position = previousBodyPosition.position;\n document.body.style.top = previousBodyPosition.top;\n document.body.style.left = previousBodyPosition.left;\n\n // Restore scroll\n window.scrollTo(x, y);\n\n previousBodyPosition = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n setPositionFixed();\n } else {\n setOverflowHidden(options);\n }\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n};\n\n","/* \n * Copyright 2019, Emanuel Rabina (http://www.ultraq.net.nz/)\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy 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,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {parseCases} from './utilities.js';\n\nlet pluralFormatter;\n\nlet keyCounter = 0;\n\n// All the special keywords that can be used in `plural` blocks for the various branches\nconst ONE = 'one';\nconst OTHER = 'other';\n\n/**\n * @private\n * @param {String} caseBody\n * @param {Number} value\n * @return {Object} {caseBody: string, numberValues: object}\n */\nfunction replaceNumberSign(caseBody, value) {\n\tlet i = 0;\n\tlet output = '';\n\tlet numBraces = 0;\n\tconst numberValues = {};\n\n\twhile (i < caseBody.length) {\n\t\tif (caseBody[i] === '#' && !numBraces) {\n\t\t\tlet keyParam = `__hashToken${keyCounter++}`;\n\t\t\toutput += `{${keyParam}, number}`;\n\t\t\tnumberValues[keyParam] = value;\n\t\t}\n\t\telse {\n\t\t\toutput += caseBody[i];\n\t\t}\n\n\t\tif (caseBody[i] === '{') {\n\t\t\tnumBraces++;\n\t\t}\n\t\telse if (caseBody[i] === '}') {\n\t\t\tnumBraces--;\n\t\t}\n\n\t\ti++;\n\t}\n\n\treturn {\n\t\tcaseBody: output,\n\t\tnumberValues\n\t};\n}\n\n/**\n * Handler for `plural` statements within ICU message syntax strings. Returns\n * a formatted string for the branch that closely matches the current value.\n * \n * See https://formatjs.io/docs/core-concepts/icu-syntax#plural-format for more\n * details on how the `plural` statement works.\n * \n * @param {String} value\n * @param {String} matches\n * @param {String} locale\n * @param {String} values\n * @param {Function} format\n * @return {String}\n */\nexport default function pluralTypeHandler(value, matches = '', locale, values, format) {\n\tconst { args, cases } = parseCases(matches);\n\n\tlet intValue = parseInt(value);\n\n\targs.forEach((arg) => {\n\t\tif (arg.startsWith('offset:')) {\n\t\t\tintValue -= parseInt(arg.slice('offset:'.length));\n\t\t}\n\t});\n\n\tconst keywordPossibilities = [];\n\n\tif ('PluralRules' in Intl) {\n\t\t// Effectively memoize because instantiation of `Int.*` objects is expensive.\n\t\tif (pluralFormatter === undefined || pluralFormatter.resolvedOptions().locale !== locale) {\n\t\t\tpluralFormatter = new Intl.PluralRules(locale);\n\t\t}\n\n\t\tconst pluralKeyword = pluralFormatter.select(intValue);\n\n\t\t// Other is always added last with least priority, so we don't want to add it here.\n\t\tif (pluralKeyword !== OTHER) {\n\t\t\tkeywordPossibilities.push(pluralKeyword);\n\t\t}\n\t}\n\tif (intValue === 1) {\n\t\tkeywordPossibilities.push(ONE);\n\t}\n\tkeywordPossibilities.push(`=${intValue}`, OTHER);\n\n\tfor (let i = 0; i < keywordPossibilities.length; i++) {\n\t\tconst keyword = keywordPossibilities[i];\n\t\tif (keyword in cases) {\n\t\t\tconst { caseBody, numberValues } = replaceNumberSign(cases[keyword], intValue);\n\t\t\treturn format(caseBody, {\n\t\t\t\t...values,\n\t\t\t\t...numberValues\n\t\t\t});\n\t\t}\n\t}\n\n\treturn value;\n}\n","import Component from '../Component';\n\nimport { createFocusTrap, FocusTrap } from '../utils/focusTrap';\n\nimport { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\n\nimport type ModalManagerState from '../states/ModalManagerState';\nimport type Mithril from 'mithril';\n\ninterface IModalManagerAttrs {\n state: ModalManagerState;\n}\n\n/**\n * The `ModalManager` component manages one or more modal dialogs. Stacking modals\n * is supported. Multiple dialogs can be shown at once; loading a new component\n * into the ModalManager will overwrite the previous one.\n */\nexport default class ModalManager extends Component<IModalManagerAttrs> {\n // Current focus trap\n protected focusTrap: FocusTrap | undefined;\n\n // Keep track of the last set focus trap\n protected lastSetFocusTrap: number | undefined;\n\n // Keep track if there's an modal closing\n protected modalClosing: boolean = false;\n\n protected keyUpListener: null | ((e: KeyboardEvent) => void) = null;\n\n view(vnode: Mithril.VnodeDOM<IModalManagerAttrs, this>): Mithril.Children {\n return (\n <>\n {this.attrs.state.modalList.map((modal, i) => {\n const Tag = modal?.componentClass;\n\n return (\n <div\n key={modal.key}\n className=\"ModalManager modal\"\n data-modal-key={modal.key}\n data-modal-number={i}\n role=\"dialog\"\n aria-modal=\"true\"\n style={{ '--modal-number': i }}\n aria-hidden={this.attrs.state.modal !== modal && 'true'}\n >\n {!!Tag && [\n <Tag\n key={modal.key}\n {...modal.attrs}\n animateShow={this.animateShow.bind(this)}\n animateHide={this.animateHide.bind(this)}\n state={this.attrs.state}\n />,\n /* This backdrop is invisible and used for outside clicks to close the modal. */\n <div key={modal.key} className=\"ModalManager-invisibleBackdrop\" onclick={this.handlePossibleBackdropClick.bind(this)} />,\n ]}\n </div>\n );\n })}\n\n {this.attrs.state.backdropShown && (\n <div\n className=\"Modal-backdrop backdrop\"\n ontransitionend={this.onBackdropTransitionEnd.bind(this)}\n data-showing={!!this.attrs.state.modalList.length}\n style={{ '--modal-count': this.attrs.state.modalList.length }}\n />\n )}\n </>\n );\n }\n\n oncreate(vnode: Mithril.VnodeDOM<IModalManagerAttrs, this>): void {\n super.oncreate(vnode);\n\n this.keyUpListener = this.handleEscPress.bind(this);\n document.body.addEventListener('keyup', this.keyUpListener);\n }\n\n onbeforeremove(vnode: Mithril.VnodeDOM<IModalManagerAttrs, this>): void {\n super.onbeforeremove(vnode);\n\n this.keyUpListener && document.body.removeEventListener('keyup', this.keyUpListener);\n this.keyUpListener = null;\n }\n\n onupdate(vnode: Mithril.VnodeDOM<IModalManagerAttrs, this>): void {\n super.onupdate(vnode);\n\n requestAnimationFrame(() => {\n try {\n // Main content should gain or lose `aria-hidden` when modals are shown/removed\n // See: http://web-accessibility.carnegiemuseums.org/code/dialogs/\n\n if (!this.attrs.state.isModalOpen()) {\n document.getElementById('app')?.setAttribute('aria-hidden', 'false');\n this.focusTrap!.deactivate?.();\n clearAllBodyScrollLocks();\n\n return;\n }\n\n document.getElementById('app')?.setAttribute('aria-hidden', 'true');\n\n // Get current dialog key\n const dialogKey = this.attrs.state.modal!.key;\n\n // Deactivate focus trap if there's a new dialog/closed\n if (this.focusTrap && this.lastSetFocusTrap !== dialogKey) {\n this.focusTrap!.deactivate?.();\n\n clearAllBodyScrollLocks();\n }\n\n // Activate focus trap if there's a new dialog which is not trapped yet\n if (this.activeDialogElement && this.lastSetFocusTrap !== dialogKey) {\n this.focusTrap = createFocusTrap(this.activeDialogElement as HTMLElement, { allowOutsideClick: true });\n this.focusTrap!.activate?.();\n\n disableBodyScroll(this.activeDialogManagerElement!, { reserveScrollBarGap: true });\n }\n\n // Update key of current opened modal\n this.lastSetFocusTrap = dialogKey;\n } catch {\n // We can expect errors to occur here due to the nature of mithril rendering\n }\n });\n }\n\n /**\n * Get current active dialog\n */\n private get activeDialogElement(): HTMLElement {\n return document.body.querySelector(`.ModalManager[data-modal-key=\"${this.attrs.state.modal?.key}\"] .Modal`) as HTMLElement;\n }\n\n /**\n * Get current active dialog\n */\n private get activeDialogManagerElement(): HTMLElement {\n return document.body.querySelector(`.ModalManager[data-modal-key=\"${this.attrs.state.modal?.key}\"]`) as HTMLElement;\n }\n\n animateShow(readyCallback: () => void = () => {}): void {\n if (!this.attrs.state.modal) return;\n\n this.activeDialogElement.addEventListener(\n 'transitionend',\n () => {\n readyCallback();\n },\n { once: true }\n );\n\n requestAnimationFrame(() => {\n this.activeDialogElement.classList.add('in');\n });\n }\n\n animateHide(closedCallback: () => void = () => {}): void {\n if (this.modalClosing) return;\n this.modalClosing = true;\n\n const afterModalClosedCallback = () => {\n this.modalClosing = false;\n\n // Close the dialog\n this.attrs.state.close();\n\n closedCallback();\n };\n\n this.activeDialogElement.addEventListener('transitionend', afterModalClosedCallback, { once: true });\n\n this.activeDialogElement.classList.remove('in');\n this.activeDialogElement.classList.add('out');\n }\n\n protected handleEscPress(e: KeyboardEvent): void {\n if (!this.attrs.state.modal) return;\n\n const dismissibleState = this.attrs.state.modal.componentClass.dismissibleOptions;\n\n // Close the dialog if the escape key was pressed\n // Check if closing via escape key is enabled\n if (e.key === 'Escape' && dismissibleState.viaEscKey) {\n e.preventDefault();\n\n this.animateHide();\n }\n }\n\n protected handlePossibleBackdropClick(e: MouseEvent): void {\n if (!this.attrs.state.modal || !this.attrs.state.modal.componentClass.dismissibleOptions.viaBackdropClick) return;\n\n this.animateHide();\n }\n\n protected onBackdropTransitionEnd(e: TransitionEvent) {\n if (e.propertyName === 'opacity') {\n const backdrop = e.currentTarget as HTMLDivElement;\n\n if (backdrop.getAttribute('data-showing') === null) {\n // Backdrop is fading out\n this.attrs.state.backdropShown = false;\n m.redraw();\n }\n }\n }\n}\n","import Component, { ComponentAttrs } from '../Component';\nimport AlertManagerState from '../states/AlertManagerState';\nimport type Mithril from 'mithril';\n\nexport interface IAlertManagerAttrs extends ComponentAttrs {\n state: AlertManagerState;\n}\n\n/**\n * The `AlertManager` component provides an area in which `Alert` components can\n * be shown and dismissed.\n */\nexport default class AlertManager<CustomAttrs extends IAlertManagerAttrs = IAlertManagerAttrs> extends Component<CustomAttrs, AlertManagerState> {\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.state = this.attrs.state;\n }\n\n view() {\n const activeAlerts = this.state.getActiveAlerts();\n\n return (\n <div className=\"AlertManager\">\n {Object.keys(activeAlerts)\n .map(Number)\n .map((key) => {\n const alert = activeAlerts[key];\n const urgent = alert.attrs.type === 'error';\n\n return (\n <div className=\"AlertManager-alert\" role=\"alert\" aria-live={urgent ? 'assertive' : 'polite'}>\n <alert.componentClass {...alert.attrs} ondismiss={this.state.dismiss.bind(this.state, key)}>\n {alert.children}\n </alert.componentClass>\n </div>\n );\n })}\n </div>\n );\n }\n}\n","import type RequestError from '../utils/RequestError';\nimport Modal, { IInternalModalAttrs } from './Modal';\n\nexport interface IRequestErrorModalAttrs extends IInternalModalAttrs {\n error: RequestError;\n formattedError: string[];\n}\n\nexport default class RequestErrorModal<CustomAttrs extends IRequestErrorModalAttrs = IRequestErrorModalAttrs> extends Modal<CustomAttrs> {\n className() {\n return 'RequestErrorModal Modal--large';\n }\n\n title() {\n return !!this.attrs.error.xhr && `${this.attrs.error.xhr.status} ${this.attrs.error.xhr.statusText}`;\n }\n\n content() {\n const { error, formattedError } = this.attrs;\n\n let responseText;\n\n // If the error is already formatted, just add line endings;\n // else try to parse it as JSON and stringify it with indentation\n if (formattedError.length) {\n responseText = formattedError.join('\\n\\n');\n } else if (error.response) {\n responseText = JSON.stringify(error.response, null, 2);\n } else {\n responseText = error.responseText;\n }\n\n return (\n <div className=\"Modal-body\">\n <pre>\n {this.attrs.error.options.method} {this.attrs.error.options.url}\n <br />\n <br />\n {responseText}\n </pre>\n </div>\n );\n }\n}\n","/* \n * Copyright 2017, Emanuel Rabina (http://www.ultraq.net.nz/)\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy 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,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Flattens an array of arrays of infinite depth into a single-dimension array.\n * \n * > This is now natively in JavaScript as the `flat` method on an Array\n * > instance. [Check MDN for which browsers have access to this feature](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat).\n * > If you can't use `flat`, then this method will do the job \ud83d\ude42\n * \n * @param {Array} array\n * @return {Array} Flattened array.\n */\nexport function flatten(array) {\n\n\treturn array.reduce((accumulator, value) => {\n\t\treturn accumulator.concat(Array.isArray(value) ? flatten(value) : value);\n\t}, []);\n}\n\n/**\n * Creates an array of numbers from the starting value (inclusive) to the end\n * (exclusive), with an optional step (the gap between values).\n * \n * @param {Number} start\n * The value to start at, the first item in the returned array.\n * @param {Number} end\n * The value to end with, the last item in the returned array.\n * @param {Number} [step=1]\n * The increment/gap between values, defaults to 1.\n * @return {Array} An array encompassing the given range.\n */\nexport function range(start, end, step = 1) {\n\n\treturn Array.apply(0, Array(Math.ceil((end - start) / step))).map((empty, index) => index * step + start);\n}\n\n/**\n * Remove and return the first item from `array` that matches the predicate\n * function.\n * \n * @param {Array} array\n * @param {Function} predicate\n * Invoked with the array item.\n * @return {Object} The matching item, or `null` if no match was found.\n */\nexport function remove(array, predicate) {\n\n\treturn array.find((item, index) => {\n\t\tif (predicate(item)) {\n\t\t\tarray.splice(index, 1);\n\t\t\treturn item;\n\t\t}\n\t});\n}\n","/**\n * A higher-order function to apply [memoization](https://en.wikipedia.org/wiki/Memoization).\n * \n * If memoizing a recursive function, then memoize and define the function at\n * the same time so you can make a call to the memoized function, eg:\n * \n * ```javascript\n * const myFunction = memoize(() => myFunction());\n * ```\n * \n * @param {Function} func\n * @return {Function} \n */\nexport function memoize(func) {\n\tconst cache = {};\n\treturn function(...args) {\n\t\tlet key = args.length ? args\n\t\t\t.map(arg =>\n\t\t\t\targ === null ? 'null' :\n\t\t\t\targ === undefined ? 'undefined' :\n\t\t\t\ttypeof arg === 'function' ? arg.toString() :\n\t\t\t\targ instanceof Date ? arg.toISOString() :\n\t\t\t\tJSON.stringify(arg)\n\t\t\t)\n\t\t\t.join('|') :\n\t\t\t'_(no-args)_';\n\t\tif (Object.prototype.hasOwnProperty.call(cache, key)) {\n\t\t\treturn cache[key];\n\t\t}\n\t\tlet result = func(...args);\n\t\tcache[key] = result;\n\t\treturn result;\n\t};\n}\n","/* \n * Copyright 2019, Emanuel Rabina (http://www.ultraq.net.nz/)\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy 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,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Most branch-based type handlers are based around \"cases\".\n * For example, `select` and `plural` compare compare a value\n * to \"case keys\" to choose a subtranslation.\n * \n * This util splits \"matches\" portions provided to the aforementioned\n * handlers into case strings, and extracts any prepended arguments\n * (for example, `plural` supports an `offset:n` argument used for\n * populating the magic `#` variable).\n * \n * @param {String} string\n * @return {Object} The `cases` key points to a map of all cases.\n * The `arguments` key points to a list of prepended arguments.\n */\nexport function parseCases(string) {\n\tconst isWhitespace = ch => /\\s/.test(ch);\n\n\tconst args = [];\n\tconst cases = {};\n\n\tlet currTermStart = 0;\n\tlet latestTerm = null;\n\tlet inTerm = false;\n\n\tlet i = 0;\n\twhile (i < string.length) {\n\t\t// Term ended\n\t\tif (inTerm && (isWhitespace(string[i]) || string[i] === '{')) {\n\t\t\tinTerm = false;\n\t\t\tlatestTerm = string.slice(currTermStart, i);\n\n\t\t\t// We want to process the opening char again so the case will be properly registered.\n\t\t\tif (string[i] === '{') {\n\t\t\t\ti--;\n\t\t\t}\n\t\t}\n\n\t\t// New term\n\t\telse if (!inTerm && !isWhitespace(string[i])) {\n\t\t\tconst caseBody = string[i] === '{';\n\n\t\t\t// If there's a previous term, we can either handle a whole\n\t\t\t// case, or add that as an argument.\n\t\t\tif (latestTerm && caseBody) {\n\t\t\t\tconst branchEndIndex = findClosingBracket(string, i);\n\n\t\t\t\tif (branchEndIndex === -1) {\n\t\t\t\t\tthrow new Error(`Unbalanced curly braces in string: \"${string}\"`);\n\t\t\t\t}\n\n\t\t\t\tcases[latestTerm] = string.slice(i + 1, branchEndIndex); // Don't include the braces\n\n\t\t\t\ti = branchEndIndex; // Will be moved up where needed at end of loop.\n\t\t\t\tlatestTerm = null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (latestTerm) {\n\t\t\t\t\targs.push(latestTerm);\n\t\t\t\t\tlatestTerm = null;\n\t\t\t\t}\n\n\t\t\t\tinTerm = true;\n\t\t\t\tcurrTermStart = i;\n\t\t\t}\n\t\t}\n\t\ti++;\n\t}\n\n\tif (inTerm) {\n\t\tlatestTerm = string.slice(currTermStart);\n\t}\n\n\tif (latestTerm) {\n\t\targs.push(latestTerm);\n\t}\n\n\treturn {\n\t\targs,\n\t\tcases\n\t};\n}\n\n/**\n * Finds the index of the matching closing curly bracket, including through\n * strings that could have nested brackets.\n * \n * @param {String} string\n * @param {Number} fromIndex\n * @return {Number} The index of the matching closing bracket, or -1 if no\n * closing bracket could be found.\n */\nexport function findClosingBracket(string, fromIndex) {\n\tlet depth = 0;\n\tfor (let i = fromIndex + 1; i < string.length; i++) {\n\t\tlet char = string.charAt(i);\n\t\tif (char === '}') {\n\t\t\tif (depth === 0) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t\tdepth--;\n\t\t}\n\t\telse if (char === '{') {\n\t\t\tdepth++;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * Split a `{key, type, format}` block into those 3 parts, taking into account\n * nested message syntax that can exist in the `format` part.\n * \n * @param {String} block\n * @return {Array}\n * An array with `key`, `type`, and `format` items in that order, if present\n * in the formatted argument block.\n */\nexport function splitFormattedArgument(block) {\n\treturn split(block.slice(1, -1), ',', 3);\n}\n\n/**\n * Like `String.prototype.split()` but where the limit parameter causes the\n * remainder of the string to be grouped together in a final entry.\n * \n * @private\n * @param {String} string\n * @param {String} separator\n * @param {Number} limit\n * @param {Array} [accumulator=[]]\n * @return {Array}\n */\nfunction split(string, separator, limit, accumulator = []) {\n\tif (!string) {\n\t\treturn accumulator;\n\t}\n\tif (limit === 1) {\n\t\taccumulator.push(string);\n\t\treturn accumulator;\n\t}\n\tlet indexOfDelimiter = string.indexOf(separator);\n\tif (indexOfDelimiter === -1) {\n\t\taccumulator.push(string);\n\t\treturn accumulator;\n\t}\n\tlet head = string.substring(0, indexOfDelimiter).trim();\n\tlet tail = string.substring(indexOfDelimiter + separator.length + 1).trim();\n\taccumulator.push(head);\n\treturn split(tail, separator, limit - 1, accumulator);\n}\n","/* \n * Copyright 2019, Emanuel Rabina (http://www.ultraq.net.nz/)\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy 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,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {parseCases} from './utilities.js';\n\nconst OTHER = 'other';\n\n/**\n * Handler for `select` statements within ICU message syntax strings. Returns\n * a formatted string for the branch that closely matches the current value.\n * \n * See https://formatjs.io/docs/core-concepts/icu-syntax#select-format for more\n * details on how the `select` statement works.\n * \n * @param {String} value\n * @param {String} matches\n * @param {String} locale\n * @param {String} values\n * @param {Function} format\n * @return {String}\n */\nexport default function selectTypeHandler(value, matches = '', locale, values, format) {\n\tconst { cases } = parseCases(matches);\n\n\tif (value in cases) {\n\t\treturn format(cases[value], values);\n\t}\n\telse if (OTHER in cases) {\n\t\treturn format(cases[OTHER], values);\n\t}\n\n\treturn value;\n}\n","import { unEscapeHtml } from './utilities';\n\nexport default function defaultRichHandler(tag, values, contents) {\n\treturn `<${tag}>${unEscapeHtml(contents)}</${tag}>`;\n}\n","import { MessageFormatter } from '@ultraq/icu-message-formatter';\nimport { flatten } from '@ultraq/array-utils';\n\nimport defaultRichHandler from './defaultRichHandler';\nimport { replaceRichTags, sanitizeValues } from './utilities';\n\nexport default class RichMessageFormatter extends MessageFormatter {\n\tconstructor(locale, typeHandlers = {}, richHandler = null) {\n\t\tsuper(locale, typeHandlers);\n\t\tthis.richHandler = richHandler ? richHandler : defaultRichHandler;\n\t}\n\n\trich(message, values = {}) {\n\t\tconst cleanedValues = sanitizeValues(values);\n\n\t\tconst formatted = flatten(this.process(message, cleanedValues));\n\n\t\t// TODO\n\t\t// Should be a symbol but isn't because of conversion issues.\n\t\t// We use a random string instead. \n\t\tlet sym = Math.random().toString(36) + Math.random().toString(36) + Math.random().toString(36);\n\t\tconst fakeValues = Object.fromEntries(Object.entries(values).map(([key, _value]) => [key, sym]));\n\t\tconst formattedFake = flatten(this.process(message, fakeValues));\n\t\tconst replaceFake = replaceRichTags(formattedFake, fakeValues, () => sym);\n\t\tconst originalTemplateSegmentIndices = replaceFake.map((v, i) => v === sym ? null: i).filter(i => i !== null);\n\n\t\treturn replaceRichTags(formatted, cleanedValues, this.richHandler, originalTemplateSegmentIndices);\n\t}\n}\n","/* \n * Copyright 2019, Emanuel Rabina (http://www.ultraq.net.nz/)\n * \n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy 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,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {findClosingBracket, splitFormattedArgument} from './utilities.js';\n\nimport {flatten} from '@ultraq/array-utils';\nimport {memoize} from '@ultraq/function-utils';\n\n/**\n * The main class for formatting messages.\n * \n * @author Emanuel Rabina\n */\nexport default class MessageFormatter {\n\n\t/**\n\t * Creates a new formatter that can work using any of the custom type handlers\n\t * you register.\n\t * \n\t * @param {String} locale\n\t * @param {Object} [typeHandlers={}]\n\t * Optional object where the keys are the names of the types to register,\n\t * their values being the functions that will return a nicely formatted\n\t * string for the data and locale they are given.\n\t */\n\tconstructor(locale, typeHandlers = {}) {\n\n\t\tthis.locale = locale;\n\t\tthis.typeHandlers = typeHandlers;\n\t}\n\n\t/**\n\t * Formats an ICU message syntax string using `values` for placeholder data\n\t * and any currently-registered type handlers.\n\t * \n\t * @param {String} message\n\t * @param {Object} [values={}]\n\t * @return {String}\n\t */\n\tformat = memoize((message, values = {}) => {\n\n\t\treturn flatten(this.process(message, values)).join('');\n\t})\n\n\t/**\n\t * Process an ICU message syntax string using `values` for placeholder data\n\t * and any currently-registered type handlers. The result of this method is\n\t * an array of the component parts after they have been processed in turn by\n\t * their own type handlers. This raw output is useful for other renderers,\n\t * eg: React where components can be used instead of being forced to return\n\t * raw strings.\n\t * \n\t * This method is used by {@link MessageFormatter#format} where it acts as a\n\t * string renderer.\n\t * \n\t * @param {String} message\n\t * @param {Object} [values={}]\n\t * @return {Array}\n\t */\n\tprocess(message, values = {}) {\n\n\t\tif (!message) {\n\t\t\treturn [];\n\t\t}\n\n\t\tlet blockStartIndex = message.indexOf('{');\n\t\tif (blockStartIndex !== -1) {\n\t\t\tlet blockEndIndex = findClosingBracket(message, blockStartIndex);\n\t\t\tif (blockEndIndex !== -1) {\n\t\t\t\tlet block = message.substring(blockStartIndex, blockEndIndex + 1);\n\t\t\t\tif (block) {\n\t\t\t\t\tlet result = [];\n\t\t\t\t\tlet head = message.substring(0, blockStartIndex);\n\t\t\t\t\tif (head) {\n\t\t\t\t\t\tresult.push(head);\n\t\t\t\t\t}\n\t\t\t\t\tlet [key, type, format] = splitFormattedArgument(block);\n\t\t\t\t\tlet body = values[key];\n\t\t\t\t\tif (body === null || body === undefined) {\n\t\t\t\t\t\tbody = '';\n\t\t\t\t\t}\n\t\t\t\t\tlet typeHandler = type && this.typeHandlers[type];\n\t\t\t\t\tresult.push(typeHandler ?\n\t\t\t\t\t\ttypeHandler(body, format, this.locale, values, this.process.bind(this)) :\n\t\t\t\t\t\tbody);\n\t\t\t\t\tlet tail = message.substring(blockEndIndex + 1);\n\t\t\t\t\tif (tail) {\n\t\t\t\t\t\tresult.push(this.process(tail, values));\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(`Unbalanced curly braces in string: \"${message}\"`);\n\t\t\t}\n\t\t}\n\t\treturn [message];\n\t}\n}\n","import { unEscapeHtml } from './utilities';\n\nexport default function mithrilRichHandler(tag, values, contents) {\n\tconst vnode = values[tag] || m(tag);\n\tlet children = unEscapeHtml(m.fragment(contents).children);\n\treturn { ...vnode, children };\n}\n","import { RichMessageFormatter, mithrilRichHandler } from '@askvortsov/rich-icu-message-formatter';\nimport { pluralTypeHandler, selectTypeHandler } from '@ultraq/icu-message-formatter';\nimport username from './helpers/username';\nimport User from './models/User';\nimport extract from './utils/extract';\n\ntype Translations = Record<string, string>;\ntype TranslatorParameters = Record<string, unknown>;\n\nexport default class Translator {\n /**\n * A map of translation keys to their translated values.\n */\n translations: Translations = {};\n\n /**\n * The underlying ICU MessageFormatter util.\n */\n protected formatter = new RichMessageFormatter(null, this.formatterTypeHandlers(), mithrilRichHandler);\n\n /**\n * Sets the formatter's locale to the provided value.\n */\n setLocale(locale: string) {\n this.formatter.locale = locale;\n }\n\n /**\n * Returns the formatter's current locale.\n */\n getLocale() {\n return this.formatter.locale;\n }\n\n addTranslations(translations: Translations) {\n Object.assign(this.translations, translations);\n }\n\n /**\n * An extensible entrypoint for extenders to register type handlers for translations.\n */\n protected formatterTypeHandlers() {\n return {\n plural: pluralTypeHandler,\n select: selectTypeHandler,\n };\n }\n\n /**\n * A temporary system to preprocess parameters.\n * Should not be used by extensions.\n * TODO: An extender will be added in v1.x.\n *\n * @internal\n */\n protected preprocessParameters(parameters: TranslatorParameters) {\n // If we've been given a user model as one of the input parameters, then\n // we'll extract the username and use that for the translation. In the\n // future there should be a hook here to inspect the user and change the\n // translation key. This will allow a gender property to determine which\n // translation key is used.\n\n if ('user' in parameters) {\n const user = extract(parameters, 'user') as User;\n\n if (!parameters.username) parameters.username = username(user);\n }\n\n return parameters;\n }\n\n trans(id: string, parameters: TranslatorParameters = {}) {\n const translation = this.translations[id];\n\n if (translation) {\n parameters = this.preprocessParameters(parameters);\n return this.formatter.rich(translation, parameters);\n }\n\n return id;\n }\n}\n","import app from '../common/app';\nimport { FlarumRequestOptions } from './Application';\nimport { fireDeprecationWarning } from './helpers/fireDebugWarning';\nimport Model, { ModelData, SavedModelData } from './Model';\n\nexport interface MetaInformation {\n [key: string]: any;\n}\n\nexport interface ApiQueryParamsSingle {\n fields?: string[];\n include?: string;\n bySlug?: boolean;\n meta?: MetaInformation;\n}\n\nexport interface ApiQueryParamsPlural {\n fields?: string[];\n include?: string;\n filter?:\n | {\n q: string;\n }\n | Record<string, string>;\n page?: {\n near?: number;\n offset?: number;\n number?: number;\n limit?: number;\n size?: number;\n };\n sort?: string;\n meta?: MetaInformation;\n}\n\nexport type ApiQueryParams = ApiQueryParamsPlural | ApiQueryParamsSingle;\n\nexport interface ApiPayloadSingle {\n data: SavedModelData;\n included?: SavedModelData[];\n meta?: MetaInformation;\n}\n\nexport interface ApiPayloadPlural {\n data: SavedModelData[];\n included?: SavedModelData[];\n links?: {\n first: string;\n next?: string;\n prev?: string;\n };\n meta?: MetaInformation;\n}\n\nexport type ApiPayload = ApiPayloadSingle | ApiPayloadPlural;\n\nexport type ApiResponseSingle<M extends Model> = M & { payload: ApiPayloadSingle };\nexport type ApiResponsePlural<M extends Model> = M[] & { payload: ApiPayloadPlural };\nexport type ApiResponse<M extends Model> = ApiResponseSingle<M> | ApiResponsePlural<M>;\n\ninterface ApiQueryRequestOptions<ResponseType> extends Omit<FlarumRequestOptions<ResponseType>, 'url'> {}\n\ninterface StoreData {\n [type: string]: Partial<Record<string, Model>>;\n}\n\nexport function payloadIsPlural(payload: ApiPayload): payload is ApiPayloadPlural {\n return Array.isArray((payload as ApiPayloadPlural).data);\n}\n\n/**\n * The `Store` class defines a local data store, and provides methods to\n * retrieve data from the API.\n */\nexport default class Store {\n /**\n * The local data store. A tree of resource types to IDs, such that\n * accessing data[type][id] will return the model for that type/ID.\n */\n protected data: StoreData = {};\n\n /**\n * The model registry. A map of resource types to the model class that\n * should be used to represent resources of that type.\n */\n models: Record<string, { new (): Model }>;\n\n constructor(models: Record<string, { new (): Model }>) {\n this.models = models;\n }\n\n /**\n * Push resources contained within an API payload into the store.\n *\n * @return The model(s) representing the resource(s) contained\n * within the 'data' key of the payload.\n */\n pushPayload<M extends Model>(payload: ApiPayloadSingle): ApiResponseSingle<M>;\n pushPayload<Ms extends Model[]>(payload: ApiPayloadPlural): ApiResponsePlural<Ms[number]>;\n pushPayload<M extends Model | Model[]>(payload: ApiPayload): ApiResponse<FlatArray<M, 1>> {\n if (payload.included) payload.included.map(this.pushObject.bind(this));\n\n const models = payload.data instanceof Array ? payload.data.map((o) => this.pushObject(o, false)) : this.pushObject(payload.data, false);\n const result = models as ApiResponse<FlatArray<M, 1>>;\n\n // Attach the original payload to the model that we give back. This is\n // useful to consumers as it allows them to access meta information\n // associated with their request.\n result.payload = payload;\n\n return result;\n }\n\n /**\n * Create a model to represent a resource object (or update an existing one),\n * and push it into the store.\n *\n * @param data The resource object\n * @return The model, or null if no model class has been\n * registered for this resource type.\n */\n pushObject<M extends Model>(data: SavedModelData): M | null;\n pushObject<M extends Model>(data: SavedModelData, allowUnregistered: false): M;\n pushObject<M extends Model>(data: SavedModelData, allowUnregistered = true): M | null {\n if (!this.models[data.type]) {\n if (!allowUnregistered) {\n setTimeout(() =>\n fireDeprecationWarning(`Pushing object of type \\`${data.type}\\` not allowed, as type not yet registered in the store.`, '3206')\n );\n }\n\n return null;\n }\n\n const type = (this.data[data.type] = this.data[data.type] || {});\n\n // Necessary for TS to narrow correctly.\n const curr = type[data.id] as M;\n const instance = curr ? curr.pushData(data) : this.createRecord<M>(data.type, data);\n\n type[data.id] = instance;\n instance.exists = true;\n\n return instance;\n }\n\n /**\n * Make a request to the API to find record(s) of a specific type.\n */\n async find<M extends Model>(type: string, params?: ApiQueryParamsSingle): Promise<ApiResponseSingle<M>>;\n async find<Ms extends Model[]>(type: string, params?: ApiQueryParamsPlural): Promise<ApiResponsePlural<Ms[number]>>;\n async find<M extends Model>(\n type: string,\n id: string,\n params?: ApiQueryParamsSingle,\n options?: ApiQueryRequestOptions<ApiPayloadSingle>\n ): Promise<ApiResponseSingle<M>>;\n async find<Ms extends Model[]>(\n type: string,\n ids: string[],\n params?: ApiQueryParamsPlural,\n options?: ApiQueryRequestOptions<ApiPayloadPlural>\n ): Promise<ApiResponsePlural<Ms[number]>>;\n async find<M extends Model | Model[]>(\n type: string,\n idOrParams: undefined | string | string[] | ApiQueryParams,\n query: ApiQueryParams = {},\n options: ApiQueryRequestOptions<M extends Array<infer _T> ? ApiPayloadPlural : ApiPayloadSingle> = {}\n ): Promise<ApiResponse<FlatArray<M, 1>>> {\n let params = query;\n let url = app.forum.attribute('apiUrl') + '/' + type;\n\n if (idOrParams instanceof Array) {\n url += '?filter[id]=' + idOrParams.join(',');\n } else if (typeof idOrParams === 'object') {\n params = idOrParams;\n } else if (idOrParams) {\n url += '/' + idOrParams;\n }\n\n return app\n .request<M extends Array<infer _T> ? ApiPayloadPlural : ApiPayloadSingle>({\n method: 'GET',\n url,\n params,\n ...options,\n })\n .then((payload) => {\n if (payloadIsPlural(payload)) {\n return this.pushPayload<FlatArray<M, 1>[]>(payload);\n } else {\n return this.pushPayload<FlatArray<M, 1>>(payload);\n }\n });\n }\n\n /**\n * Get a record from the store by ID.\n */\n getById<M extends Model>(type: string, id: string): M | undefined {\n return this.data?.[type]?.[id] as M;\n }\n\n /**\n * Get a record from the store by the value of a model attribute.\n *\n * @param type The resource type.\n * @param key The name of the method on the model.\n * @param value The value of the model attribute.\n */\n getBy<M extends Model, T = unknown>(type: string, key: keyof M, value: T): M | undefined {\n // @ts-expect-error No way to do this safely, unfortunately.\n return this.all(type).filter((model) => model[key]() === value)[0] as M;\n }\n\n /**\n * Get all loaded records of a specific type.\n */\n all<M extends Model>(type: string): M[] {\n const records = this.data[type];\n\n return records ? (Object.values(records) as M[]) : [];\n }\n\n /**\n * Remove the given model from the store.\n */\n remove(model: Model): void {\n delete this.data[model.data.type as string][model.id() as string];\n }\n\n /**\n * Create a new record of the given type.\n *\n * @param type The resource type\n * @param data Any data to initialize the model with\n */\n createRecord<M extends Model>(type: string, data: ModelData = {}): M {\n data.type = data.type || type;\n\n // @ts-expect-error this will complain about initializing abstract models,\n // but we can safely assume that all models registered with the store are\n // not abstract.\n return new this.models[type](data, this);\n }\n}\n","import app from '../common/app';\nimport User from './models/User';\nimport { FlarumRequestOptions } from './Application';\n\nexport type LoginParams = {\n /**\n * The username/email\n */\n identification: string;\n password: string;\n remember: boolean;\n};\n\n/**\n * The `Session` class defines the current user session. It stores a reference\n * to the current authenticated user, and provides methods to log in/out.\n */\nexport default class Session {\n /**\n * The current authenticated user.\n */\n user: User | null;\n\n /**\n * The CSRF token.\n */\n csrfToken: string;\n\n constructor(user: User | null, csrfToken: string) {\n this.user = user;\n this.csrfToken = csrfToken;\n }\n\n /**\n * Attempt to log in a user.\n */\n login(body: LoginParams, options: Omit<FlarumRequestOptions<any>, 'url' | 'body' | 'method'> = {}) {\n return app.request({\n method: 'POST',\n url: `${app.forum.attribute('baseUrl')}/login`,\n body,\n ...options,\n });\n }\n\n /**\n * Log the user out.\n */\n logout() {\n window.location.href = `${app.forum.attribute('baseUrl')}/logout?token=${this.csrfToken}`;\n }\n}\n","import { createFocusTrap } from './focusTrap';\n\n/**\n * The `Drawer` class controls the page's drawer. The drawer is the area the\n * slides out from the left on mobile devices; it contains the header and the\n * footer.\n */\nexport default class Drawer {\n /**\n * @type {import('./focusTrap').FocusTrap}\n */\n focusTrap;\n\n /**\n * @type {HTMLDivElement}\n */\n appElement;\n\n constructor() {\n // Set up an event handler so that whenever the content area is tapped,\n // the drawer will close.\n document.getElementById('content').addEventListener('click', (e) => {\n if (this.isOpen()) {\n e.preventDefault();\n this.hide();\n }\n });\n\n this.appElement = document.getElementById('app');\n // Despite the `focus-trap` documentation, both `clickOutsideDeactivates`\n // and `allowOutsideClick` are necessary so that inputs in modals triggered\n // from the drawer's nav components can be interacted with.\n this.focusTrap = createFocusTrap('#drawer', { allowOutsideClick: true, clickOutsideDeactivates: true });\n this.drawerAvailableMediaQuery = window.matchMedia(\n `(max-width: ${getComputedStyle(document.documentElement).getPropertyValue('--screen-phone-max')})`\n );\n }\n\n /**\n * Handler for the `resize` event on `window`.\n *\n * This is used to close the drawer when the viewport is widened past the `phone` size.\n * At this point, the drawer turns into the standard header that we see on desktop, but\n * the drawer is still registered as 'open' internally.\n *\n * This causes issues with the focus trap, resulting in focus becoming trapped within\n * the header on desktop viewports.\n *\n * @internal\n */\n resizeHandler = ((e) => {\n if (!e.matches && this.isOpen()) {\n // Drawer is open but we've made window bigger, so hide it.\n this.hide();\n }\n }).bind(this);\n\n /**\n * @internal\n * @type {MediaQueryList}\n */\n drawerAvailableMediaQuery;\n\n /**\n * Check whether or not the drawer is currently open.\n *\n * @return {boolean}\n */\n isOpen() {\n return this.appElement.classList.contains('drawerOpen');\n }\n\n /**\n * Hide the drawer.\n */\n hide() {\n /**\n * As part of hiding the drawer, this function also ensures that the drawer\n * correctly animates out, while ensuring it is not part of the navigation\n * tree while off-screen.\n *\n * More info: https://github.com/flarum/core/pull/2666#discussion_r595381014\n */\n\n this.focusTrap.deactivate();\n this.drawerAvailableMediaQuery.removeListener(this.resizeHandler);\n\n if (!this.isOpen()) return;\n\n const $drawer = $('#drawer');\n\n // Used to prevent `visibility: hidden` from breaking the exit animation\n $drawer.css('visibility', 'visible').one('transitionend', () => $drawer.css('visibility', ''));\n\n this.appElement.classList.remove('drawerOpen');\n\n this.$backdrop?.remove?.();\n }\n\n /**\n * Show the drawer.\n */\n show() {\n this.appElement.classList.add('drawerOpen');\n\n this.drawerAvailableMediaQuery.addListener(this.resizeHandler);\n\n this.$backdrop = $('<div/>').addClass('drawer-backdrop fade').appendTo('body').on('click', this.hide.bind(this));\n\n requestAnimationFrame(() => {\n this.$backdrop.addClass('in');\n\n this.focusTrap.activate();\n });\n }\n}\n","import type { FlarumGenericRoute, RouteResolver } from '../Application';\nimport type Component from '../Component';\nimport DefaultResolver from '../resolvers/DefaultResolver';\n\n/**\n * The `mapRoutes` utility converts a map of named application routes into a\n * format that can be understood by Mithril, and wraps them in route resolvers\n * to provide each route with the current route name.\n *\n * @see https://mithril.js.org/route.html#signature\n */\nexport default function mapRoutes(routes: Record<string, FlarumGenericRoute>, basePath: string = '') {\n const map: Record<\n string,\n RouteResolver<Record<string, unknown>, Component<{ routeName: string; [key: string]: unknown }>, Record<string, unknown>>\n > = {};\n\n for (const routeName in routes) {\n const route = routes[routeName];\n\n if ('resolver' in route) {\n map[basePath + route.path] = route.resolver;\n } else if ('component' in route) {\n const resolverClass = 'resolverClass' in route ? route.resolverClass! : DefaultResolver;\n map[basePath + route.path] = new resolverClass(route.component, routeName);\n } else {\n throw new Error(`Either a resolver or a component must be provided for the route [${routeName}]`);\n }\n }\n\n return map;\n}\n","import type Mithril from 'mithril';\nimport type { AlertAttrs } from '../components/Alert';\n\nexport type InternalFlarumRequestOptions<ResponseType> = Mithril.RequestOptions<ResponseType> & {\n url: string;\n};\n\nexport default class RequestError<ResponseType = string> {\n status: number;\n options: InternalFlarumRequestOptions<ResponseType>;\n xhr: XMLHttpRequest;\n\n responseText: string | null;\n response: {\n [key: string]: unknown;\n errors?: {\n detail?: string;\n code?: string;\n [key: string]: unknown;\n }[];\n } | null;\n\n alert: AlertAttrs | null;\n\n constructor(status: number, responseText: string | null, options: InternalFlarumRequestOptions<ResponseType>, xhr: XMLHttpRequest) {\n this.status = status;\n this.responseText = responseText;\n this.options = options;\n this.xhr = xhr;\n\n try {\n this.response = JSON.parse(responseText ?? 'null');\n } catch (e) {\n this.response = null;\n }\n\n this.alert = null;\n }\n}\n","import humanTime from './humanTime';\n\nfunction updateHumanTimes() {\n $('[data-humantime]').each(function () {\n const $this = $(this);\n const ago = humanTime($this.attr('datetime'));\n\n $this.html(ago);\n });\n}\n\n/**\n * The `liveHumanTimes` initializer sets up a loop every 1 second to update\n * timestamps rendered with the `humanTime` helper.\n */\nexport default function liveHumanTimes() {\n setInterval(updateHumanTimes, 10000);\n}\n","/**\n * Extend an object's method by running its output through a mutating callback\n * every time it is called.\n *\n * The callback accepts the method's return value and should perform any\n * mutations directly on this value. For this reason, this function will not be\n * effective on methods which return scalar values (numbers, strings, booleans).\n *\n * Care should be taken to extend the correct object \u2013 in most cases, a class'\n * prototype will be the desired target of extension, not the class itself.\n *\n * @example <caption>Example usage of extending one method.</caption>\n * extend(Discussion.prototype, 'badges', function(badges) {\n * // do something with `badges`\n * });\n *\n * @example <caption>Example usage of extending multiple methods.</caption>\n * extend(IndexPage.prototype, ['oncreate', 'onupdate'], function(vnode) {\n * // something that needs to be run on creation and update\n * });\n *\n * @param object The object that owns the method\n * @param methods The name or names of the method(s) to extend\n * @param callback A callback which mutates the method's output\n */\nexport function extend<T extends Record<string, any>, K extends KeyOfType<T, Function>>(\n object: T,\n methods: K | K[],\n callback: (this: T, val: ReturnType<T[K]>, ...args: Parameters<T[K]>) => void\n) {\n const allMethods = Array.isArray(methods) ? methods : [methods];\n\n allMethods.forEach((method: K) => {\n const original: Function | undefined = object[method];\n\n object[method] = function (this: T, ...args: Parameters<T[K]>) {\n const value = original ? original.apply(this, args) : undefined;\n\n callback.apply(this, [value, ...args]);\n\n return value;\n } as T[K];\n\n Object.assign(object[method], original);\n });\n}\n\n/**\n * Override an object's method by replacing it with a new function, so that the\n * new function will be run every time the object's method is called.\n *\n * The replacement function accepts the original method as its first argument,\n * which is like a call to `super`. Any arguments passed to the original method\n * are also passed to the replacement.\n *\n * Care should be taken to extend the correct object \u2013 in most cases, a class'\n * prototype will be the desired target of extension, not the class itself.\n *\n * @example <caption>Example usage of overriding one method.</caption>\n * override(Discussion.prototype, 'badges', function(original) {\n * const badges = original();\n * // do something with badges\n * return badges;\n * });\n *\n * @example <caption>Example usage of overriding multiple methods.</caption>\n * extend(Discussion.prototype, ['oncreate', 'onupdate'], function(original, vnode) {\n * // something that needs to be run on creation and update\n * });\n *\n * @param object The object that owns the method\n * @param methods The name or names of the method(s) to override\n * @param newMethod The method to replace it with\n */\nexport function override<T extends Record<any, any>, K extends KeyOfType<T, Function>>(\n object: T,\n methods: K | K[],\n newMethod: (this: T, orig: T[K], ...args: Parameters<T[K]>) => void\n) {\n const allMethods = Array.isArray(methods) ? methods : [methods];\n\n allMethods.forEach((method) => {\n const original: Function = object[method];\n\n object[method] = function (this: T, ...args: Parameters<T[K]>) {\n return newMethod.apply(this, [original.bind(this), ...args]);\n } as T[K];\n\n Object.assign(object[method], original);\n });\n}\n","import Model from '../Model';\n\nexport default class Forum extends Model {\n apiEndpoint() {\n return '/';\n }\n}\n","type RGB = { r: number; g: number; b: number };\n\nfunction hsvToRgb(h: number, s: number, v: number): RGB {\n let r!: number;\n let g!: number;\n let b!: number;\n\n const i = Math.floor(h * 6);\n const f = h * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n }\n\n return {\n r: Math.floor(r * 255),\n g: Math.floor(g * 255),\n b: Math.floor(b * 255),\n };\n}\n\n/**\n * Convert the given string to a unique color.\n */\nexport default function stringToColor(string: string): string {\n let num = 0;\n\n // Convert the username into a number based on the ASCII value of each\n // character.\n for (let i = 0; i < string.length; i++) {\n num += string.charCodeAt(i);\n }\n\n // Construct a color using the remainder of that number divided by 360, and\n // some predefined saturation and value values.\n const hue = num % 360;\n const rgb = hsvToRgb(hue / 360, 0.3, 0.9);\n\n return '' + rgb.r.toString(16) + rgb.g.toString(16) + rgb.b.toString(16);\n}\n","import ColorThief, { Color } from 'color-thief-browser';\n\nimport Model from '../Model';\nimport stringToColor from '../utils/stringToColor';\nimport ItemList from '../utils/ItemList';\nimport computed from '../utils/computed';\nimport GroupBadge from '../components/GroupBadge';\nimport Mithril from 'mithril';\nimport Group from './Group';\n\nexport default class User extends Model {\n username() {\n return Model.attribute<string>('username').call(this);\n }\n slug() {\n return Model.attribute<string>('slug').call(this);\n }\n displayName() {\n return Model.attribute<string>('displayName').call(this);\n }\n\n email() {\n return Model.attribute<string | undefined>('email').call(this);\n }\n isEmailConfirmed() {\n return Model.attribute<boolean | undefined>('isEmailConfirmed').call(this);\n }\n\n password() {\n return Model.attribute<string | undefined>('password').call(this);\n }\n\n avatarUrl() {\n return Model.attribute<string | null>('avatarUrl').call(this);\n }\n\n preferences() {\n return Model.attribute<Record<string, any> | null | undefined>('preferences').call(this);\n }\n\n groups() {\n return Model.hasMany<Group>('groups').call(this);\n }\n\n isAdmin() {\n return Model.attribute<boolean | undefined>('isAdmin').call(this);\n }\n\n joinTime() {\n return Model.attribute('joinTime', Model.transformDate).call(this);\n }\n\n lastSeenAt() {\n return Model.attribute('lastSeenAt', Model.transformDate).call(this);\n }\n\n markedAllAsReadAt() {\n return Model.attribute('markedAllAsReadAt', Model.transformDate).call(this);\n }\n\n unreadNotificationCount() {\n return Model.attribute<number | undefined>('unreadNotificationCount').call(this);\n }\n newNotificationCount() {\n return Model.attribute<number | undefined>('newNotificationCount').call(this);\n }\n\n discussionCount() {\n return Model.attribute<number | undefined>('discussionCount').call(this);\n }\n commentCount() {\n return Model.attribute<number | undefined>('commentCount').call(this);\n }\n\n canEdit() {\n return Model.attribute<boolean | undefined>('canEdit').call(this);\n }\n canEditCredentials() {\n return Model.attribute<boolean | undefined>('canEditCredentials').call(this);\n }\n canEditGroups() {\n return Model.attribute<boolean | undefined>('canEditGroups').call(this);\n }\n canDelete() {\n return Model.attribute<boolean | undefined>('canDelete').call(this);\n }\n\n color() {\n return computed<string, User>('displayName', 'avatarUrl', 'avatarColor', (displayName, avatarUrl, avatarColor) => {\n // If we've already calculated and cached the dominant color of the user's\n // avatar, then we can return that in RGB format. If we haven't, we'll want\n // to calculate it. Unless the user doesn't have an avatar, in which case\n // we generate a color from their display name.\n if (avatarColor) {\n return `rgb(${(avatarColor as Color).join(', ')})`;\n } else if (avatarUrl) {\n this.calculateAvatarColor();\n return '';\n }\n\n return '#' + stringToColor(displayName as string);\n }).call(this);\n }\n\n protected avatarColor: Color | null = null;\n\n /**\n * Check whether or not the user has been seen in the last 5 minutes.\n */\n isOnline(): boolean {\n return dayjs().subtract(5, 'minutes').isBefore(this.lastSeenAt());\n }\n\n /**\n * Get the Badge components that apply to this user.\n */\n badges(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n const groups = this.groups();\n\n if (groups) {\n groups.forEach((group) => {\n items.add(`group${group?.id()}`, <GroupBadge group={group} />);\n });\n }\n\n return items;\n }\n\n /**\n * Calculate the dominant color of the user's avatar. The dominant color will\n * be set to the `avatarColor` property once it has been calculated.\n */\n protected calculateAvatarColor() {\n const image = new Image();\n const user = this;\n\n image.addEventListener('load', function (this: HTMLImageElement) {\n try {\n const colorThief = new ColorThief();\n user.avatarColor = colorThief.getColor(this);\n } catch (e) {\n // Completely white avatars throw errors due to a glitch in color thief\n // See https://github.com/lokesh/color-thief/issues/40\n if (e instanceof TypeError) {\n user.avatarColor = [255, 255, 255];\n } else {\n throw e;\n }\n }\n user.freshness = new Date();\n m.redraw();\n });\n image.crossOrigin = 'anonymous';\n image.src = this.avatarUrl() ?? '';\n }\n\n /**\n * Update the user's preferences.\n */\n savePreferences(newPreferences: Record<string, unknown>): Promise<this> {\n const preferences = this.preferences();\n\n Object.assign(preferences ?? {}, newPreferences);\n\n return this.save({ preferences });\n }\n}\n","import Model from '../Model';\nimport computed from '../utils/computed';\nimport { getPlainContent } from '../utils/string';\nimport Discussion from './Discussion';\nimport User from './User';\n\nexport default class Post extends Model {\n number() {\n return Model.attribute<number>('number').call(this);\n }\n discussion() {\n return Model.hasOne<Discussion>('discussion').call(this) as Discussion;\n }\n\n createdAt() {\n return Model.attribute<Date, string>('createdAt', Model.transformDate).call(this);\n }\n user() {\n return Model.hasOne<User>('user').call(this);\n }\n\n contentType() {\n return Model.attribute<string | null>('contentType').call(this);\n }\n content() {\n return Model.attribute<string | null | undefined>('content').call(this);\n }\n contentHtml() {\n return Model.attribute<string | null | undefined>('contentHtml').call(this);\n }\n renderFailed() {\n return Model.attribute<boolean | undefined>('renderFailed').call(this);\n }\n contentPlain() {\n return computed<string | null | undefined>('contentHtml', (content) => {\n if (typeof content === 'string') {\n return getPlainContent(content);\n }\n\n return content as null | undefined;\n }).call(this);\n }\n\n editedAt() {\n return Model.attribute('editedAt', Model.transformDate).call(this);\n }\n editedUser() {\n return Model.hasOne<User | null>('editedUser').call(this);\n }\n isEdited() {\n return computed<boolean>('editedAt', (editedAt) => !!editedAt).call(this);\n }\n\n hiddenAt() {\n return Model.attribute('hiddenAt', Model.transformDate).call(this);\n }\n hiddenUser() {\n return Model.hasOne<User | null>('hiddenUser').call(this);\n }\n isHidden() {\n return computed<boolean>('hiddenAt', (hiddenAt) => !!hiddenAt).call(this);\n }\n\n canEdit() {\n return Model.attribute<boolean | undefined>('canEdit').call(this);\n }\n canHide() {\n return Model.attribute<boolean | undefined>('canHide').call(this);\n }\n canDelete() {\n return Model.attribute<boolean | undefined>('canDelete').call(this);\n }\n}\n","import Model from '../Model';\nimport User from './User';\n\nexport default class Notification extends Model {\n contentType() {\n return Model.attribute<string>('contentType').call(this);\n }\n content<T = unknown>() {\n return Model.attribute<T>('content').call(this);\n }\n createdAt() {\n return Model.attribute<Date, string>('createdAt', Model.transformDate).call(this);\n }\n\n isRead() {\n return Model.attribute<boolean>('isRead').call(this);\n }\n\n user() {\n return Model.hasOne<User>('user').call(this);\n }\n fromUser() {\n return Model.hasOne<User | null>('fromUser').call(this);\n }\n subject() {\n return Model.hasOne<Model | null>('subject').call(this);\n }\n}\n","import type Component from '../Component';\nimport Modal, { IDismissibleOptions } from '../components/Modal';\n\n/**\n * Ideally, `show` would take a higher-kinded generic, ala:\n * `show<Attrs, C>(componentClass: C<Attrs>, attrs: Attrs): void`\n * Unfortunately, TypeScript does not support this:\n * https://github.com/Microsoft/TypeScript/issues/1213\n * Therefore, we have to use this ugly, messy workaround.\n */\ntype UnsafeModalClass = ComponentClass<any, Modal> & { get dismissibleOptions(): IDismissibleOptions; component: typeof Component.component };\n\ntype ModalItem = {\n componentClass: UnsafeModalClass;\n attrs?: Record<string, unknown>;\n key: number;\n};\n\n/**\n * Class used to manage modal state.\n *\n * Accessible on the `app` object via `app.modal` property.\n */\nexport default class ModalManagerState {\n /**\n * @internal\n */\n modal: ModalItem | null = null;\n\n /**\n * @internal\n */\n modalList: ModalItem[] = [];\n\n /**\n * @internal\n */\n backdropShown: boolean = false;\n\n /**\n * Used to force re-initialization of modals if a modal\n * is replaced by another of the same type.\n */\n private key = 0;\n\n /**\n * Shows a modal dialog.\n *\n * If `stackModal` is `true`, the modal will be shown on top of the current modal.\n *\n * If a value for `stackModal` is not provided, opening a new modal will close\n * any others currently being shown for backwards compatibility.\n *\n * @example <caption>Show a modal</caption>\n * app.modal.show(MyCoolModal, { attr: 'value' });\n *\n * @example <caption>Show a modal from a lifecycle method (`oncreate`, `view`, etc.)</caption>\n * // This \"hack\" is needed due to quirks with nested redraws in Mithril.\n * setTimeout(() => app.modal.show(MyCoolModal, { attr: 'value' }), 0);\n *\n * @example <caption>Stacking modals</caption>\n * app.modal.show(MyCoolStackedModal, { attr: 'value' }, true);\n */\n show(componentClass: UnsafeModalClass, attrs: Record<string, unknown> = {}, stackModal: boolean = false): void {\n if (!(componentClass.prototype instanceof Modal)) {\n // This is duplicated so that if the error is caught, an error message still shows up in the debug console.\n const invalidModalWarning = 'The ModalManager can only show Modals.';\n console.error(invalidModalWarning);\n throw new Error(invalidModalWarning);\n }\n\n this.backdropShown = true;\n m.redraw.sync();\n\n // We use requestAnimationFrame here, since we need to wait for the backdrop to be added\n // to the DOM before actually adding the modal to the modal list.\n //\n // This is because we use RAF inside the ModalManager onupdate lifecycle hook, and if we\n // skip this RAF call, the hook will attempt to add a focus trap as well as lock scroll\n // onto the newly added modal before it's in the DOM, creating an extra scrollbar.\n requestAnimationFrame(() => {\n // Set current modal\n this.modal = { componentClass, attrs, key: this.key++ };\n\n // We want to stack this modal\n if (stackModal) {\n // Remember previously opened modal and add new modal to the modal list\n this.modalList.push(this.modal);\n } else {\n // Override last modals\n this.modalList = [this.modal];\n }\n\n m.redraw();\n });\n }\n\n /**\n * Closes the topmost currently open dialog, if one is open.\n */\n close(): void {\n if (!this.modal) return;\n\n // If there are two modals, remove the most recent one\n if (this.modalList.length > 1) {\n // Remove last modal from list\n this.modalList.pop();\n\n // Open last modal from list\n this.modal = this.modalList[this.modalList.length - 1];\n } else {\n // Reset state\n this.modal = null;\n this.modalList = [];\n }\n\n m.redraw();\n }\n\n /**\n * Checks if a modal is currently open.\n *\n * @return `true` if a modal dialog is currently open, otherwise `false`.\n */\n isModalOpen(): boolean {\n return !!this.modal;\n }\n}\n","import type Mithril from 'mithril';\nimport Alert, { AlertAttrs } from '../components/Alert';\n\n/**\n * Returned by `AlertManagerState.show`. Used to dismiss alerts.\n */\nexport type AlertIdentifier = number;\n\nexport type AlertArray = { [id: AlertIdentifier]: AlertState };\n\nexport interface AlertState {\n componentClass: typeof Alert;\n attrs: AlertAttrs;\n children: Mithril.Children;\n}\n\nexport default class AlertManagerState {\n protected activeAlerts: AlertArray = {};\n protected alertId: AlertIdentifier = 0;\n\n getActiveAlerts() {\n return this.activeAlerts;\n }\n\n /**\n * Show an Alert in the alerts area.\n *\n * @return The alert's ID, which can be used to dismiss the alert.\n */\n show(children: Mithril.Children): AlertIdentifier;\n show(attrs: AlertAttrs, children: Mithril.Children): AlertIdentifier;\n show(componentClass: typeof Alert, attrs: AlertAttrs, children: Mithril.Children): AlertIdentifier;\n\n show(arg1: any, arg2?: any, arg3?: any) {\n // Assigns variables as per the above signatures\n let componentClass = Alert;\n let attrs: AlertAttrs = {};\n let children: Mithril.Children;\n\n if (arguments.length == 1) {\n children = arg1 as Mithril.Children;\n } else if (arguments.length == 2) {\n attrs = arg1 as AlertAttrs;\n children = arg2 as Mithril.Children;\n } else if (arguments.length == 3) {\n componentClass = arg1 as typeof Alert;\n attrs = arg2 as AlertAttrs;\n children = arg3;\n }\n\n this.activeAlerts[++this.alertId] = { children, attrs, componentClass };\n m.redraw();\n\n return this.alertId;\n }\n\n /**\n * Dismiss an alert.\n */\n dismiss(key: AlertIdentifier | null): void {\n if (!key || !(key in this.activeAlerts)) return;\n\n delete this.activeAlerts[key];\n m.redraw();\n }\n\n /**\n * Clear all alerts.\n */\n clear(): void {\n this.activeAlerts = {};\n m.redraw();\n }\n}\n","import Model from '../Model';\n\nexport default class AccessToken extends Model {\n token() {\n return Model.attribute<string | undefined>('token').call(this);\n }\n userId() {\n return Model.attribute<string>('userId').call(this);\n }\n title() {\n return Model.attribute<string | null>('title').call(this);\n }\n type() {\n return Model.attribute<string>('type').call(this);\n }\n createdAt() {\n return Model.attribute<Date, string>('createdAt', Model.transformDate).call(this);\n }\n lastActivityAt() {\n return Model.attribute<Date, string>('lastActivityAt', Model.transformDate).call(this);\n }\n lastIpAddress() {\n return Model.attribute<string>('lastIpAddress').call(this);\n }\n device() {\n return Model.attribute<string>('device').call(this);\n }\n isCurrent() {\n return Model.attribute<boolean>('isCurrent').call(this);\n }\n isSessionToken() {\n return Model.attribute<boolean>('isSessionToken').call(this);\n }\n}\n","import app from '../common/app';\n\nimport ItemList from './utils/ItemList';\nimport Button from './components/Button';\nimport ModalManager from './components/ModalManager';\nimport AlertManager from './components/AlertManager';\nimport RequestErrorModal from './components/RequestErrorModal';\nimport Translator from './Translator';\nimport Store, { ApiPayload, ApiResponse, ApiResponsePlural, ApiResponseSingle, payloadIsPlural } from './Store';\nimport Session from './Session';\nimport extract from './utils/extract';\nimport extractText from './utils/extractText';\nimport Drawer from './utils/Drawer';\nimport mapRoutes from './utils/mapRoutes';\nimport RequestError, { InternalFlarumRequestOptions } from './utils/RequestError';\nimport ScrollListener from './utils/ScrollListener';\nimport liveHumanTimes from './utils/liveHumanTimes';\n// @ts-expect-error We need to explicitly use the prefix to distinguish between the extend folder.\nimport { extend } from './extend.ts';\n\nimport Forum from './models/Forum';\nimport User from './models/User';\nimport Discussion from './models/Discussion';\nimport Post from './models/Post';\nimport Group from './models/Group';\nimport Notification from './models/Notification';\nimport PageState from './states/PageState';\nimport ModalManagerState from './states/ModalManagerState';\nimport AlertManagerState from './states/AlertManagerState';\n\nimport type DefaultResolver from './resolvers/DefaultResolver';\nimport type Mithril from 'mithril';\nimport type Component from './Component';\nimport type { ComponentAttrs } from './Component';\nimport Model, { SavedModelData } from './Model';\nimport fireApplicationError from './helpers/fireApplicationError';\nimport IHistory from './IHistory';\nimport IExtender from './extenders/IExtender';\nimport AccessToken from './models/AccessToken';\n\nexport type FlarumScreens = 'phone' | 'tablet' | 'desktop' | 'desktop-hd';\n\nexport type FlarumGenericRoute = RouteItem<any, any, any>;\n\nexport interface FlarumRequestOptions<ResponseType> extends Omit<Mithril.RequestOptions<ResponseType>, 'extract'> {\n errorHandler?: (error: RequestError) => void;\n url: string;\n // TODO: [Flarum 2.0] Remove deprecated option\n /**\n * Manipulate the response text before it is parsed into JSON.\n *\n * @deprecated Please use `modifyText` instead.\n */\n extract?: (responseText: string) => string;\n /**\n * Manipulate the response text before it is parsed into JSON.\n *\n * This overrides any `extract` method provided.\n */\n modifyText?: (responseText: string) => string;\n}\n\n/**\n * A valid route definition.\n */\nexport type RouteItem<\n Attrs extends ComponentAttrs,\n Comp extends Component<Attrs & { routeName: string }>,\n RouteArgs extends Record<string, unknown> = {}\n> = {\n /**\n * The path for your route.\n *\n * This might be a specific URL path (e.g.,`/myPage`), or it might\n * contain a variable used by a resolver (e.g., `/myPage/:id`).\n *\n * @see https://docs.flarum.org/extend/frontend-pages.html#route-resolvers-advanced\n */\n path: `/${string}`;\n} & (\n | {\n /**\n * The component to render when this route matches.\n */\n component: new () => Comp;\n /**\n * A custom resolver class.\n *\n * This should be the class itself, and **not** an instance of the\n * class.\n */\n resolverClass?: new (component: new () => Comp, routeName: string) => DefaultResolver<Attrs, Comp, RouteArgs>;\n }\n | {\n /**\n * An instance of a route resolver.\n */\n resolver: RouteResolver<Attrs, Comp, RouteArgs>;\n }\n);\n\nexport interface RouteResolver<\n Attrs extends ComponentAttrs,\n Comp extends Component<Attrs & { routeName: string }>,\n RouteArgs extends Record<string, unknown> = {}\n> {\n /**\n * A method which selects which component to render based on\n * conditional logic.\n *\n * Returns the component class, and **not** a Vnode or JSX\n * expression.\n *\n * @see https://mithril.js.org/route.html#routeresolveronmatch\n */\n onmatch(this: this, args: RouteArgs, requestedPath: string, route: string): { new (): Comp };\n /**\n * A function which renders the provided component.\n *\n * If not specified, the route will default to rendering the\n * component on its own, inside of a fragment.\n *\n * Returns a Mithril Vnode or other children.\n *\n * @see https://mithril.js.org/route.html#routeresolverrender\n */\n render?(this: this, vnode: Mithril.Vnode<Attrs, Comp>): Mithril.Children;\n}\n\nexport interface ApplicationData {\n apiDocument: ApiPayload | null;\n locale: string;\n locales: Record<string, string>;\n resources: SavedModelData[];\n session: { userId: number; csrfToken: string };\n [key: string]: unknown;\n}\n\n/**\n * The `App` class provides a container for an application, as well as various\n * utilities for the rest of the app to use.\n */\nexport default class Application {\n /**\n * The forum model for this application.\n */\n forum!: Forum;\n\n /**\n * A map of routes, keyed by a unique route name. Each route is an object\n * containing the following properties:\n *\n * - `path` The path that the route is accessed at.\n * - `component` The Mithril component to render when this route is active.\n *\n * @example\n * app.routes.discussion = { path: '/d/:id', component: DiscussionPage };\n */\n routes: Record<string, FlarumGenericRoute> = {};\n\n /**\n * An ordered list of initializers to bootstrap the application.\n */\n initializers: ItemList<(app: this) => void> = new ItemList();\n\n /**\n * The app's session.\n *\n * Stores info about the current user.\n */\n session!: Session;\n\n /**\n * The app's translator.\n */\n translator: Translator = new Translator();\n\n /**\n * The app's data store.\n */\n store: Store = new Store({\n 'access-tokens': AccessToken,\n forums: Forum,\n users: User,\n discussions: Discussion,\n posts: Post,\n groups: Group,\n notifications: Notification,\n });\n\n /**\n * A local cache that can be used to store data at the application level, so\n * that is persists between different routes.\n */\n cache: Record<string, unknown> = {};\n\n /**\n * Whether or not the app has been booted.\n */\n booted: boolean = false;\n\n /**\n * The page the app is currently on.\n *\n * This object holds information about the type of page we are currently\n * visiting, and sometimes additional arbitrary page state that may be\n * relevant to lower-level components.\n */\n current: PageState = new PageState(null);\n\n /**\n * The page the app was on before the current page.\n *\n * Once the application navigates to another page, the object previously\n * assigned to this.current will be moved to this.previous, while this.current\n * is re-initialized.\n */\n previous: PageState = new PageState(null);\n\n /**\n * An object that manages modal state.\n */\n modal: ModalManagerState = new ModalManagerState();\n\n /**\n * An object that manages the state of active alerts.\n */\n alerts: AlertManagerState = new AlertManagerState();\n\n /**\n * An object that manages the state of the navigation drawer.\n */\n drawer!: Drawer;\n\n history: IHistory | null = null;\n pane: any = null;\n\n data!: ApplicationData;\n\n private _title: string = '';\n private _titleCount: number = 0;\n\n private set title(val: string) {\n this._title = val;\n }\n\n get title() {\n return this._title;\n }\n\n private set titleCount(val: number) {\n this._titleCount = val;\n }\n\n get titleCount() {\n return this._titleCount;\n }\n\n /**\n * The key for an Alert that was shown as a result of an AJAX request error.\n * If present, it will be dismissed on the next successful request.\n */\n private requestErrorAlert: number | null = null;\n\n initialRoute!: string;\n\n public load(payload: Application['data']) {\n this.data = payload;\n this.translator.setLocale(payload.locale);\n }\n\n public boot() {\n const caughtInitializationErrors: CallableFunction[] = [];\n\n this.initializers.toArray().forEach((initializer) => {\n try {\n initializer(this);\n } catch (e) {\n const extension = initializer.itemName.includes('/')\n ? initializer.itemName.replace(/(\\/flarum-ext-)|(\\/flarum-)/g, '-')\n : initializer.itemName;\n\n caughtInitializationErrors.push(() =>\n fireApplicationError(\n extractText(app.translator.trans('core.lib.error.extension_initialiation_failed_message', { extension })),\n `${extension} failed to initialize`,\n e\n )\n );\n }\n });\n\n this.store.pushPayload({ data: this.data.resources });\n\n this.forum = this.store.getById('forums', '1')!;\n\n this.session = new Session(this.store.getById<User>('users', String(this.data.session.userId)) ?? null, this.data.session.csrfToken);\n\n this.mount();\n\n this.initialRoute = window.location.href;\n\n caughtInitializationErrors.forEach((handler) => handler());\n }\n\n public bootExtensions(extensions: Record<string, { extend?: IExtender[] }>) {\n Object.keys(extensions).forEach((name) => {\n const extension = extensions[name];\n\n // If an extension doesn't define extenders, there's nothing more to do here.\n if (!extension.extend) return;\n\n const extenders = extension.extend.flat(Infinity);\n\n for (const extender of extenders) {\n extender.extend(this, { name, exports: extension });\n }\n });\n }\n\n protected mount(basePath: string = '') {\n // An object with a callable view property is used in order to pass arguments to the component; see https://mithril.js.org/mount.html\n m.mount(document.getElementById('modal')!, { view: () => <ModalManager state={this.modal} /> });\n m.mount(document.getElementById('alerts')!, { view: () => <AlertManager state={this.alerts} /> });\n\n this.drawer = new Drawer();\n\n m.route(document.getElementById('content')!, basePath + '/', mapRoutes(this.routes, basePath));\n\n const appEl = document.getElementById('app')!;\n const appHeaderEl = document.querySelector('.App-header')!;\n\n // Add a class to the body which indicates that the page has been scrolled\n // down. When this happens, we'll add classes to the header and app body\n // which will set the navbar's position to fixed. We don't want to always\n // have it fixed, as that could overlap with custom headers.\n const scrollListener = new ScrollListener((top: number) => {\n const offset = appEl.getBoundingClientRect().top + document.body.scrollTop;\n\n appEl.classList.toggle('affix', top >= offset);\n appEl.classList.toggle('scrolled', top > offset);\n\n appHeaderEl.classList.toggle('navbar-fixed-top', top >= offset);\n });\n\n scrollListener.start();\n scrollListener.update();\n\n document.body.classList.add('ontouchstart' in window ? 'touch' : 'no-touch');\n\n liveHumanTimes();\n }\n\n /**\n * Get the API response document that has been preloaded into the application.\n */\n preloadedApiDocument<M extends Model>(): ApiResponseSingle<M> | null;\n preloadedApiDocument<Ms extends Model[]>(): ApiResponsePlural<Ms[number]> | null;\n preloadedApiDocument<M extends Model | Model[]>(): ApiResponse<FlatArray<M, 1>> | null {\n // If the URL has changed, the preloaded Api document is invalid.\n if (this.data.apiDocument && window.location.href === this.initialRoute) {\n const results = payloadIsPlural(this.data.apiDocument)\n ? this.store.pushPayload<FlatArray<M, 1>[]>(this.data.apiDocument)\n : this.store.pushPayload<FlatArray<M, 1>>(this.data.apiDocument);\n\n this.data.apiDocument = null;\n\n return results;\n }\n\n return null;\n }\n\n /**\n * Determine the current screen mode, based on our media queries.\n */\n screen(): FlarumScreens {\n const styles = getComputedStyle(document.documentElement);\n return styles.getPropertyValue('--flarum-screen') as ReturnType<Application['screen']>;\n }\n\n /**\n * Set the `<title>` of the page.\n *\n * @param title New page title\n */\n setTitle(title: string): void {\n this.title = title;\n this.updateTitle();\n }\n\n /**\n * Set a number to display in the `<title>` of the page.\n *\n * @param count Number to display in title\n */\n setTitleCount(count: number): void {\n this.titleCount = count;\n this.updateTitle();\n }\n\n updateTitle(): void {\n const count = this.titleCount ? `(${this.titleCount}) ` : '';\n const onHomepage = m.route.get() === this.forum.attribute('basePath') + '/';\n\n const params = {\n pageTitle: this.title,\n forumName: this.forum.attribute('title'),\n // Until we add page numbers to the frontend, this is constant at 1\n // so that the page number portion doesn't show up in the URL.\n pageNumber: 1,\n };\n\n let title =\n onHomepage || !this.title\n ? extractText(app.translator.trans('core.lib.meta_titles.without_page_title', params))\n : extractText(app.translator.trans('core.lib.meta_titles.with_page_title', params));\n\n title = count + title;\n\n // We pass the title through a DOMParser to allow HTML entities\n // to be rendered correctly, while still preventing XSS attacks\n // from user input by using a script-disabled environment.\n // https://github.com/flarum/framework/issues/3514\n // https://github.com/flarum/framework/pull/3684\n // This is only a temporary solution for 1.x,\n // and the actual source of the issue will be fixed in 2.x\n // Actual source of the issue: https://github.com/flarum/framework/issues/3685\n const parser = new DOMParser();\n document.title = parser.parseFromString(title, 'text/html').body.innerText;\n }\n\n protected transformRequestOptions<ResponseType>(flarumOptions: FlarumRequestOptions<ResponseType>): InternalFlarumRequestOptions<ResponseType> {\n const { background, deserialize, extract, modifyText, ...tmpOptions } = { ...flarumOptions };\n\n // Unless specified otherwise, requests should run asynchronously in the\n // background, so that they don't prevent redraws from occurring.\n const defaultBackground = true;\n\n // When we deserialize JSON data, if for some reason the server has provided\n // a dud response, we don't want the application to crash. We'll show an\n // error message to the user instead.\n\n const defaultDeserialize = (response: string) => response as ResponseType;\n\n // When extracting the data from the response, we can check the server\n // response code and show an error message to the user if something's gone\n // awry.\n const originalExtract = modifyText || extract;\n\n const options: InternalFlarumRequestOptions<ResponseType> = {\n background: background ?? defaultBackground,\n deserialize: deserialize ?? defaultDeserialize,\n ...tmpOptions,\n };\n\n extend(options, 'config', (_: undefined, xhr: XMLHttpRequest) => {\n xhr.setRequestHeader('X-CSRF-Token', this.session.csrfToken!);\n });\n\n // If the method is something like PATCH or DELETE, which not all servers\n // and clients support, then we'll send it as a POST request with the\n // intended method specified in the X-HTTP-Method-Override header.\n if (options.method && !['GET', 'POST'].includes(options.method)) {\n const method = options.method;\n\n extend(options, 'config', (_: undefined, xhr: XMLHttpRequest) => {\n xhr.setRequestHeader('X-HTTP-Method-Override', method);\n });\n\n options.method = 'POST';\n }\n\n options.extract = (xhr: XMLHttpRequest) => {\n let responseText;\n\n if (originalExtract) {\n responseText = originalExtract(xhr.responseText);\n } else {\n responseText = xhr.responseText;\n }\n\n const status = xhr.status;\n\n if (status < 200 || status > 299) {\n throw new RequestError<ResponseType>(status, `${responseText}`, options, xhr);\n }\n\n if (xhr.getResponseHeader) {\n const csrfToken = xhr.getResponseHeader('X-CSRF-Token');\n if (csrfToken) app.session.csrfToken = csrfToken;\n }\n\n try {\n if (responseText === '') {\n return null;\n }\n\n return JSON.parse(responseText);\n } catch (e) {\n throw new RequestError<ResponseType>(500, `${responseText}`, options, xhr);\n }\n };\n\n return options;\n }\n\n /**\n * Make an AJAX request, handling any low-level errors that may occur.\n *\n * @see https://mithril.js.org/request.html\n */\n request<ResponseType>(originalOptions: FlarumRequestOptions<ResponseType>): Promise<ResponseType> {\n const options = this.transformRequestOptions(originalOptions);\n\n if (this.requestErrorAlert) this.alerts.dismiss(this.requestErrorAlert);\n\n return m.request(options).catch((e) => this.requestErrorCatch(e, originalOptions.errorHandler));\n }\n\n /**\n * By default, show an error alert, and log the error to the console.\n */\n protected requestErrorCatch<ResponseType>(error: RequestError, customErrorHandler: FlarumRequestOptions<ResponseType>['errorHandler']) {\n // the details property is decoded to transform escaped characters such as '\\n'\n const formattedErrors = error.response?.errors?.map((e) => decodeURI(e.detail ?? '')) ?? [];\n\n let content;\n switch (error.status) {\n case 422:\n content = formattedErrors\n .map((detail) => [detail, <br />])\n .flat()\n .slice(0, -1);\n break;\n\n case 401:\n case 403:\n content = app.translator.trans('core.lib.error.permission_denied_message');\n break;\n\n case 404:\n case 410:\n content = app.translator.trans('core.lib.error.not_found_message');\n break;\n\n case 413:\n content = app.translator.trans('core.lib.error.payload_too_large_message');\n break;\n\n case 429:\n content = app.translator.trans('core.lib.error.rate_limit_exceeded_message');\n break;\n\n default:\n if (this.requestWasCrossOrigin(error)) {\n content = app.translator.trans('core.lib.error.generic_cross_origin_message');\n } else {\n content = app.translator.trans('core.lib.error.generic_message');\n }\n }\n\n const isDebug: boolean = app.forum.attribute('debug');\n\n error.alert = {\n type: 'error',\n content,\n controls: isDebug && [\n <Button className=\"Button Button--link\" onclick={this.showDebug.bind(this, error, formattedErrors)}>\n {app.translator.trans('core.lib.debug_button')}\n </Button>,\n ],\n };\n\n if (customErrorHandler) {\n customErrorHandler(error);\n } else {\n this.requestErrorDefaultHandler(error, isDebug, formattedErrors);\n }\n\n return Promise.reject(error);\n }\n\n /**\n * Used to modify the error message shown on the page to help troubleshooting.\n * While not certain, a failing cross-origin request likely indicates a missing redirect to Flarum canonical URL.\n * Because XHR errors do not expose CORS information, we can only compare the requested URL origin to the page origin.\n *\n * @param error\n * @protected\n */\n protected requestWasCrossOrigin(error: RequestError): boolean {\n return new URL(error.options.url, document.baseURI).origin !== window.location.origin;\n }\n\n protected requestErrorDefaultHandler(e: unknown, isDebug: boolean, formattedErrors: string[]): void {\n if (e instanceof RequestError) {\n if (isDebug && e.xhr) {\n const { method, url } = e.options;\n const { status = '' } = e.xhr;\n\n console.group(`${method} ${url} ${status}`);\n\n if (formattedErrors.length) {\n console.error(...formattedErrors);\n } else {\n console.error(e);\n }\n\n console.groupEnd();\n }\n\n if (e.alert) {\n this.requestErrorAlert = this.alerts.show(e.alert, e.alert.content);\n }\n } else {\n throw e;\n }\n }\n\n private showDebug(error: RequestError, formattedError: string[]) {\n if (this.requestErrorAlert !== null) this.alerts.dismiss(this.requestErrorAlert);\n\n this.modal.show(RequestErrorModal, { error, formattedError });\n }\n\n /**\n * Construct a URL to the route with the given name.\n */\n route(name: string, params: Record<string, unknown> = {}): string {\n const route = this.routes[name];\n\n if (!route) throw new Error(`Route '${name}' does not exist`);\n\n const url = route.path.replace(/:([^\\/]+)/g, (m, key) => `${extract(params, key)}`);\n\n // Remove falsy values in params to avoid having urls like '/?sort&q'\n for (const key in params) {\n if (params.hasOwnProperty(key) && !params[key]) delete params[key];\n }\n\n const queryString = m.buildQueryString(params as any);\n const prefix = m.route.prefix === '' ? this.forum.attribute('basePath') : '';\n\n return prefix + url + (queryString ? '?' + queryString : '');\n }\n}\n","import app from '../app';\n\n/**\n * Fire a Flarum error which is shown in the JS console for everyone and in an alert for the admin.\n *\n * @param userTitle: a user friendly title of the error, should be localized.\n * @param consoleTitle: an error title that goes in the console, doesn't have to be localized.\n * @param error: the error.\n */\nexport default function fireApplicationError(userTitle: string, consoleTitle: string, error: any) {\n console.group(`%c${consoleTitle}`, 'background-color: #d83e3e; color: #ffffff; font-weight: bold;');\n console.error(error);\n console.groupEnd();\n\n if (app.session?.user?.isAdmin()) {\n app.alerts.show({ type: 'error' }, `${userTitle}`);\n }\n}\n","import app from '../../common/app';\nimport Component from '../Component';\nimport Button from './Button';\nimport LinkButton from './LinkButton';\nimport type Mithril from 'mithril';\nimport classList from '../utils/classList';\n\n/**\n * The `Navigation` component displays a set of navigation buttons. Typically\n * this is just a back button which pops the app's History. If the user is on\n * the root page and there is no history to pop, then in some instances it may\n * show a button that toggles the app's drawer.\n *\n * If the app has a pane, it will also include a 'pin' button which toggles the\n * pinned state of the pane.\n *\n * Accepts the following attrs:\n *\n * - `className` The name of a class to set on the root element.\n * - `drawer` Whether or not to show a button to toggle the app's drawer if\n * there is no more history to pop.\n */\nexport default class Navigation extends Component {\n view() {\n const { history, pane } = app;\n\n return (\n <div\n className={classList('Navigation ButtonGroup', this.attrs.className)}\n onmouseenter={pane && pane.show.bind(pane)}\n onmouseleave={pane && pane.onmouseleave.bind(pane)}\n >\n {history?.canGoBack() ? [this.getBackButton(), this.getPaneButton()] : this.getDrawerButton()}\n </div>\n );\n }\n\n /**\n * Get the back button.\n */\n protected getBackButton(): Mithril.Children {\n const { history } = app;\n const previous = history?.getPrevious();\n\n return (\n <LinkButton\n className=\"Button Navigation-back Button--icon\"\n href={history?.backUrl()}\n icon=\"fas fa-chevron-left\"\n aria-label={previous?.title}\n onclick={(e: MouseEvent) => {\n if (e.shiftKey || e.ctrlKey || e.metaKey || e.which === 2) return;\n e.preventDefault();\n history?.back();\n }}\n />\n );\n }\n\n /**\n * Get the pane pinned toggle button.\n */\n protected getPaneButton(): Mithril.Children {\n const { pane } = app;\n\n if (!pane || !pane.active) return null;\n\n return (\n <Button\n className={classList('Button Button--icon Navigation-pin', { active: pane.pinned })}\n onclick={pane.togglePinned.bind(pane)}\n icon=\"fas fa-thumbtack\"\n />\n );\n }\n\n /**\n * Get the drawer toggle button.\n */\n protected getDrawerButton(): Mithril.Children {\n if (!this.attrs.drawer) return null;\n\n const { drawer } = app;\n const user = app.session.user;\n\n return (\n <Button\n className={classList('Button Button--icon Navigation-drawer', { new: user?.newNotificationCount() })}\n onclick={(e: MouseEvent) => {\n e.stopPropagation();\n drawer.show();\n }}\n icon=\"fas fa-bars\"\n aria-label={app.translator.trans('core.lib.nav.drawer_button')}\n />\n );\n }\n}\n","import app from '../../forum/app';\nimport PaginatedListState from '../../common/states/PaginatedListState';\nimport Notification from '../../common/models/Notification';\n\nexport default class NotificationListState extends PaginatedListState<Notification> {\n constructor() {\n super({}, 1, 20);\n }\n\n get type(): string {\n return 'notifications';\n }\n\n /**\n * Load the next page of notification results.\n */\n load(): Promise<void> {\n if (app.session.user?.newNotificationCount()) {\n this.pages = [];\n this.location = { page: 1 };\n }\n\n if (this.pages.length > 0) {\n return Promise.resolve();\n }\n\n app.session.user?.pushAttributes({ newNotificationCount: 0 });\n\n return super.loadNext();\n }\n\n /**\n * Mark all of the notifications as read.\n */\n markAllAsRead() {\n if (this.pages.length === 0) return;\n\n app.session.user?.pushAttributes({ unreadNotificationCount: 0 });\n\n this.pages.forEach((page) => {\n page.items.forEach((notification) => notification.pushAttributes({ isRead: true }));\n });\n\n return app.request({\n url: app.forum.attribute('apiUrl') + '/notifications/read',\n method: 'POST',\n });\n }\n\n /**\n * Delete all of the notifications for this user.\n */\n deleteAll() {\n if (this.pages.length === 0) return;\n\n app.session.user?.pushAttributes({ unreadNotificationCount: 0 });\n\n this.pages = [];\n\n return app.request({\n url: app.forum.attribute('apiUrl') + '/notifications',\n method: 'DELETE',\n });\n }\n}\n","export default class SearchState {\n protected cachedSearches: Set<string>;\n protected value: string = '';\n\n constructor(cachedSearches: string[] = []) {\n this.cachedSearches = new Set(cachedSearches);\n }\n\n /**\n * If we are displaying the full results of a search (not just a preview),\n * this value should return the query that prompted that search.\n *\n * In this generic class, full page searching is not supported.\n * This method should be implemented by subclasses that do support it.\n *\n * @see Search\n */\n getInitialSearch(): string {\n return '';\n }\n\n getValue(): string {\n return this.value;\n }\n\n setValue(value: string) {\n this.value = value;\n }\n\n /**\n * Clear the search value.\n */\n clear() {\n this.setValue('');\n }\n\n /**\n * Mark that we have already searched for this query so that we don't\n * have to ping the endpoint again.\n */\n cache(query: string) {\n this.cachedSearches.add(query);\n }\n\n /**\n * Check if this query has been searched before.\n */\n isCached(query: string): boolean {\n return this.cachedSearches.has(query);\n }\n}\n","import app from '../../forum/app';\nimport setRouteWithForcedRefresh from '../../common/utils/setRouteWithForcedRefresh';\nimport SearchState from './SearchState';\n\ntype SearchParams = Record<string, string>;\n\nexport default class GlobalSearchState extends SearchState {\n private initialValueSet = false;\n\n constructor(cachedSearches = []) {\n super(cachedSearches);\n }\n\n getValue(): string {\n // If we are on a search results page, we should initialize the value\n // from the current search, if one is present.\n // We can't do this in the constructor, as this class is instantiated\n // before pages are rendered, and we need app.current.\n if (!this.initialValueSet && this.currPageProvidesSearch()) {\n this.intializeValue();\n }\n\n return super.getValue();\n }\n\n protected intializeValue() {\n this.setValue(this.getInitialSearch());\n this.initialValueSet = true;\n }\n\n protected currPageProvidesSearch(): boolean {\n return app.current.type && app.current.type.providesInitialSearch;\n }\n\n /**\n * @inheritdoc\n */\n getInitialSearch(): string {\n return this.currPageProvidesSearch() ? this.params().q : '';\n }\n\n /**\n * Clear the search input and the current controller's active search.\n */\n clear() {\n super.clear();\n\n if (this.getInitialSearch()) {\n this.clearInitialSearch();\n } else {\n m.redraw();\n }\n }\n\n /**\n * Redirect to the index page without a search filter. This is called when the\n * 'x' is clicked in the search box in the header.\n */\n protected clearInitialSearch() {\n const { q, ...params } = this.params();\n\n setRouteWithForcedRefresh(app.route(app.current.get('routeName'), params));\n }\n\n /**\n * Get URL parameters that stick between filter changes.\n *\n * This can be used to generate a link that clears filters.\n */\n stickyParams(): SearchParams {\n return {\n sort: m.route.param('sort'),\n q: m.route.param('q'),\n };\n }\n\n /**\n * Get parameters to be used in the current page.\n */\n params(): SearchParams {\n const params = this.stickyParams();\n\n params.filter = m.route.param('filter');\n\n return params;\n }\n\n /**\n * Redirect to the index page using the given sort parameter.\n */\n changeSort(sort: string) {\n const params = this.params();\n\n if (sort === Object.keys(app.discussions.sortMap())[0]) {\n delete params.sort;\n } else {\n params.sort = sort;\n }\n\n setRouteWithForcedRefresh(app.route(app.current.get('routeName'), params));\n }\n}\n","/**\n * @see https://stackoverflow.com/a/31732310\n */\nexport default function isSafariMobile(): boolean {\n return (\n 'ontouchstart' in window &&\n navigator.vendor != null &&\n navigator.vendor.includes('Apple') &&\n navigator.userAgent != null &&\n !navigator.userAgent.includes('CriOS') &&\n !navigator.userAgent.includes('FxiOS')\n );\n}\n","import app from './app';\n\nimport History from './utils/History';\nimport Pane from './utils/Pane';\nimport DiscussionPage from './components/DiscussionPage';\nimport SignUpModal from './components/SignUpModal';\nimport HeaderPrimary from './components/HeaderPrimary';\nimport HeaderSecondary from './components/HeaderSecondary';\nimport Composer from './components/Composer';\nimport DiscussionRenamedNotification from './components/DiscussionRenamedNotification';\nimport CommentPost from './components/CommentPost';\nimport DiscussionRenamedPost from './components/DiscussionRenamedPost';\nimport routes, { ForumRoutes, makeRouteHelpers } from './routes';\nimport alertEmailConfirmation from './utils/alertEmailConfirmation';\nimport Application, { ApplicationData } from '../common/Application';\nimport Navigation from '../common/components/Navigation';\nimport NotificationListState from './states/NotificationListState';\nimport GlobalSearchState from './states/GlobalSearchState';\nimport DiscussionListState from './states/DiscussionListState';\nimport ComposerState from './states/ComposerState';\nimport isSafariMobile from './utils/isSafariMobile';\n\nimport type Notification from './components/Notification';\nimport type Post from './components/Post';\nimport type Discussion from '../common/models/Discussion';\nimport type NotificationModel from '../common/models/Notification';\nimport type PostModel from '../common/models/Post';\nimport extractText from '../common/utils/extractText';\n\nexport interface ForumApplicationData extends ApplicationData {}\n\nexport default class ForumApplication extends Application {\n /**\n * A map of notification types to their components.\n */\n notificationComponents: Record<string, ComponentClass<{ notification: NotificationModel }, Notification<{ notification: NotificationModel }>>> = {\n discussionRenamed: DiscussionRenamedNotification,\n };\n\n /**\n * A map of post types to their components.\n */\n postComponents: Record<string, ComponentClass<{ post: PostModel }, Post<{ post: PostModel }>>> = {\n comment: CommentPost,\n discussionRenamed: DiscussionRenamedPost,\n };\n\n /**\n * An object which controls the state of the page's side pane.\n */\n pane: Pane | null = null;\n\n /**\n * The app's history stack, which keeps track of which routes the user visits\n * so that they can easily navigate back to the previous route.\n */\n history: History = new History();\n\n /**\n * An object which controls the state of the user's notifications.\n */\n notifications: NotificationListState = new NotificationListState();\n\n /**\n * An object which stores previously searched queries and provides convenient\n * tools for retrieving and managing search values.\n */\n search: GlobalSearchState = new GlobalSearchState();\n\n /**\n * An object which controls the state of the composer.\n */\n composer: ComposerState = new ComposerState();\n\n /**\n * An object which controls the state of the cached discussion list, which\n * is used in the index page and the slideout pane.\n */\n discussions: DiscussionListState = new DiscussionListState({});\n\n route: typeof Application.prototype.route & ForumRoutes;\n\n data!: ForumApplicationData;\n\n constructor() {\n super();\n\n routes(this);\n\n this.route = Object.assign((Object.getPrototypeOf(Object.getPrototypeOf(this)) as Application).route.bind(this), makeRouteHelpers(this));\n }\n\n /**\n * @inheritdoc\n */\n mount() {\n // Get the configured default route and update that route's path to be '/'.\n // Push the homepage as the first route, so that the user will always be\n // able to click on the 'back' button to go home, regardless of which page\n // they started on.\n const defaultRoute = this.forum.attribute('defaultRoute');\n let defaultAction = 'index';\n\n for (const i in this.routes) {\n if (this.routes[i].path === defaultRoute) defaultAction = i;\n }\n\n this.routes[defaultAction].path = '/';\n this.history.push(defaultAction, extractText(this.translator.trans('core.forum.header.back_to_index_tooltip')), '/');\n\n this.pane = new Pane(document.getElementById('app'));\n\n m.route.prefix = '';\n super.mount(this.forum.attribute('basePath'));\n\n // We mount navigation and header components after the page, so components\n // like the back button can access the updated state when rendering.\n m.mount(document.getElementById('app-navigation')!, { view: () => <Navigation className=\"App-backControl\" drawer /> });\n m.mount(document.getElementById('header-navigation')!, Navigation);\n m.mount(document.getElementById('header-primary')!, HeaderPrimary);\n m.mount(document.getElementById('header-secondary')!, HeaderSecondary);\n m.mount(document.getElementById('composer')!, { view: () => <Composer state={this.composer} /> });\n\n alertEmailConfirmation(this);\n\n // Route the home link back home when clicked. We do not want it to register\n // if the user is opening it in a new tab, however.\n document.getElementById('home-link')!.addEventListener('click', (e) => {\n if (e.ctrlKey || e.metaKey || e.button === 1) return;\n e.preventDefault();\n app.history.home();\n\n // Reload the current user so that their unread notification count is refreshed.\n const userId = app.session.user?.id();\n if (userId) {\n app.store.find('users', userId);\n m.redraw();\n }\n });\n\n if (isSafariMobile()) {\n $(() => {\n $('.App').addClass('mobile-safari');\n });\n }\n }\n\n /**\n * Check whether or not the user is currently viewing a discussion.\n */\n public viewingDiscussion(discussion: Discussion): boolean {\n return this.current.matches(DiscussionPage, { discussion });\n }\n\n /**\n * Callback for when an external authenticator (social login) action has\n * completed.\n *\n * If the payload indicates that the user has been logged in, then the page\n * will be reloaded. Otherwise, a SignUpModal will be opened, prefilled\n * with the provided details.\n */\n public authenticationComplete(payload: Record<string, unknown>): void {\n if (payload.loggedIn) {\n window.location.reload();\n } else {\n this.modal.show(SignUpModal, payload);\n }\n }\n}\n","import Forum from './ForumApplication';\n\nconst app = new Forum();\n\n// @ts-expect-error We need to do this for backwards compatibility purposes.\nwindow.app = app;\n\nexport default app;\n","import IExtender, { IExtensionModule } from './IExtender';\nimport Application from '../Application';\nimport ActualModel from '../Model';\n\nexport default class Model implements IExtender {\n private readonly model: { new (): ActualModel };\n private callbacks: Array<() => void> = [];\n\n public constructor(model: { new (): ActualModel }) {\n this.model = model;\n }\n\n public attribute<T, O = unknown>(name: string, transform: ((attr: O) => T) | null = null): Model {\n this.callbacks.push(() => {\n this.model.prototype[name] = transform ? ActualModel.attribute<T, O>(name, transform) : ActualModel.attribute<T>(name);\n });\n\n return this;\n }\n\n public hasOne<M extends ActualModel>(name: string): Model {\n this.callbacks.push(() => {\n this.model.prototype[name] = ActualModel.hasOne<M>(name);\n });\n\n return this;\n }\n\n public hasMany<M extends ActualModel>(name: string): Model {\n this.callbacks.push(() => {\n this.model.prototype[name] = ActualModel.hasMany<M>(name);\n });\n\n return this;\n }\n\n extend(app: Application, extension: IExtensionModule): void {\n for (const callback of this.callbacks) {\n callback.call(this);\n }\n }\n}\n","import IExtender, { IExtensionModule } from './IExtender';\nimport Application from '../Application';\nimport ForumApplication from '../../forum/ForumApplication';\n\nexport default class PostTypes implements IExtender {\n private postComponents: Record<string, any> = {};\n\n /**\n * Register a new post component type.\n * Usually used for event posts.\n *\n * @param name The name of the post type.\n * @param component The component class to render the post.\n */\n add(name: string, component: any): PostTypes {\n this.postComponents[name] = component;\n\n return this;\n }\n\n extend(app: Application, extension: IExtensionModule): void {\n Object.assign((app as unknown as ForumApplication).postComponents, this.postComponents);\n }\n}\n","import Application, { FlarumGenericRoute } from '../Application';\nimport IExtender, { IExtensionModule } from './IExtender';\n\ntype HelperRoute = (...args: any) => string;\n\nexport default class Routes implements IExtender {\n private routes: Record<string, FlarumGenericRoute> = {};\n private helpers: Record<string, HelperRoute> = {};\n\n /**\n * Add a mithril route to the application.\n *\n * @param name The name of the route.\n * @param path The path of the route.\n * @param component must extend `Page` component.\n */\n add(name: string, path: `/${string}`, component: any): Routes {\n this.routes[name] = { path, component };\n\n return this;\n }\n\n helper(name: string, callback: HelperRoute): Routes {\n this.helpers[name] = callback;\n\n return this;\n }\n\n extend(app: Application, extension: IExtensionModule) {\n Object.assign(app.routes, this.routes);\n Object.assign(app.route, this.helpers);\n }\n}\n","import Application from '../Application';\nimport IExtender, { IExtensionModule } from './IExtender';\nimport Model from '../Model';\n\nexport default class Store implements IExtender {\n private readonly models: { [type: string]: { new (): Model } } = {};\n\n public add(type: string, model: { new (): Model }): Store {\n this.models[type] = model;\n\n return this;\n }\n\n extend(app: Application, extension: IExtensionModule): void {\n for (const type in this.models) {\n if (app.store.models[type]) {\n throw new Error(`The model type \"${type}\" has already been registered with the class \"${app.store.models[type].name}\".`);\n }\n\n app.store.models[type] = this.models[type];\n }\n }\n}\n","import Model from './Model';\nimport PostTypes from './PostTypes';\nimport Routes from './Routes';\nimport Store from './Store';\n\nexport default {\n Model,\n PostTypes,\n Routes,\n Store,\n};\n","import { fireDeprecationWarning } from '../helpers/fireDebugWarning';\n\nconst deprecatedNotice = 'The `evented` util is deprecated and no longer supported.';\nconst deprecationIssueId = '2547';\n\n/**\n * The `evented` mixin provides methods allowing an object to trigger events,\n * running externally registered event handlers.\n *\n * @deprecated v1.2, to be removed in v2.0\n */\nexport default {\n /**\n * Arrays of registered event handlers, grouped by the event name.\n *\n * @type {Record<string, unknown>}\n * @protected\n *\n * @deprecated\n */\n handlers: null,\n\n /**\n * Get all of the registered handlers for an event.\n *\n * @param {string} event The name of the event.\n * @return {Function[]}\n * @protected\n *\n * @deprecated\n */\n getHandlers(event) {\n fireDeprecationWarning(deprecatedNotice, deprecationIssueId);\n\n this.handlers = this.handlers || {};\n\n this.handlers[event] = this.handlers[event] || [];\n\n return this.handlers[event];\n },\n\n /**\n * Trigger an event.\n *\n * @param {string} event The name of the event.\n * @param {any[]} args Arguments to pass to event handlers.\n *\n * @deprecated\n */\n trigger(event, ...args) {\n fireDeprecationWarning(deprecatedNotice, deprecationIssueId);\n\n this.getHandlers(event).forEach((handler) => handler.apply(this, args));\n },\n\n /**\n * Register an event handler.\n *\n * @param {string} event The name of the event.\n * @param {Function} handler The function to handle the event.\n *\n * @deprecated\n */\n on(event, handler) {\n fireDeprecationWarning(deprecatedNotice, deprecationIssueId);\n\n this.getHandlers(event).push(handler);\n },\n\n /**\n * Register an event handler so that it will run only once, and then\n * unregister itself.\n *\n * @param {string} event The name of the event.\n * @param {Function} handler The function to handle the event.\n *\n * @deprecated\n */\n one(event, handler) {\n fireDeprecationWarning(deprecatedNotice, deprecationIssueId);\n\n const wrapper = function () {\n handler.apply(this, arguments);\n\n this.off(event, wrapper);\n };\n\n this.getHandlers(event).push(wrapper);\n },\n\n /**\n * Unregister an event handler.\n *\n * @param {string} event The name of the event.\n * @param {Function} handler The function that handles the event.\n *\n * @deprecated\n */\n off(event, handler) {\n fireDeprecationWarning(deprecatedNotice, deprecationIssueId);\n\n const handlers = this.getHandlers(event);\n const index = handlers.indexOf(handler);\n\n if (index !== -1) {\n handlers.splice(index, 1);\n }\n },\n};\n","/*\n * Original Copyright GitHub, Inc. Licensed under the MIT License.\n * See license text at https://github.com/github/markdown-toolbar-element/blob/master/LICENSE.\n */\n\nimport insertText, { SelectionRange } from './insertText';\n\ninterface StyleArgs {\n prefix: string;\n suffix: string;\n blockPrefix: string;\n blockSuffix: string;\n multiline: boolean;\n replaceNext: string;\n prefixSpace: boolean;\n scanFor: string;\n surroundWithNewlines: boolean;\n orderedList: boolean;\n unorderedList: boolean;\n trimFirst: boolean;\n}\n\nconst defaults: StyleArgs = {\n prefix: '',\n suffix: '',\n blockPrefix: '',\n blockSuffix: '',\n multiline: false,\n replaceNext: '',\n prefixSpace: false,\n scanFor: '',\n surroundWithNewlines: false,\n orderedList: false,\n unorderedList: false,\n trimFirst: false,\n};\n\nexport default function styleSelectedText(textarea: HTMLTextAreaElement, styleArgs: StyleArgs) {\n // Next 2 lines are added\n textarea.focus();\n styleArgs = Object.assign({}, defaults, styleArgs);\n // Prev 2 lines are added\n const text = textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);\n\n let result;\n if (styleArgs.orderedList || styleArgs.unorderedList) {\n result = listStyle(textarea, styleArgs);\n } else if (styleArgs.multiline && isMultipleLines(text)) {\n result = multilineStyle(textarea, styleArgs);\n } else {\n result = blockStyle(textarea, styleArgs);\n }\n\n insertText(textarea, result);\n}\n\nfunction isMultipleLines(string: string): boolean {\n return string.trim().split('\\n').length > 1;\n}\n\nfunction repeat(string: string, n: number): string {\n return Array(n + 1).join(string);\n}\n\nfunction wordSelectionStart(text: string, i: number): number {\n let index = i;\n while (text[index] && text[index - 1] != null && !text[index - 1].match(/\\s/)) {\n index--;\n }\n return index;\n}\n\nfunction wordSelectionEnd(text: string, i: number, multiline: boolean): number {\n let index = i;\n const breakpoint = multiline ? /\\n/ : /\\s/;\n while (text[index] && !text[index].match(breakpoint)) {\n index++;\n }\n return index;\n}\n\nfunction expandSelectionToLine(textarea: HTMLTextAreaElement) {\n const lines = textarea.value.split('\\n');\n let counter = 0;\n for (let index = 0; index < lines.length; index++) {\n const lineLength = lines[index].length + 1;\n if (textarea.selectionStart >= counter && textarea.selectionStart < counter + lineLength) {\n textarea.selectionStart = counter;\n }\n if (textarea.selectionEnd >= counter && textarea.selectionEnd < counter + lineLength) {\n textarea.selectionEnd = counter + lineLength - 1;\n }\n counter += lineLength;\n }\n}\n\nfunction expandSelectedText(textarea: HTMLTextAreaElement, prefixToUse: string, suffixToUse: string, multiline = false): string {\n if (textarea.selectionStart === textarea.selectionEnd) {\n textarea.selectionStart = wordSelectionStart(textarea.value, textarea.selectionStart);\n textarea.selectionEnd = wordSelectionEnd(textarea.value, textarea.selectionEnd, multiline);\n } else {\n const expandedSelectionStart = textarea.selectionStart - prefixToUse.length;\n const expandedSelectionEnd = textarea.selectionEnd + suffixToUse.length;\n const beginsWithPrefix = textarea.value.slice(expandedSelectionStart, textarea.selectionStart) === prefixToUse;\n const endsWithSuffix = textarea.value.slice(textarea.selectionEnd, expandedSelectionEnd) === suffixToUse;\n if (beginsWithPrefix && endsWithSuffix) {\n textarea.selectionStart = expandedSelectionStart;\n textarea.selectionEnd = expandedSelectionEnd;\n }\n }\n return textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);\n}\n\ninterface Newlines {\n newlinesToAppend: string;\n newlinesToPrepend: string;\n}\n\nfunction newlinesToSurroundSelectedText(textarea: HTMLTextAreaElement): Newlines {\n const beforeSelection = textarea.value.slice(0, textarea.selectionStart);\n const afterSelection = textarea.value.slice(textarea.selectionEnd);\n\n const breaksBefore = beforeSelection.match(/\\n*$/);\n const breaksAfter = afterSelection.match(/^\\n*/);\n const newlinesBeforeSelection = breaksBefore ? breaksBefore[0].length : 0;\n const newlinesAfterSelection = breaksAfter ? breaksAfter[0].length : 0;\n\n let newlinesToAppend;\n let newlinesToPrepend;\n\n if (beforeSelection.match(/\\S/) && newlinesBeforeSelection < 2) {\n newlinesToAppend = repeat('\\n', 2 - newlinesBeforeSelection);\n }\n\n if (afterSelection.match(/\\S/) && newlinesAfterSelection < 2) {\n newlinesToPrepend = repeat('\\n', 2 - newlinesAfterSelection);\n }\n\n if (newlinesToAppend == null) {\n newlinesToAppend = '';\n }\n\n if (newlinesToPrepend == null) {\n newlinesToPrepend = '';\n }\n\n return { newlinesToAppend, newlinesToPrepend };\n}\n\nfunction blockStyle(textarea: HTMLTextAreaElement, arg: StyleArgs): SelectionRange {\n let newlinesToAppend;\n let newlinesToPrepend;\n\n const { prefix, suffix, blockPrefix, blockSuffix, replaceNext, prefixSpace, scanFor, surroundWithNewlines } = arg;\n const originalSelectionStart = textarea.selectionStart;\n const originalSelectionEnd = textarea.selectionEnd;\n\n let selectedText = textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);\n let prefixToUse = isMultipleLines(selectedText) && blockPrefix.length > 0 ? `${blockPrefix}\\n` : prefix;\n // CHANGED\n let suffixToUse = isMultipleLines(selectedText) && blockSuffix.length > 0 ? `\\n${blockSuffix}` : prefixToUse === prefix ? suffix : '';\n // END CHANGED\n\n if (prefixSpace) {\n const beforeSelection = textarea.value[textarea.selectionStart - 1];\n if (textarea.selectionStart !== 0 && beforeSelection != null && !beforeSelection.match(/\\s/)) {\n prefixToUse = ` ${prefixToUse}`;\n }\n }\n selectedText = expandSelectedText(textarea, prefixToUse, suffixToUse, arg.multiline);\n let selectionStart = textarea.selectionStart;\n let selectionEnd = textarea.selectionEnd;\n const hasReplaceNext = replaceNext.length > 0 && suffixToUse.indexOf(replaceNext) > -1 && selectedText.length > 0;\n if (surroundWithNewlines) {\n const ref = newlinesToSurroundSelectedText(textarea);\n newlinesToAppend = ref.newlinesToAppend;\n newlinesToPrepend = ref.newlinesToPrepend;\n prefixToUse = newlinesToAppend + prefix;\n suffixToUse += newlinesToPrepend;\n }\n\n if (selectedText.startsWith(prefixToUse) && selectedText.endsWith(suffixToUse)) {\n const replacementText = selectedText.slice(prefixToUse.length, selectedText.length - suffixToUse.length);\n if (originalSelectionStart === originalSelectionEnd) {\n let position = originalSelectionStart - prefixToUse.length;\n position = Math.max(position, selectionStart);\n position = Math.min(position, selectionStart + replacementText.length);\n selectionStart = selectionEnd = position;\n } else {\n selectionEnd = selectionStart + replacementText.length;\n }\n return { text: replacementText, selectionStart, selectionEnd };\n } else if (!hasReplaceNext) {\n let replacementText = prefixToUse + selectedText + suffixToUse;\n selectionStart = originalSelectionStart + prefixToUse.length;\n selectionEnd = originalSelectionEnd + prefixToUse.length;\n const whitespaceEdges = selectedText.match(/^\\s*|\\s*$/g);\n if (arg.trimFirst && whitespaceEdges) {\n const leadingWhitespace = whitespaceEdges[0] || '';\n const trailingWhitespace = whitespaceEdges[1] || '';\n replacementText = leadingWhitespace + prefixToUse + selectedText.trim() + suffixToUse + trailingWhitespace;\n selectionStart += leadingWhitespace.length;\n selectionEnd -= trailingWhitespace.length;\n }\n return { text: replacementText, selectionStart, selectionEnd };\n } else if (scanFor.length > 0 && selectedText.match(scanFor)) {\n suffixToUse = suffixToUse.replace(replaceNext, selectedText);\n const replacementText = prefixToUse + suffixToUse;\n selectionStart = selectionEnd = selectionStart + prefixToUse.length;\n return { text: replacementText, selectionStart, selectionEnd };\n } else {\n const replacementText = prefixToUse + selectedText + suffixToUse;\n selectionStart = selectionStart + prefixToUse.length + selectedText.length + suffixToUse.indexOf(replaceNext);\n selectionEnd = selectionStart + replaceNext.length;\n return { text: replacementText, selectionStart, selectionEnd };\n }\n}\n\nfunction multilineStyle(textarea: HTMLTextAreaElement, arg: StyleArgs) {\n const { prefix, suffix, blockPrefix, blockSuffix, surroundWithNewlines } = arg;\n let text = textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);\n let selectionStart = textarea.selectionStart;\n let selectionEnd = textarea.selectionEnd;\n const lines = text.split('\\n');\n // CHANGED\n let prefixToUse = blockPrefix.length > 0 ? blockPrefix : prefix;\n let suffixToUse = blockSuffix.length > 0 ? blockSuffix : prefixToUse == prefix ? suffix : '';\n const undoStyle = lines.every((line) => line.startsWith(prefixToUse) && line.endsWith(suffixToUse));\n // END CHANGED\n\n if (undoStyle) {\n text = lines.map((line) => line.slice(prefixToUse.length, line.length - suffixToUse.length)).join('\\n');\n selectionEnd = selectionStart + text.length;\n } else {\n // CHANGED\n text = lines.map((line) => prefixToUse + line + suffixToUse).join('\\n');\n if (surroundWithNewlines || suffixToUse === '') {\n // END CHANGED\n const { newlinesToAppend, newlinesToPrepend } = newlinesToSurroundSelectedText(textarea);\n selectionStart += newlinesToAppend.length;\n selectionEnd = selectionStart + text.length;\n text = newlinesToAppend + text + newlinesToPrepend;\n }\n }\n\n return { text, selectionStart, selectionEnd };\n}\n\ninterface UndoResult {\n text: string;\n processed: boolean;\n}\nfunction undoOrderedListStyle(text: string): UndoResult {\n const lines = text.split('\\n');\n const orderedListRegex = /^\\d+\\.\\s+/;\n const shouldUndoOrderedList = lines.every((line) => orderedListRegex.test(line));\n let result = lines;\n if (shouldUndoOrderedList) {\n result = lines.map((line) => line.replace(orderedListRegex, ''));\n }\n\n return {\n text: result.join('\\n'),\n processed: shouldUndoOrderedList,\n };\n}\n\nfunction undoUnorderedListStyle(text: string): UndoResult {\n const lines = text.split('\\n');\n const unorderedListPrefix = '- ';\n const shouldUndoUnorderedList = lines.every((line) => line.startsWith(unorderedListPrefix));\n let result = lines;\n if (shouldUndoUnorderedList) {\n result = lines.map((line) => line.slice(unorderedListPrefix.length, line.length));\n }\n\n return {\n text: result.join('\\n'),\n processed: shouldUndoUnorderedList,\n };\n}\n\nfunction makePrefix(index: number, unorderedList: boolean): string {\n if (unorderedList) {\n return '- ';\n } else {\n return `${index + 1}. `;\n }\n}\n\nfunction clearExistingListStyle(style: StyleArgs, selectedText: string): [UndoResult, UndoResult, string] {\n let undoResultOpositeList: UndoResult;\n let undoResult: UndoResult;\n let pristineText;\n if (style.orderedList) {\n undoResult = undoOrderedListStyle(selectedText);\n undoResultOpositeList = undoUnorderedListStyle(undoResult.text);\n pristineText = undoResultOpositeList.text;\n } else {\n undoResult = undoUnorderedListStyle(selectedText);\n undoResultOpositeList = undoOrderedListStyle(undoResult.text);\n pristineText = undoResultOpositeList.text;\n }\n return [undoResult, undoResultOpositeList, pristineText];\n}\n\nfunction listStyle(textarea: HTMLTextAreaElement, style: StyleArgs): SelectionRange {\n const noInitialSelection = textarea.selectionStart === textarea.selectionEnd;\n let selectionStart = textarea.selectionStart;\n let selectionEnd = textarea.selectionEnd;\n\n // Select whole line\n expandSelectionToLine(textarea);\n\n const selectedText = textarea.value.slice(textarea.selectionStart, textarea.selectionEnd);\n\n // If the user intent was to do an undo, we will stop after this.\n // Otherwise, we will still undo to other list type to prevent list stacking\n const [undoResult, undoResultOpositeList, pristineText] = clearExistingListStyle(style, selectedText);\n\n const prefixedLines = pristineText.split('\\n').map((value, index) => {\n return `${makePrefix(index, style.unorderedList)}${value}`;\n });\n\n const totalPrefixLength = prefixedLines.reduce((previousValue, _currentValue, currentIndex) => {\n return previousValue + makePrefix(currentIndex, style.unorderedList).length;\n }, 0);\n\n const totalPrefixLengthOpositeList = prefixedLines.reduce((previousValue, _currentValue, currentIndex) => {\n return previousValue + makePrefix(currentIndex, !style.unorderedList).length;\n }, 0);\n\n if (undoResult.processed) {\n if (noInitialSelection) {\n selectionStart = Math.max(selectionStart - makePrefix(0, style.unorderedList).length, 0);\n selectionEnd = selectionStart;\n } else {\n selectionStart = textarea.selectionStart;\n selectionEnd = textarea.selectionEnd - totalPrefixLength;\n }\n return { text: pristineText, selectionStart, selectionEnd };\n }\n\n const { newlinesToAppend, newlinesToPrepend } = newlinesToSurroundSelectedText(textarea);\n const text = newlinesToAppend + prefixedLines.join('\\n') + newlinesToPrepend;\n\n if (noInitialSelection) {\n selectionStart = Math.max(selectionStart + makePrefix(0, style.unorderedList).length + newlinesToAppend.length, 0);\n selectionEnd = selectionStart;\n } else {\n if (undoResultOpositeList.processed) {\n selectionStart = Math.max(textarea.selectionStart + newlinesToAppend.length, 0);\n selectionEnd = textarea.selectionEnd + newlinesToAppend.length + totalPrefixLength - totalPrefixLengthOpositeList;\n } else {\n selectionStart = Math.max(textarea.selectionStart + newlinesToAppend.length, 0);\n selectionEnd = textarea.selectionEnd + newlinesToAppend.length + totalPrefixLength;\n }\n }\n\n return { text, selectionStart, selectionEnd };\n}\n","export default function proxifyCompat(compat: Record<string, unknown>, namespace: string) {\n // regex to replace common/ and NAMESPACE/ for core & core extensions\n // and remove .js, .ts and .tsx extensions\n // e.g. admin/utils/extract --> utils/extract\n // e.g. tags/common/utils/sortTags --> tags/utils/sortTags\n const regex = new RegExp(String.raw`(\\w+\\/)?(${namespace}|common)\\/`);\n const fileExt = /(\\.js|\\.tsx?)$/;\n\n return new Proxy(compat, {\n get: (obj, prop: string) => obj[prop] || obj[prop.replace(regex, '$1').replace(fileExt, '')],\n });\n}\n","export default function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n strings.raw = raw;\n return strings;\n}","import Component from '../Component';\nimport icon from '../helpers/icon';\nimport withAttr from '../utils/withAttr';\nimport classList from '../utils/classList';\n\n/**\n * The `Select` component displays a <select> input, surrounded with some extra\n * elements for styling. It accepts the following attrs:\n *\n * - `options` A map of option values to labels.\n * - `onchange` A callback to run when the selected value is changed.\n * - `value` The value of the selected option.\n * - `disabled` Disabled state for the input.\n * - `wrapperAttrs` A map of attrs to be passed to the DOM element wrapping the `<select>`\n *\n * Other attributes are passed directly to the `<select>` element rendered to the DOM.\n */\nexport default class Select extends Component {\n view() {\n const {\n options,\n onchange,\n value,\n disabled,\n className,\n class: _class,\n\n // Destructure the `wrapperAttrs` object to extract the `className` for passing to `classList()`\n // `= {}` prevents errors when `wrapperAttrs` is undefined\n wrapperAttrs: { className: wrapperClassName, class: wrapperClass, ...wrapperAttrs } = {},\n\n ...domAttrs\n } = this.attrs;\n\n return (\n <span className={classList('Select', wrapperClassName, wrapperClass)} {...wrapperAttrs}>\n <select\n className={classList('Select-input FormControl', className, _class)}\n onchange={onchange ? withAttr('value', onchange.bind(this)) : undefined}\n value={value}\n disabled={disabled}\n {...domAttrs}\n >\n {Object.keys(options).map((key) => (\n <option value={key}>{options[key]}</option>\n ))}\n </select>\n {icon('fas fa-sort', { className: 'Select-caret' })}\n </span>\n );\n }\n}\n","import type Mithril from 'mithril';\n\nimport Component, { ComponentAttrs } from '../Component';\nimport classList from '../utils/classList';\nimport icon from '../helpers/icon';\n\nexport default class ColorPreviewInput extends Component {\n view(vnode: Mithril.Vnode<ComponentAttrs, this>) {\n const { className, id, ...attrs } = this.attrs;\n\n attrs.type ||= 'text';\n\n // If the input is a 3 digit hex code, convert it to 6 digits.\n if (attrs.value.length === 4) {\n attrs.value = attrs.value.replace(/#([a-f0-9])([a-f0-9])([a-f0-9])/, '#$1$1$2$2$3$3');\n }\n\n return (\n <div className=\"ColorInput\">\n <input className={classList('FormControl', className)} id={id} {...attrs} />\n\n <span className=\"ColorInput-icon\" role=\"presentation\">\n {icon('fas fa-exclamation-circle')}\n </span>\n\n <input className=\"ColorInput-preview\" {...attrs} type=\"color\" />\n </div>\n );\n }\n}\n","import extractText from '../utils/extractText';\nimport Button from './Button';\nimport Tooltip from './Tooltip';\n\n/**\n * The `TextEditorButton` component displays a button suitable for the text\n * editor toolbar.\n *\n * Automatically creates tooltips using the Tooltip component and provided text.\n *\n * ## Attrs\n * - `title` - Tooltip for the button\n */\nexport default class TextEditorButton extends Button {\n view(vnode) {\n const originalView = super.view(vnode);\n\n return <Tooltip text={this.attrs.tooltipText || extractText(vnode.children)}>{originalView}</Tooltip>;\n }\n\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.className = attrs.className || 'Button Button--icon Button--link';\n attrs.tooltipText = attrs.title;\n }\n}\n","import * as extend from './extend';\nimport extenders from './extenders';\nimport Session from './Session';\nimport Store from './Store';\nimport BasicEditorDriver from './utils/BasicEditorDriver';\nimport evented from './utils/evented';\nimport EventEmitter from './utils/EventEmitter';\nimport KeyboardNavigatable from './utils/KeyboardNavigatable';\nimport liveHumanTimes from './utils/liveHumanTimes';\nimport ItemList from './utils/ItemList';\nimport mixin from './utils/mixin';\nimport humanTime from './utils/humanTime';\nimport computed from './utils/computed';\nimport insertText from './utils/insertText';\nimport styleSelectedText from './utils/styleSelectedText';\nimport Drawer from './utils/Drawer';\nimport anchorScroll from './utils/anchorScroll';\nimport RequestError from './utils/RequestError';\nimport abbreviateNumber from './utils/abbreviateNumber';\nimport escapeRegExp from './utils/escapeRegExp';\nimport * as string from './utils/string';\nimport * as ThrottleDebounce from './utils/throttleDebounce';\nimport Stream from './utils/Stream';\nimport SubtreeRetainer from './utils/SubtreeRetainer';\nimport setRouteWithForcedRefresh from './utils/setRouteWithForcedRefresh';\nimport extract from './utils/extract';\nimport ScrollListener from './utils/ScrollListener';\nimport stringToColor from './utils/stringToColor';\nimport subclassOf from './utils/subclassOf';\nimport patchMithril from './utils/patchMithril';\nimport proxifyCompat from './utils/proxifyCompat';\nimport classList from './utils/classList';\nimport extractText from './utils/extractText';\nimport formatNumber from './utils/formatNumber';\nimport mapRoutes from './utils/mapRoutes';\nimport withAttr from './utils/withAttr';\nimport * as FocusTrap from './utils/focusTrap';\nimport isDark from './utils/isDark';\nimport Notification from './models/Notification';\nimport User from './models/User';\nimport Post from './models/Post';\nimport Discussion from './models/Discussion';\nimport Group from './models/Group';\nimport Forum from './models/Forum';\nimport Component from './Component';\nimport Translator from './Translator';\nimport AlertManager from './components/AlertManager';\nimport Page from './components/Page';\nimport Switch from './components/Switch';\nimport Badge from './components/Badge';\nimport LoadingIndicator from './components/LoadingIndicator';\nimport Placeholder from './components/Placeholder';\nimport Separator from './components/Separator';\nimport Dropdown from './components/Dropdown';\nimport SplitDropdown from './components/SplitDropdown';\nimport RequestErrorModal from './components/RequestErrorModal';\nimport FieldSet from './components/FieldSet';\nimport Select from './components/Select';\nimport Navigation from './components/Navigation';\nimport Alert from './components/Alert';\nimport Link from './components/Link';\nimport LinkButton from './components/LinkButton';\nimport Checkbox from './components/Checkbox';\nimport ColorPreviewInput from './components/ColorPreviewInput';\nimport SelectDropdown from './components/SelectDropdown';\nimport ModalManager from './components/ModalManager';\nimport Button from './components/Button';\nimport Modal from './components/Modal';\nimport GroupBadge from './components/GroupBadge';\nimport TextEditor from './components/TextEditor';\nimport TextEditorButton from './components/TextEditorButton';\nimport EditUserModal from './components/EditUserModal';\nimport Tooltip from './components/Tooltip';\nimport Model from './Model';\nimport Application from './Application';\nimport fullTime from './helpers/fullTime';\nimport avatar from './helpers/avatar';\nimport icon from './helpers/icon';\nimport humanTimeHelper from './helpers/humanTime';\nimport punctuateSeries from './helpers/punctuateSeries';\nimport highlight from './helpers/highlight';\nimport username from './helpers/username';\nimport userOnline from './helpers/userOnline';\nimport listItems from './helpers/listItems';\nimport textContrastClass from './helpers/textContrastClass';\nimport Fragment from './Fragment';\nimport DefaultResolver from './resolvers/DefaultResolver';\nimport PaginatedListState from './states/PaginatedListState';\nimport isObject from './utils/isObject';\nimport AlertManagerState from './states/AlertManagerState';\nimport ModalManagerState from './states/ModalManagerState';\nimport PageState from './states/PageState';\nimport LabelValue from './components/LabelValue';\n\nexport default {\n extenders,\n extend: extend,\n Session: Session,\n Store: Store,\n 'utils/BasicEditorDriver': BasicEditorDriver,\n 'utils/evented': evented,\n 'utils/EventEmitter': EventEmitter,\n 'utils/KeyboardNavigatable': KeyboardNavigatable,\n 'utils/liveHumanTimes': liveHumanTimes,\n 'utils/ItemList': ItemList,\n 'utils/mixin': mixin,\n 'utils/humanTime': humanTime,\n 'utils/computed': computed,\n 'utils/insertText': insertText,\n 'utils/styleSelectedText': styleSelectedText,\n 'utils/Drawer': Drawer,\n 'utils/anchorScroll': anchorScroll,\n 'utils/RequestError': RequestError,\n 'utils/abbreviateNumber': abbreviateNumber,\n 'utils/string': string,\n 'utils/SubtreeRetainer': SubtreeRetainer,\n 'utils/escapeRegExp': escapeRegExp,\n 'utils/extract': extract,\n 'utils/ScrollListener': ScrollListener,\n 'utils/stringToColor': stringToColor,\n 'utils/Stream': Stream,\n 'utils/subclassOf': subclassOf,\n 'utils/setRouteWithForcedRefresh': setRouteWithForcedRefresh,\n 'utils/patchMithril': patchMithril,\n 'utils/proxifyCompat': proxifyCompat,\n 'utils/classList': classList,\n 'utils/extractText': extractText,\n 'utils/formatNumber': formatNumber,\n 'utils/mapRoutes': mapRoutes,\n 'utils/withAttr': withAttr,\n 'utils/throttleDebounce': ThrottleDebounce,\n 'utils/isObject': isObject,\n 'utils/focusTrap': FocusTrap,\n 'utils/isDark': isDark,\n 'models/Notification': Notification,\n 'models/User': User,\n 'models/Post': Post,\n 'models/Discussion': Discussion,\n 'models/Group': Group,\n 'models/Forum': Forum,\n Component: Component,\n Fragment: Fragment,\n Translator: Translator,\n 'components/AlertManager': AlertManager,\n 'components/Page': Page,\n 'components/Switch': Switch,\n 'components/Badge': Badge,\n 'components/LoadingIndicator': LoadingIndicator,\n 'components/Placeholder': Placeholder,\n 'components/Separator': Separator,\n 'components/Dropdown': Dropdown,\n 'components/SplitDropdown': SplitDropdown,\n 'components/RequestErrorModal': RequestErrorModal,\n 'components/FieldSet': FieldSet,\n 'components/Select': Select,\n 'components/Navigation': Navigation,\n 'components/Alert': Alert,\n 'components/Link': Link,\n 'components/LinkButton': LinkButton,\n 'components/Checkbox': Checkbox,\n 'components/ColorPreviewInput': ColorPreviewInput,\n 'components/SelectDropdown': SelectDropdown,\n 'components/ModalManager': ModalManager,\n 'components/Button': Button,\n 'components/Modal': Modal,\n 'components/GroupBadge': GroupBadge,\n 'components/TextEditor': TextEditor,\n 'components/TextEditorButton': TextEditorButton,\n 'components/Tooltip': Tooltip,\n 'components/EditUserModal': EditUserModal,\n 'components/LabelValue': LabelValue,\n Model: Model,\n Application: Application,\n 'helpers/fullTime': fullTime,\n 'helpers/avatar': avatar,\n 'helpers/icon': icon,\n 'helpers/humanTime': humanTimeHelper,\n 'helpers/punctuateSeries': punctuateSeries,\n 'helpers/highlight': highlight,\n 'helpers/username': username,\n 'helpers/userOnline': userOnline,\n 'helpers/listItems': listItems,\n 'helpers/textContrastClass': textContrastClass,\n 'resolvers/DefaultResolver': DefaultResolver,\n 'states/PaginatedListState': PaginatedListState,\n 'states/AlertManagerState': AlertManagerState,\n 'states/ModalManagerState': ModalManagerState,\n 'states/PageState': PageState,\n};\n","/**\n * The `mixin` utility assigns the properties of a set of 'mixin' objects to\n * the prototype of a parent object.\n *\n * @example\n * class MyClass extends mixin(ExistingClass, evented, etc) {}\n *\n * @param {object} Parent The class to extend the new class from.\n * @param {Record<string, any>[]} mixins The objects to mix in.\n * @return {object} A new class that extends Parent and contains the mixins.\n */\nexport default function mixin(Parent, ...mixins) {\n class Mixed extends Parent {}\n\n mixins.forEach((object) => {\n Object.assign(Mixed.prototype, object);\n });\n\n return Mixed;\n}\n","import type Mithril from 'mithril';\n\n/**\n * The `Fragment` class represents a chunk of DOM that is rendered once with Mithril and then takes\n * over control of its own DOM and lifecycle.\n *\n * This is very similar to the `Component` wrapper class, but is used for more fine-grained control over\n * the rendering and display of some significant chunks of the DOM. In contrast to components, fragments\n * do not offer Mithril's lifecycle hooks.\n *\n * Use this when you want to enjoy the benefits of JSX / VDOM for initial rendering, combined with\n * small helper methods that then make updates to that DOM directly, instead of fully redrawing\n * everything through Mithril.\n *\n * This should only be used when necessary, and only with `m.render`. If you are unsure whether you need\n * this or `Component, you probably need `Component`.\n */\nexport default abstract class Fragment {\n /**\n * The root DOM element for the fragment.\n */\n protected element!: Element;\n\n /**\n * Returns a jQuery object for this fragment's element. If you pass in a\n * selector string, this method will return a jQuery object, using the current\n * element as its buffer.\n *\n * For example, calling `fragment.$('li')` will return a jQuery object\n * containing all of the `li` elements inside the DOM element of this\n * fragment.\n *\n * @param [selector] a jQuery-compatible selector string\n * @returns the jQuery object for the DOM node\n * @final\n */\n public $(selector?: string): JQuery {\n const $element = $(this.element) as JQuery<HTMLElement>;\n\n return selector ? $element.find(selector) : $element;\n }\n\n /**\n * Get the renderable virtual DOM that represents the fragment's view.\n *\n * This should NOT be overridden by subclasses. Subclasses wishing to define\n * their virtual DOM should override Fragment#view instead.\n *\n * @example\n * const fragment = new MyFragment();\n * m.render(document.body, fragment.render());\n *\n * @final\n */\n public render(): Mithril.Vnode<Mithril.Attributes, this> {\n const vdom = this.view();\n\n vdom.attrs = vdom.attrs || {};\n\n const originalOnCreate = vdom.attrs.oncreate;\n\n vdom.attrs.oncreate = (vnode) => {\n this.element = vnode.dom;\n if (originalOnCreate) originalOnCreate.apply(this, [vnode]);\n };\n\n return vdom;\n }\n\n /**\n * Creates a view out of virtual elements.\n */\n abstract view(): Mithril.Vnode<Mithril.Attributes, this>;\n}\n","import app from '../../common/app';\n\n/**\n * The `punctuateSeries` helper formats a list of strings (e.g. names) to read\n * fluently in the application's locale.\n *\n * ```js\n * punctuateSeries(['Toby', 'Franz', 'Dominion']) // Toby, Franz, and Dominion\n * ```\n *\n * @param {import('mithril').Children[]} items\n * @return {import('mithril').Children}')}\n */\nexport default function punctuateSeries(items) {\n if (items.length === 2) {\n return app.translator.trans('core.lib.series.two_text', {\n first: items[0],\n second: items[1],\n });\n } else if (items.length >= 3) {\n // If there are three or more items, we will join all but the first and\n // last items with the equivalent of a comma, and then we will feed that\n // into the translator along with the first and last item.\n const second = items\n .slice(1, items.length - 1)\n .reduce((list, item) => list.concat([item, app.translator.trans('core.lib.series.glue_text')]), [])\n .slice(0, -1);\n\n return app.translator.trans('core.lib.series.three_text', {\n first: items[0],\n second,\n third: items[items.length - 1],\n });\n }\n\n return items;\n}\n","import app from '../../forum/app';\nimport Button from '../../common/components/Button';\nimport classList from '../../common/utils/classList';\n\n/**\n * The `LogInButton` component displays a social login button which will open\n * a popup window containing the specified path.\n *\n * ### Attrs\n *\n * - `path`\n */\nexport default class LogInButton extends Button {\n static initAttrs(attrs) {\n attrs.className = classList(attrs.className, 'LogInButton');\n\n attrs.onclick = function () {\n const width = 580;\n const height = 400;\n const $window = $(window);\n\n window.open(\n app.forum.attribute('baseUrl') + attrs.path,\n 'logInPopup',\n `width=${width},` +\n `height=${height},` +\n `top=${$window.height() / 2 - height / 2},` +\n `left=${$window.width() / 2 - width / 2},` +\n 'status=no,scrollbars=yes,resizable=no'\n );\n };\n\n super.initAttrs(attrs);\n }\n}\n","import app from '../../forum/app';\nimport Component from '../../common/Component';\nimport Link from '../../common/components/Link';\nimport avatar from '../../common/helpers/avatar';\nimport username from '../../common/helpers/username';\nimport highlight from '../../common/helpers/highlight';\n\n/**\n * The `PostPreview` component shows a link to a post containing the avatar and\n * username of the author, and a short excerpt of the post's content.\n *\n * ### Attrs\n *\n * - `post`\n */\nexport default class PostPreview extends Component {\n view() {\n const post = this.attrs.post;\n const user = post.user();\n const content = post.contentType() === 'comment' && post.contentPlain();\n const excerpt = content ? highlight(content, this.attrs.highlight, 300) : '';\n\n return (\n <Link className=\"PostPreview\" href={app.route.post(post)} onclick={this.attrs.onclick}>\n <span className=\"PostPreview-content\">\n {avatar(user)}\n {username(user)} <span className=\"PostPreview-excerpt\">{excerpt}</span>\n </span>\n </Link>\n );\n }\n}\n","import compat from '../common/compat';\n\nimport PostControls from './utils/PostControls';\nimport KeyboardNavigatable from '../common/utils/KeyboardNavigatable';\nimport slidable from './utils/slidable';\nimport History from './utils/History';\nimport DiscussionControls from './utils/DiscussionControls';\nimport alertEmailConfirmation from './utils/alertEmailConfirmation';\nimport UserControls from './utils/UserControls';\nimport Pane from './utils/Pane';\nimport ComposerState from './states/ComposerState';\nimport DiscussionListState from './states/DiscussionListState';\nimport GlobalSearchState from './states/GlobalSearchState';\nimport NotificationListState from './states/NotificationListState';\nimport PostStreamState from './states/PostStreamState';\nimport SearchState from './states/SearchState';\nimport UserSecurityPageState from './states/UserSecurityPageState';\nimport AffixedSidebar from './components/AffixedSidebar';\nimport DiscussionPage from './components/DiscussionPage';\nimport DiscussionListPane from './components/DiscussionListPane';\nimport LogInModal from './components/LogInModal';\nimport ComposerBody from './components/ComposerBody';\nimport ForgotPasswordModal from './components/ForgotPasswordModal';\nimport Notification from './components/Notification';\nimport LogInButton from './components/LogInButton';\nimport DiscussionsUserPage from './components/DiscussionsUserPage';\nimport Composer from './components/Composer';\nimport SessionDropdown from './components/SessionDropdown';\nimport HeaderPrimary from './components/HeaderPrimary';\nimport PostEdited from './components/PostEdited';\nimport PostStream from './components/PostStream';\nimport ChangePasswordModal from './components/ChangePasswordModal';\nimport IndexPage from './components/IndexPage';\nimport DiscussionRenamedNotification from './components/DiscussionRenamedNotification';\nimport DiscussionsSearchSource from './components/DiscussionsSearchSource';\nimport HeaderSecondary from './components/HeaderSecondary';\nimport ComposerButton from './components/ComposerButton';\nimport DiscussionList from './components/DiscussionList';\nimport ReplyPlaceholder from './components/ReplyPlaceholder';\nimport AvatarEditor from './components/AvatarEditor';\nimport Post from './components/Post';\nimport SettingsPage from './components/SettingsPage';\nimport TerminalPost from './components/TerminalPost';\nimport ChangeEmailModal from './components/ChangeEmailModal';\nimport NotificationsDropdown from './components/NotificationsDropdown';\nimport UserPage from './components/UserPage';\nimport PostUser from './components/PostUser';\nimport UserCard from './components/UserCard';\nimport UsersSearchSource from './components/UsersSearchSource';\nimport UserSecurityPage from './components/UserSecurityPage';\nimport NotificationGrid from './components/NotificationGrid';\nimport PostPreview from './components/PostPreview';\nimport EventPost from './components/EventPost';\nimport DiscussionHero from './components/DiscussionHero';\nimport PostMeta from './components/PostMeta';\nimport DiscussionRenamedPost from './components/DiscussionRenamedPost';\nimport DiscussionComposer from './components/DiscussionComposer';\nimport LogInButtons from './components/LogInButtons';\nimport NotificationList from './components/NotificationList';\nimport WelcomeHero from './components/WelcomeHero';\nimport SignUpModal from './components/SignUpModal';\nimport CommentPost from './components/CommentPost';\nimport ComposerPostPreview from './components/ComposerPostPreview';\nimport ReplyComposer from './components/ReplyComposer';\nimport NotificationsPage from './components/NotificationsPage';\nimport PostStreamScrubber from './components/PostStreamScrubber';\nimport EditPostComposer from './components/EditPostComposer';\nimport RenameDiscussionModal from './components/RenameDiscussionModal';\nimport Search from './components/Search';\nimport DiscussionListItem from './components/DiscussionListItem';\nimport LoadingPost from './components/LoadingPost';\nimport PostsUserPage from './components/PostsUserPage';\nimport DiscussionPageResolver from './resolvers/DiscussionPageResolver';\nimport BasicEditorDriver from '../common/utils/BasicEditorDriver';\nimport routes from './routes';\nimport ForumApplication from './ForumApplication';\nimport isSafariMobile from './utils/isSafariMobile';\nimport AccessTokensList from './components/AccessTokensList';\n\nexport default Object.assign(compat, {\n 'utils/PostControls': PostControls,\n // @deprecated import from 'flarum/common/utils/KeyboardNavigatable' instead\n 'utils/KeyboardNavigatable': KeyboardNavigatable,\n 'utils/slidable': slidable,\n 'utils/History': History,\n 'utils/DiscussionControls': DiscussionControls,\n 'utils/alertEmailConfirmation': alertEmailConfirmation,\n 'utils/UserControls': UserControls,\n 'utils/Pane': Pane,\n 'utils/BasicEditorDriver': BasicEditorDriver,\n 'utils/isSafariMobile': isSafariMobile,\n 'states/ComposerState': ComposerState,\n 'states/DiscussionListState': DiscussionListState,\n 'states/GlobalSearchState': GlobalSearchState,\n 'states/NotificationListState': NotificationListState,\n 'states/PostStreamState': PostStreamState,\n 'states/SearchState': SearchState,\n 'states/UserSecurityPageState': UserSecurityPageState,\n 'components/AffixedSidebar': AffixedSidebar,\n 'components/DiscussionPage': DiscussionPage,\n 'components/DiscussionListPane': DiscussionListPane,\n 'components/LogInModal': LogInModal,\n 'components/ComposerBody': ComposerBody,\n 'components/ForgotPasswordModal': ForgotPasswordModal,\n 'components/Notification': Notification,\n 'components/LogInButton': LogInButton,\n 'components/DiscussionsUserPage': DiscussionsUserPage,\n 'components/Composer': Composer,\n 'components/SessionDropdown': SessionDropdown,\n 'components/HeaderPrimary': HeaderPrimary,\n 'components/PostEdited': PostEdited,\n 'components/PostStream': PostStream,\n 'components/ChangePasswordModal': ChangePasswordModal,\n 'components/IndexPage': IndexPage,\n 'components/DiscussionRenamedNotification': DiscussionRenamedNotification,\n 'components/DiscussionsSearchSource': DiscussionsSearchSource,\n 'components/HeaderSecondary': HeaderSecondary,\n 'components/ComposerButton': ComposerButton,\n 'components/DiscussionList': DiscussionList,\n 'components/ReplyPlaceholder': ReplyPlaceholder,\n 'components/AvatarEditor': AvatarEditor,\n 'components/Post': Post,\n 'components/SettingsPage': SettingsPage,\n 'components/TerminalPost': TerminalPost,\n 'components/ChangeEmailModal': ChangeEmailModal,\n 'components/NotificationsDropdown': NotificationsDropdown,\n 'components/UserPage': UserPage,\n 'components/PostUser': PostUser,\n 'components/UserCard': UserCard,\n 'components/UsersSearchSource': UsersSearchSource,\n 'components/UserSecurityPage': UserSecurityPage,\n 'components/NotificationGrid': NotificationGrid,\n 'components/PostPreview': PostPreview,\n 'components/EventPost': EventPost,\n 'components/DiscussionHero': DiscussionHero,\n 'components/PostMeta': PostMeta,\n 'components/DiscussionRenamedPost': DiscussionRenamedPost,\n 'components/DiscussionComposer': DiscussionComposer,\n 'components/LogInButtons': LogInButtons,\n 'components/NotificationList': NotificationList,\n 'components/WelcomeHero': WelcomeHero,\n 'components/SignUpModal': SignUpModal,\n 'components/CommentPost': CommentPost,\n 'components/ComposerPostPreview': ComposerPostPreview,\n 'components/ReplyComposer': ReplyComposer,\n 'components/NotificationsPage': NotificationsPage,\n 'components/PostStreamScrubber': PostStreamScrubber,\n 'components/EditPostComposer': EditPostComposer,\n 'components/RenameDiscussionModal': RenameDiscussionModal,\n 'components/Search': Search,\n 'components/DiscussionListItem': DiscussionListItem,\n 'components/LoadingPost': LoadingPost,\n 'components/PostsUserPage': PostsUserPage,\n 'components/AccessTokensList': AccessTokensList,\n 'resolvers/DiscussionPageResolver': DiscussionPageResolver,\n routes: routes,\n ForumApplication: ForumApplication,\n});\n","// Expose punycode and ColorThief to the window browser object\nimport 'expose-loader?exposes=punycode!punycode';\nimport 'expose-loader?exposes=ColorThief!color-thief-browser';\n\nimport app from './app';\n\nexport { app };\n\n// Export compat API\nimport compatObj from './compat';\nimport proxifyCompat from '../common/utils/proxifyCompat';\n\n// @ts-ignore\ncompatObj.app = app;\n\nexport const compat = proxifyCompat(compatObj, 'forum');\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","export default class FlagListState {\n constructor(app) {\n this.app = app;\n\n /**\n * Whether or not the flags are loading.\n *\n * @type {Boolean}\n */\n this.loading = false;\n }\n\n /**\n * Load flags into the application's cache if they haven't already\n * been loaded.\n */\n load() {\n if (this.cache && !this.app.session.user.attribute('newFlagCount')) {\n return;\n }\n\n this.loading = true;\n m.redraw();\n\n this.app.store\n .find('flags')\n .then((flags) => {\n this.app.session.user.pushAttributes({ newFlagCount: 0 });\n this.cache = flags.sort((a, b) => b.createdAt() - a.createdAt());\n })\n .catch(() => {})\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/withAttr'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\n\nimport Stream from 'flarum/common/utils/Stream';\nimport withAttr from 'flarum/common/utils/withAttr';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nexport default class FlagPostModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.success = false;\n\n this.reason = Stream('');\n this.reasonDetail = Stream('');\n }\n\n className() {\n return 'FlagPostModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('flarum-flags.forum.flag_post.title');\n }\n\n content() {\n if (this.success) {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <p className=\"helpText\">{app.translator.trans('flarum-flags.forum.flag_post.confirmation_message')}</p>\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" onclick={this.hide.bind(this)}>\n {app.translator.trans('flarum-flags.forum.flag_post.dismiss_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <div className=\"Form-group\">\n <div>{this.flagReasons().toArray()}</div>\n </div>\n\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading} disabled={!this.reason()}>\n {app.translator.trans('flarum-flags.forum.flag_post.submit_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n flagReasons() {\n const items = new ItemList();\n const guidelinesUrl = app.forum.attribute('guidelinesUrl');\n\n items.add(\n 'off-topic',\n <label className=\"checkbox\">\n <input type=\"radio\" name=\"reason\" checked={this.reason() === 'off_topic'} value=\"off_topic\" onclick={withAttr('value', this.reason)} />\n <strong>{app.translator.trans('flarum-flags.forum.flag_post.reason_off_topic_label')}</strong>\n {app.translator.trans('flarum-flags.forum.flag_post.reason_off_topic_text')}\n {this.reason() === 'off_topic' && (\n <textarea\n className=\"FormControl\"\n placeholder={app.translator.trans('flarum-flags.forum.flag_post.reason_details_placeholder')}\n value={this.reasonDetail()}\n oninput={withAttr('value', this.reasonDetail)}\n ></textarea>\n )}\n </label>,\n 70\n );\n\n items.add(\n 'inappropriate',\n <label className=\"checkbox\">\n <input\n type=\"radio\"\n name=\"reason\"\n checked={this.reason() === 'inappropriate'}\n value=\"inappropriate\"\n onclick={withAttr('value', this.reason)}\n />\n <strong>{app.translator.trans('flarum-flags.forum.flag_post.reason_inappropriate_label')}</strong>\n {app.translator.trans('flarum-flags.forum.flag_post.reason_inappropriate_text', {\n a: guidelinesUrl ? <a href={guidelinesUrl} target=\"_blank\" /> : undefined,\n })}\n {this.reason() === 'inappropriate' && (\n <textarea\n className=\"FormControl\"\n placeholder={app.translator.trans('flarum-flags.forum.flag_post.reason_details_placeholder')}\n value={this.reasonDetail()}\n oninput={withAttr('value', this.reasonDetail)}\n ></textarea>\n )}\n </label>,\n 60\n );\n\n items.add(\n 'spam',\n <label className=\"checkbox\">\n <input type=\"radio\" name=\"reason\" checked={this.reason() === 'spam'} value=\"spam\" onclick={withAttr('value', this.reason)} />\n <strong>{app.translator.trans('flarum-flags.forum.flag_post.reason_spam_label')}</strong>\n {app.translator.trans('flarum-flags.forum.flag_post.reason_spam_text')}\n {this.reason() === 'spam' && (\n <textarea\n className=\"FormControl\"\n placeholder={app.translator.trans('flarum-flags.forum.flag_post.reason_details_placeholder')}\n value={this.reasonDetail()}\n oninput={withAttr('value', this.reasonDetail)}\n ></textarea>\n )}\n </label>,\n 50\n );\n\n items.add(\n 'other',\n <label className=\"checkbox\">\n <input type=\"radio\" name=\"reason\" checked={this.reason() === 'other'} value=\"other\" onclick={withAttr('value', this.reason)} />\n <strong>{app.translator.trans('flarum-flags.forum.flag_post.reason_other_label')}</strong>\n {this.reason() === 'other' && (\n <textarea className=\"FormControl\" value={this.reasonDetail()} oninput={withAttr('value', this.reasonDetail)}></textarea>\n )}\n </label>,\n 10\n );\n\n return items;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n app.store\n .createRecord('flags')\n .save(\n {\n reason: this.reason() === 'other' ? null : this.reason(),\n reasonDetail: this.reasonDetail(),\n relationships: {\n user: app.session.user,\n post: this.attrs.post,\n },\n },\n { errorHandler: this.onerror.bind(this) }\n )\n .then(() => (this.success = true))\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport Button from 'flarum/common/components/Button';\n\nimport FlagPostModal from './components/FlagPostModal';\n\nexport default function () {\n extend(PostControls, 'userControls', function (items, post) {\n if (post.isHidden() || post.contentType() !== 'comment' || !post.canFlag()) return;\n\n items.add(\n 'flag',\n <Button icon=\"fas fa-flag\" onclick={() => app.modal.show(FlagPostModal, { post })}>\n {app.translator.trans('flarum-flags.forum.post_controls.flag_button')}\n </Button>\n );\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/HeaderSecondary'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationsDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport Link from 'flarum/common/components/Link';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport humanTime from 'flarum/common/helpers/humanTime';\n\nexport default class FlagList extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.state = this.attrs.state;\n }\n\n view() {\n const flags = this.state.cache || [];\n\n return (\n <div className=\"NotificationList FlagList\">\n <div className=\"NotificationList-header\">\n <h4 className=\"App-titleControl App-titleControl--text\">{app.translator.trans('flarum-flags.forum.flagged_posts.title')}</h4>\n </div>\n <div className=\"NotificationList-content\">\n <ul className=\"NotificationGroup-content\">\n {flags.length ? (\n flags.map((flag) => {\n const post = flag.post();\n\n return (\n <li>\n <Link\n href={app.route.post(post)}\n className=\"Notification Flag\"\n onclick={(e) => {\n app.flags.index = post;\n e.redraw = false;\n }}\n >\n {avatar(post.user())}\n {icon('fas fa-flag', { className: 'Notification-icon' })}\n <span className=\"Notification-content\">\n {app.translator.trans('flarum-flags.forum.flagged_posts.item_text', {\n username: username(post.user()),\n em: <em />,\n discussion: post.discussion().title(),\n })}\n </span>\n {humanTime(flag.createdAt())}\n <div className=\"Notification-excerpt\">{post.contentPlain()}</div>\n </Link>\n </li>\n );\n })\n ) : !this.state.loading ? (\n <div className=\"NotificationList-empty\">{app.translator.trans('flarum-flags.forum.flagged_posts.empty_text')}</div>\n ) : (\n <LoadingIndicator className=\"LoadingIndicator--block\" />\n )}\n </ul>\n </div>\n </div>\n );\n }\n}\n","import app from 'flarum/forum/app';\nimport NotificationsDropdown from 'flarum/forum/components/NotificationsDropdown';\n\nimport FlagList from './FlagList';\n\nexport default class FlagsDropdown extends NotificationsDropdown {\n static initAttrs(attrs) {\n attrs.label = attrs.label || app.translator.trans('flarum-flags.forum.flagged_posts.tooltip');\n attrs.icon = attrs.icon || 'fas fa-flag';\n\n super.initAttrs(attrs);\n }\n\n getMenu() {\n return (\n <div className={'Dropdown-menu ' + this.attrs.menuClassName} onclick={this.menuClick.bind(this)}>\n {this.showing && <FlagList state={this.attrs.state} />}\n </div>\n );\n }\n\n goToRoute() {\n m.route.set(app.route('flags'));\n }\n\n getUnreadCount() {\n return app.flags.cache ? app.flags.cache.length : app.forum.attribute('flagCount');\n }\n\n getNewCount() {\n return app.session.user.attribute('newFlagCount');\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport HeaderSecondary from 'flarum/forum/components/HeaderSecondary';\nimport FlagsDropdown from './components/FlagsDropdown';\n\nexport default function () {\n extend(HeaderSecondary.prototype, 'items', function (items) {\n if (app.forum.attribute('canViewFlags')) {\n items.add('flags', <FlagsDropdown state={app.flags} />, 15);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/humanTime'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Post from 'flarum/forum/components/Post';\nimport Button from 'flarum/common/components/Button';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport humanTime from 'flarum/common/utils/humanTime';\n\nexport default function () {\n extend(Post.prototype, 'elementAttrs', function (attrs) {\n if (this.attrs.post.flags().length) {\n attrs.className += ' Post--flagged';\n }\n });\n\n Post.prototype.dismissFlag = function (body) {\n const post = this.attrs.post;\n\n delete post.data.relationships.flags;\n\n this.subtree.invalidate();\n\n if (app.flags.cache) {\n app.flags.cache.some((flag, i) => {\n if (flag.post() === post) {\n app.flags.cache.splice(i, 1);\n\n if (app.flags.index === post) {\n let next = app.flags.cache[i];\n\n if (!next) next = app.flags.cache[0];\n\n if (next) {\n const nextPost = next.post();\n app.flags.index = nextPost;\n m.route.set(app.route.post(nextPost));\n }\n }\n\n return true;\n }\n });\n }\n\n return app.request({\n url: app.forum.attribute('apiUrl') + post.apiEndpoint() + '/flags',\n method: 'DELETE',\n body,\n });\n };\n\n Post.prototype.flagActionItems = function () {\n const items = new ItemList();\n\n const controls = PostControls.destructiveControls(this.attrs.post);\n\n Object.keys(controls.items).forEach((k) => {\n const attrs = controls.get(k).attrs;\n\n attrs.className = 'Button';\n\n extend(attrs, 'onclick', () => this.dismissFlag());\n });\n\n items.add('controls', <div className=\"ButtonGroup\">{controls.toArray()}</div>);\n\n items.add(\n 'dismiss',\n <Button className=\"Button\" icon=\"far fa-eye-slash\" onclick={this.dismissFlag.bind(this)}>\n {app.translator.trans('flarum-flags.forum.post.dismiss_flag_button')}\n </Button>,\n -100\n );\n\n return items;\n };\n\n extend(Post.prototype, 'content', function (vdom) {\n const post = this.attrs.post;\n const flags = post.flags();\n\n if (!flags.length) return;\n\n if (post.isHidden()) this.revealContent = true;\n\n vdom.unshift(\n <div className=\"Post-flagged\">\n <div className=\"Post-flagged-flags\">\n {flags.map((flag) => (\n <div className=\"Post-flagged-flag\">{this.flagReason(flag)}</div>\n ))}\n </div>\n <div className=\"Post-flagged-actions\">{this.flagActionItems().toArray()}</div>\n </div>\n );\n });\n\n Post.prototype.flagReason = function (flag) {\n if (flag.type() === 'user') {\n const user = flag.user();\n const reason = flag.reason() ? app.translator.trans(`flarum-flags.forum.flag_post.reason_${flag.reason()}_label`) : null;\n const detail = flag.reasonDetail();\n const time = humanTime(flag.createdAt());\n\n return [\n app.translator.trans(reason ? 'flarum-flags.forum.post.flagged_by_with_reason_text' : 'flarum-flags.forum.post.flagged_by_text', {\n time,\n user,\n reason,\n }),\n !!detail && <span className=\"Post-flagged-detail\">{detail}</span>,\n ];\n }\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Page'];","import app from 'flarum/forum/app';\nimport Page from 'flarum/components/Page';\n\nimport FlagList from './FlagList';\n\n/**\n * The `FlagsPage` component shows the flags list. It is only\n * used on mobile devices where the flags dropdown is within the drawer.\n */\nexport default class FlagsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('flags');\n\n app.flags.load();\n\n this.bodyClass = 'App--flags';\n }\n\n view() {\n return (\n <div className=\"FlagsPage\">\n <FlagList state={app.flags}></FlagList>\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Model from 'flarum/common/Model';\nimport type Post from 'flarum/common/models/Post';\nimport type User from 'flarum/common/models/User';\n\nexport default class Flag extends Model {\n type() {\n return Model.attribute<string>('type').call(this);\n }\n reason() {\n return Model.attribute<string | null>('reason').call(this);\n }\n reasonDetail() {\n return Model.attribute<string | null>('reasonDetail').call(this);\n }\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n\n post() {\n return Model.hasOne<Post>('post').call(this);\n }\n user() {\n return Model.hasOne<User | null>('user').call(this);\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport FlagsPage from './components/FlagsPage';\nimport Flag from './models/Flag';\n\nexport default [\n new Extend.Routes() //\n .add('flags', '/flags', FlagsPage),\n\n new Extend.Store() //\n .add('flags', Flag),\n\n new Extend.Model(Post) //\n .hasMany<Flag>('flags')\n .attribute<boolean>('canFlag'),\n];\n","import addFlagsToPosts from './addFlagsToPosts';\nimport addFlagControl from './addFlagControl';\nimport addFlagsDropdown from './addFlagsDropdown';\nimport Flag from './models/Flag';\nimport FlagList from './components/FlagList';\nimport FlagPostModal from './components/FlagPostModal';\nimport FlagsPage from './components/FlagsPage';\nimport FlagsDropdown from './components/FlagsDropdown';\n\nexport default {\n 'flags/addFlagsToPosts': addFlagsToPosts,\n 'flags/addFlagControl': addFlagControl,\n 'flags/addFlagsDropdown': addFlagsDropdown,\n 'flags/models/Flag': Flag,\n 'flags/components/FlagList': FlagList,\n 'flags/components/FlagPostModal': FlagPostModal,\n 'flags/components/FlagsPage': FlagsPage,\n 'flags/components/FlagsDropdown': FlagsDropdown,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import app from 'flarum/forum/app';\n\nimport FlagListState from './states/FlagListState';\nimport addFlagControl from './addFlagControl';\nimport addFlagsDropdown from './addFlagsDropdown';\nimport addFlagsToPosts from './addFlagsToPosts';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-flags', () => {\n app.flags = new FlagListState(app);\n\n addFlagControl();\n addFlagsDropdown();\n addFlagsToPosts();\n});\n\n// Expose compat API\nimport flagsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, flagsCompat);\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","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 if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\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 function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\nimport type Tag from '../../common/models/Tag';\n\nexport default class TagListState {\n loadedIncludes?: Set<string>;\n\n async load(includes: string[] = []): Promise<Tag[]> {\n if (!this.loadedIncludes) {\n return this.query(includes);\n }\n\n const unloadedIncludes = includes.filter((include) => !this.loadedIncludes!.has(include));\n\n if (unloadedIncludes.length === 0) {\n return Promise.resolve(app.store.all<Tag>('tags'));\n }\n\n return this.query(unloadedIncludes);\n }\n\n async query(includes: string[] = []): Promise<Tag[]> {\n this.loadedIncludes ??= new Set();\n\n return app.store.find<Tag[]>('tags', { include: includes.join(',') }).then((val) => {\n includes.forEach((include) => this.loadedIncludes!.add(include));\n return val;\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Separator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import classList from 'flarum/common/utils/classList';\n\nexport default function tagIcon(tag, attrs = {}, settings = {}) {\n const hasIcon = tag && tag.icon();\n const { useColor = true } = settings;\n\n attrs.className = classList([attrs.className, 'icon', hasIcon ? tag.icon() : 'TagIcon']);\n\n if (tag && useColor) {\n attrs.style = attrs.style || {};\n attrs.style['--color'] = tag.color();\n\n if (hasIcon) {\n attrs.style.color = tag.color();\n }\n } else if (!tag) {\n attrs.className += ' untagged';\n }\n\n return hasIcon ? <i {...attrs} /> : <span {...attrs} />;\n}\n","import Link from 'flarum/common/components/Link';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport classList from 'flarum/common/utils/classList';\nimport tagIcon from '../../common/helpers/tagIcon';\n\nexport default class TagLinkButton extends LinkButton {\n view(vnode) {\n const tag = this.attrs.model;\n const description = tag && tag.description();\n const className = classList('TagLinkButton hasIcon', { child: tag.isChild() }, this.attrs.className);\n\n return (\n <Link className={className} href={this.attrs.route} style={tag ? { '--color': tag.color() } : undefined} title={description || undefined}>\n {tagIcon(tag, { className: 'Button-icon' })}\n <span className=\"Button-label\">{tag ? tag.name() : app.translator.trans('flarum-tags.forum.index.untagged_link')}</span>\n </Link>\n );\n }\n\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n const tag = attrs.model;\n\n attrs.params.tags = tag ? tag.slug() : 'untagged';\n attrs.route = app.route('tag', attrs.params);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/textContrastClass'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extract'];","import extract from 'flarum/common/utils/extract';\nimport Link from 'flarum/common/components/Link';\nimport classList from 'flarum/common/utils/classList';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport tagIcon from './tagIcon';\n\nexport default function tagLabel(tag, attrs = {}) {\n attrs.style = attrs.style || {};\n attrs.className = 'TagLabel ' + (attrs.className || '');\n\n const link = extract(attrs, 'link');\n const tagText = tag ? tag.name() : app.translator.trans('flarum-tags.lib.deleted_tag_text');\n\n if (tag) {\n const color = tag.color();\n if (color) {\n attrs.style['--tag-bg'] = color;\n attrs.className = classList(attrs.className, 'colored', textContrastClass(color));\n }\n\n if (link) {\n attrs.title = tag.description() || '';\n attrs.href = app.route('tag', { tags: tag.slug() });\n }\n\n if (tag.isChild()) {\n attrs.className += ' TagLabel--child';\n }\n } else {\n attrs.className += ' untagged';\n }\n\n return m(\n link ? Link : 'span',\n attrs,\n <span className=\"TagLabel-text\">\n {tag && tag.icon() && tagIcon(tag, { className: 'TagLabel-icon' }, { useColor: false })}\n <span className=\"TagLabel-name\">{tagText}</span>\n </span>\n );\n}\n","import Tag from '../models/Tag';\n\nexport default function sortTags(tags: Tag[]) {\n return tags.slice(0).sort((a, b) => {\n const aPos = a.position();\n const bPos = b.position();\n\n // If they're both secondary tags, sort them by their discussions count,\n // descending.\n if (aPos === null && bPos === null) return b.discussionCount() - a.discussionCount();\n\n // If just one is a secondary tag, then the primary tag should\n // come first.\n if (bPos === null) return -1;\n if (aPos === null) return 1;\n\n // If we've made it this far, we know they're both primary tags. So we'll\n // need to see if they have parents.\n const aParent = a.parent();\n const bParent = b.parent();\n\n // If they both have the same parent, then their positions are local,\n // so we can compare them directly.\n if (aParent === bParent) return aPos - bPos;\n // If they are both child tags, then we will compare the positions of their\n // parents.\n else if (aParent && bParent) return aParent.position()! - bParent.position()!;\n // If we are comparing a child tag with its parent, then we let the parent\n // come first. If we are comparing an unrelated parent/child, then we\n // compare both of the parents.\n else if (aParent) return aParent === b ? 1 : aParent.position()! - bPos;\n else if (bParent) return bParent === a ? -1 : aPos - bParent.position()!;\n\n return 0;\n });\n}\n","import Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Link from 'flarum/common/components/Link';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport listItems from 'flarum/common/helpers/listItems';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport classList from 'flarum/common/utils/classList';\n\nimport tagIcon from '../../common/helpers/tagIcon';\nimport tagLabel from '../../common/helpers/tagLabel';\nimport sortTags from '../../common/utils/sortTags';\n\nexport default class TagsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('tags', app.translator.trans('flarum-tags.forum.header.back_to_tags_tooltip'));\n\n this.tags = [];\n\n const preloaded = app.preloadedApiDocument();\n\n if (preloaded) {\n this.tags = sortTags(preloaded.filter((tag) => !tag.isChild()));\n return;\n }\n\n this.loading = true;\n\n app.tagList.load(['children', 'lastPostedDiscussion', 'parent']).then(() => {\n this.tags = sortTags(app.store.all('tags').filter((tag) => !tag.isChild()));\n\n this.loading = false;\n\n m.redraw();\n });\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n app.setTitle(app.translator.trans('flarum-tags.forum.all_tags.meta_title_text'));\n app.setTitleCount(0);\n }\n\n view() {\n return <div className=\"TagsPage\">{this.pageContent().toArray()}</div>;\n }\n\n pageContent() {\n const items = new ItemList();\n\n items.add('hero', this.hero(), 100);\n items.add('main', <div className=\"container\">{this.mainContent().toArray()}</div>, 10);\n\n return items;\n }\n\n mainContent() {\n const items = new ItemList();\n\n items.add('sidebar', this.sidebar(), 100);\n items.add('content', this.content(), 10);\n\n return items;\n }\n\n content() {\n return <div className=\"TagsPage-content sideNavOffset\">{this.contentItems().toArray()}</div>;\n }\n\n contentItems() {\n const items = new ItemList();\n\n if (this.loading) {\n items.add('loading', <LoadingIndicator />);\n } else {\n const pinned = this.tags.filter((tag) => tag.position() !== null);\n const cloud = this.tags.filter((tag) => tag.position() === null);\n\n items.add('tagTiles', this.tagTileListView(pinned), 100);\n\n if (cloud.length) {\n items.add('cloud', this.cloudView(cloud), 10);\n }\n }\n\n return items;\n }\n\n hero() {\n return IndexPage.prototype.hero();\n }\n\n sidebar() {\n return (\n <nav className=\"TagsPage-nav IndexPage-nav sideNav\">\n <ul>{listItems(this.sidebarItems().toArray())}</ul>\n </nav>\n );\n }\n\n sidebarItems() {\n return IndexPage.prototype.sidebarItems();\n }\n\n tagTileListView(pinned) {\n return <ul className=\"TagTiles\">{pinned.map(this.tagTileView.bind(this))}</ul>;\n }\n\n tagTileView(tag) {\n const lastPostedDiscussion = tag.lastPostedDiscussion();\n const children = sortTags(tag.children() || []);\n\n return (\n <li className={classList('TagTile', { colored: tag.color() }, textContrastClass(tag.color()))} style={{ '--tag-bg': tag.color() }}>\n <Link className=\"TagTile-info\" href={app.route.tag(tag)}>\n {tag.icon() && tagIcon(tag, {}, { useColor: false })}\n <h3 className=\"TagTile-name\">{tag.name()}</h3>\n <p className=\"TagTile-description\">{tag.description()}</p>\n {!!children && (\n <div className=\"TagTile-children\">{children.map((child) => [<Link href={app.route.tag(child)}>{child.name()}</Link>, ' '])}</div>\n )}\n </Link>\n {lastPostedDiscussion ? (\n <Link className=\"TagTile-lastPostedDiscussion\" href={app.route.discussion(lastPostedDiscussion, lastPostedDiscussion.lastPostNumber())}>\n <span className=\"TagTile-lastPostedDiscussion-title\">{lastPostedDiscussion.title()}</span>\n {humanTime(lastPostedDiscussion.lastPostedAt())}\n </Link>\n ) : (\n <span className=\"TagTile-lastPostedDiscussion\" />\n )}\n </li>\n );\n }\n\n cloudView(cloud) {\n return <div className=\"TagCloud\">{cloud.map((tag) => [tagLabel(tag, { link: true }), ' '])}</div>;\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Separator from 'flarum/common/components/Separator';\nimport LinkButton from 'flarum/common/components/LinkButton';\n\nimport TagLinkButton from './components/TagLinkButton';\nimport TagsPage from './components/TagsPage';\nimport app from 'flarum/forum/app';\nimport sortTags from '../common/utils/sortTags';\n\nexport default function () {\n // Add a link to the tags page, as well as a list of all the tags,\n // to the index page's sidebar.\n extend(IndexPage.prototype, 'navItems', function (items) {\n items.add(\n 'tags',\n <LinkButton icon=\"fas fa-th-large\" href={app.route('tags')}>\n {app.translator.trans('flarum-tags.forum.index.tags_link')}\n </LinkButton>,\n -10\n );\n\n if (app.current.matches(TagsPage)) return;\n\n items.add('separator', <Separator />, -12);\n\n const params = app.search.stickyParams();\n const tags = app.store.all('tags');\n const currentTag = this.currentTag();\n\n const addTag = (tag) => {\n let active = currentTag === tag;\n\n if (!active && currentTag) {\n active = currentTag.parent() === tag;\n }\n\n // tag.name() is passed here as children even though it isn't used directly\n // because when we need to get the active child in SelectDropdown, we need to\n // use its children to populate the dropdown. The problem here is that `view`\n // on TagLinkButton is only called AFTER SelectDropdown, so no children are available\n // for SelectDropdown to use at the time.\n items.add(\n 'tag' + tag.id(),\n <TagLinkButton model={tag} params={params} active={active}>\n {tag?.name()}\n </TagLinkButton>,\n -14\n );\n };\n\n sortTags(tags)\n .filter(\n (tag) => tag.position() !== null && (!tag.isChild() || (currentTag && (tag.parent() === currentTag || tag.parent() === currentTag.parent())))\n )\n .forEach(addTag);\n\n const more = tags.filter((tag) => tag.position() === null).sort((a, b) => b.discussionCount() - a.discussionCount());\n\n more.splice(0, 3).forEach(addTag);\n\n if (more.length) {\n items.add('moreTags', <LinkButton href={app.route('tags')}>{app.translator.trans('flarum-tags.forum.index.more_link')}</LinkButton>, -16);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/GlobalSearchState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport tagIcon from '../../common/helpers/tagIcon';\nimport classList from 'flarum/common/utils/classList';\n\nexport default class TagHero extends Component {\n view() {\n const tag = this.attrs.model;\n const color = tag.color();\n\n return (\n <header\n className={classList('Hero', 'TagHero', { 'TagHero--colored': color, [textContrastClass(color)]: color })}\n style={color ? { '--hero-bg': color } : undefined}\n >\n <div className=\"container\">\n <div className=\"containerNarrow\">\n <h1 className=\"Hero-title\">\n {tag.icon() && tagIcon(tag, {}, { useColor: false })} {tag.name()}\n </h1>\n <div className=\"Hero-subtitle\">{tag.description()}</div>\n </div>\n </div>\n </header>\n );\n }\n}\n","import app from 'flarum/forum/app';\nimport type Mithril from 'mithril';\nimport { extend, override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\nimport classList from 'flarum/common/utils/classList';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\n\nimport TagHero from './components/TagHero';\nimport Tag from '../common/models/Tag';\nimport { ComponentAttrs } from 'flarum/common/Component';\n\nconst findTag = (slug: string) => app.store.all<Tag>('tags').find((tag) => tag.slug().localeCompare(slug, undefined, { sensitivity: 'base' }) === 0);\n\nexport default function () {\n IndexPage.prototype.currentTag = function () {\n if (this.currentActiveTag) {\n return this.currentActiveTag;\n }\n\n const slug = app.search.params().tags;\n let tag = null;\n\n if (slug) {\n tag = findTag(slug);\n }\n\n if ((slug && !tag) || (tag && !tag.isChild() && !tag.children())) {\n if (this.currentTagLoading) {\n return;\n }\n\n this.currentTagLoading = true;\n\n // Unlike the backend, no need to fetch parent.children because if we're on\n // a child tag page, then either:\n // - We loaded in that child tag (and its siblings) in the API document\n // - We first navigated to the current tag's parent, which would have loaded in the current tag's siblings.\n app.store\n .find('tags', slug, { include: 'children,children.parent,parent,state' })\n .then(() => {\n this.currentActiveTag = findTag(slug);\n\n m.redraw();\n })\n .finally(() => {\n this.currentTagLoading = false;\n });\n }\n\n if (tag) {\n this.currentActiveTag = tag;\n return this.currentActiveTag;\n }\n\n return;\n };\n\n // If currently viewing a tag, insert a tag hero at the top of the view.\n override(IndexPage.prototype, 'hero', function (original) {\n const tag = this.currentTag();\n\n if (tag) return <TagHero model={tag} />;\n\n return original();\n });\n\n extend(IndexPage.prototype, 'view', function (vdom: Mithril.Vnode<ComponentAttrs, {}>) {\n const tag = this.currentTag();\n\n if (tag) vdom.attrs.className += ' IndexPage--tag' + tag.id();\n });\n\n extend(IndexPage.prototype, 'setTitle', function () {\n const tag = this.currentTag();\n\n if (tag) {\n app.setTitle(tag.name());\n }\n });\n\n // If currently viewing a tag, restyle the 'new discussion' button to use\n // the tag's color, and disable if the user isn't allowed to edit.\n extend(IndexPage.prototype, 'sidebarItems', function (items) {\n const tag = this.currentTag();\n\n if (tag) {\n const color = tag.color();\n const canStartDiscussion = tag.canStartDiscussion() || !app.session.user;\n const newDiscussion = items.get('newDiscussion') as Mithril.Vnode<ComponentAttrs, {}>;\n\n if (color) {\n newDiscussion.attrs.className = classList([newDiscussion.attrs.className, 'Button--tagColored', textContrastClass(color)]);\n newDiscussion.attrs.style = { '--color': color };\n }\n\n newDiscussion.attrs.disabled = !canStartDiscussion;\n newDiscussion.children = app.translator.trans(\n canStartDiscussion ? 'core.forum.index.start_discussion_button' : 'core.forum.index.cannot_start_discussion_button'\n );\n }\n });\n\n // Add a parameter for the global search state to pass on to the\n // DiscussionListState that will let us filter discussions by tag.\n extend(GlobalSearchState.prototype, 'params', function (params) {\n params.tags = m.route.param('tags');\n });\n\n // Translate that parameter into a gambit appended to the search query.\n extend(DiscussionListState.prototype, 'requestParams', function (this: DiscussionListState, params) {\n if (typeof params.include === 'string') {\n params.include = [params.include];\n } else {\n params.include?.push('tags', 'tags.parent');\n }\n\n if (this.params.tags) {\n const filter = params.filter ?? {};\n filter.tag = this.params.tags;\n // TODO: replace this with a more robust system.\n const q = filter.q;\n if (q) {\n filter.q = `${q} tag:${this.params.tags}`;\n }\n params.filter = filter;\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionHero'];","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 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 return target;\n}","import extract from 'flarum/common/utils/extract';\nimport tagLabel from './tagLabel';\nimport sortTags from '../utils/sortTags';\nimport classList from 'flarum/common/utils/classList';\n\nexport default function tagsLabel(tags, attrs = {}) {\n const children = [];\n const { link, ...otherAttrs } = attrs;\n\n otherAttrs.className = classList('TagsLabel', otherAttrs.className);\n\n if (tags) {\n sortTags(tags).forEach((tag) => {\n if (tag || tags.length === 1) {\n children.push(tagLabel(tag, { link }));\n }\n });\n } else {\n children.push(tagLabel());\n }\n\n return <span {...otherAttrs}>{children}</span>;\n}\n","import { extend } from 'flarum/common/extend';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport DiscussionHero from 'flarum/forum/components/DiscussionHero';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport classList from 'flarum/common/utils/classList';\n\nimport tagsLabel from '../common/helpers/tagsLabel';\nimport sortTags from '../common/utils/sortTags';\n\nexport default function () {\n // Add tag labels to each discussion in the discussion list.\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const tags = this.attrs.discussion.tags();\n\n if (tags && tags.length) {\n items.add('tags', tagsLabel(tags), 10);\n }\n });\n\n // Restyle a discussion's hero to use its first tag's color.\n extend(DiscussionHero.prototype, 'view', function (view) {\n const tags = sortTags(this.attrs.discussion.tags());\n\n if (tags && tags.length) {\n const color = tags[0].color();\n if (color) {\n view.attrs.style = { '--hero-bg': color };\n view.attrs.className = classList(view.attrs.className, 'DiscussionHero--colored', textContrastClass(color));\n }\n }\n });\n\n // Add a list of a discussion's tags to the discussion hero, displayed\n // before the title. Put the title on its own line.\n extend(DiscussionHero.prototype, 'items', function (items) {\n const tags = this.attrs.discussion.tags();\n\n if (tags && tags.length) {\n items.add('tags', tagsLabel(tags, { link: true }), 5);\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","export default function getSelectableTags(discussion) {\n let tags = app.store.all('tags');\n\n if (discussion) {\n tags = tags.filter((tag) => tag.canAddToDiscussion() || discussion.tags().indexOf(tag) !== -1);\n } else {\n tags = tags.filter((tag) => tag.canStartDiscussion());\n }\n\n return tags;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\n\n/**\n * @TODO move to core\n */\nexport default class ToggleButton extends Component {\n view(vnode) {\n const { className, isToggled, ...attrs } = this.attrs;\n const icon = isToggled ? 'far fa-check-circle' : 'far fa-circle';\n\n return (\n <Button {...attrs} icon={icon} className={classList([className, isToggled && 'Button--toggled'])}>\n {vnode.children}\n </Button>\n );\n }\n}\n","import app from 'flarum/common/app';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\nimport highlight from 'flarum/common/helpers/highlight';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Modal from 'flarum/common/components/Modal';\nimport Stream from 'flarum/common/utils/Stream';\n\nimport sortTags from '../utils/sortTags';\nimport tagLabel from '../helpers/tagLabel';\nimport tagIcon from '../helpers/tagIcon';\nimport ToggleButton from '../../forum/components/ToggleButton';\n\nimport type Tag from '../models/Tag';\nimport type { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Mithril from 'mithril';\n\nexport interface ITagSelectionModalLimits {\n /** Whether to allow bypassing the limits set here. This will show a toggle button to bypass limits. */\n allowBypassing?: boolean;\n /** Maximum number of primary/secondary tags allowed. */\n max?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n /** Minimum number of primary/secondary tags to be selected. */\n min?: {\n total?: number;\n primary?: number;\n secondary?: number;\n };\n}\n\nexport interface ITagSelectionModalAttrs extends IInternalModalAttrs {\n /** Custom modal className to use. */\n className?: string;\n /** Modal title, defaults to 'Choose Tags'. */\n title?: string;\n /** Initial tag selection value. */\n selectedTags?: Tag[];\n /** Limits set based on minimum and maximum number of primary/secondary tags that can be selected. */\n limits?: ITagSelectionModalLimits;\n /** Whether to allow resetting the value. Defaults to true. */\n allowResetting?: boolean;\n /** Whether to require the parent tag of a selected tag to be selected as well. */\n requireParentTag?: boolean;\n /** Filter tags that can be selected. */\n selectableTags?: (tags: Tag[]) => Tag[];\n /** Whether a tag can be selected. */\n canSelect: (tag: Tag) => boolean;\n /** Callback for when a tag is selected. */\n onSelect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when a tag is deselected. */\n onDeselect?: (tag: Tag, selected: Tag[]) => void;\n /** Callback for when the selection is submitted. */\n onsubmit?: (selected: Tag[]) => void;\n}\n\nexport type ITagSelectionModalState = undefined;\n\nexport default class TagSelectionModal<\n CustomAttrs extends ITagSelectionModalAttrs = ITagSelectionModalAttrs,\n CustomState extends ITagSelectionModalState = ITagSelectionModalState\n> extends Modal<CustomAttrs, CustomState> {\n protected loading = true;\n protected tags!: Tag[];\n protected selected: Tag[] = [];\n protected bypassReqs: boolean = false;\n\n protected filter = Stream('');\n protected focused = false;\n protected navigator = new KeyboardNavigatable();\n protected indexTag?: Tag;\n\n static initAttrs(attrs: ITagSelectionModalAttrs) {\n super.initAttrs(attrs);\n\n // Default values for optional attributes.\n attrs.title ||= extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.title'));\n attrs.canSelect ||= () => true;\n attrs.allowResetting ??= true;\n attrs.limits = {\n min: {\n total: attrs.limits?.min?.total ?? -Infinity,\n primary: attrs.limits?.min?.primary ?? -Infinity,\n secondary: attrs.limits?.min?.secondary ?? -Infinity,\n },\n max: {\n total: attrs.limits?.max?.total ?? Infinity,\n primary: attrs.limits?.max?.primary ?? Infinity,\n secondary: attrs.limits?.max?.secondary ?? Infinity,\n },\n };\n\n // Prevent illogical limits from being provided.\n catchInvalidLimits(attrs.limits);\n }\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.navigator\n .onUp(() => this.setIndex(this.getCurrentNumericIndex() - 1, true))\n .onDown(() => this.setIndex(this.getCurrentNumericIndex() + 1, true))\n .onSelect(this.select.bind(this))\n .onRemove(() => this.selected.splice(this.selected.length - 1, 1));\n\n app.tagList.load(['parent']).then((tags) => {\n this.loading = false;\n\n if (this.attrs.selectableTags) {\n tags = this.attrs.selectableTags(tags);\n }\n\n this.tags = sortTags(tags);\n\n if (this.attrs.selectedTags) {\n this.attrs.selectedTags.map(this.addTag.bind(this));\n }\n\n this.indexTag = tags[0];\n\n m.redraw();\n });\n }\n\n className() {\n return classList('TagSelectionModal', this.attrs.className);\n }\n\n title() {\n return this.attrs.title;\n }\n\n content() {\n if (this.loading || !this.tags) {\n return <LoadingIndicator />;\n }\n\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n const tags = this.getFilteredTags();\n\n const inputWidth = Math.max(extractText(this.getInstruction(primaryCount, secondaryCount)).length, this.filter().length);\n\n return [\n <div className=\"Modal-body\">\n <div className=\"TagSelectionModal-form\">\n <div className=\"TagSelectionModal-form-input\">\n <div className={'TagsInput FormControl ' + (this.focused ? 'focus' : '')} onclick={() => this.$('.TagsInput input').focus()}>\n <span className=\"TagsInput-selected\">\n {this.selected.map((tag) => (\n <span\n className=\"TagsInput-tag\"\n onclick={() => {\n this.removeTag(tag);\n this.onready();\n }}\n >\n {tagLabel(tag)}\n </span>\n ))}\n </span>\n <input\n className=\"FormControl\"\n placeholder={extractText(this.getInstruction(primaryCount, secondaryCount))}\n bidi={this.filter}\n style={{ width: inputWidth + 'ch' }}\n onkeydown={this.navigator.navigate.bind(this.navigator)}\n onfocus={() => (this.focused = true)}\n onblur={() => (this.focused = false)}\n />\n </div>\n </div>\n <div className=\"TagSelectionModal-form-submit App-primaryControl\">\n <Button\n type=\"submit\"\n className=\"Button Button--primary\"\n disabled={!this.meetsRequirements(primaryCount, secondaryCount)}\n icon=\"fas fa-check\"\n >\n {app.translator.trans('flarum-tags.lib.tag_selection_modal.submit_button')}\n </Button>\n </div>\n </div>\n </div>,\n\n <div className=\"Modal-footer\">\n <ul className=\"TagSelectionModal-list SelectTagList\">\n {tags.map((tag) => (\n <li\n data-index={tag.id()}\n className={classList({\n pinned: tag.position() !== null,\n child: !!tag.parent(),\n colored: !!tag.color(),\n selected: this.selected.includes(tag),\n active: this.indexTag === tag,\n })}\n style={{ color: tag.color() }}\n onmouseover={() => (this.indexTag = tag)}\n onclick={this.toggleTag.bind(this, tag)}\n >\n {tagIcon(tag)}\n <span className=\"SelectTagListItem-name\">{highlight(tag.name(), filter)}</span>\n {tag.description() ? <span className=\"SelectTagListItem-description\">{tag.description()}</span> : ''}\n </li>\n ))}\n </ul>\n {this.attrs.limits!.allowBypassing && (\n <div className=\"TagSelectionModal-controls\">\n <ToggleButton className=\"Button\" onclick={() => (this.bypassReqs = !this.bypassReqs)} isToggled={this.bypassReqs}>\n {app.translator.trans('flarum-tags.lib.tag_selection_modal.bypass_requirements')}\n </ToggleButton>\n </div>\n )}\n </div>,\n ];\n }\n\n /**\n * Filters the available tags on every state change.\n */\n private getFilteredTags(): Tag[] {\n const filter = this.filter().toLowerCase();\n const primaryCount = this.primaryCount();\n const secondaryCount = this.secondaryCount();\n let tags = this.tags;\n\n if (this.attrs.requireParentTag) {\n // Filter out all child tags whose parents have not been selected. This\n // makes it impossible to select a child if its parent hasn't been selected.\n tags = tags.filter((tag) => {\n const parent = tag.parent();\n return parent !== null && (parent === false || this.selected.includes(parent));\n });\n }\n\n if (!this.bypassReqs) {\n // If we reached the total maximum number of tags, we can't select anymore.\n if (this.selected.length >= this.attrs.limits!.max!.total!) {\n tags = tags.filter((tag) => this.selected.includes(tag));\n }\n // If the number of selected primary/secondary tags is at the maximum, then\n // we'll filter out all other tags of that type.\n else {\n if (primaryCount >= this.attrs.limits!.max!.primary!) {\n tags = tags.filter((tag) => !tag.isPrimary() || this.selected.includes(tag));\n }\n if (secondaryCount >= this.attrs.limits!.max!.secondary!) {\n tags = tags.filter((tag) => tag.isPrimary() || this.selected.includes(tag));\n }\n }\n }\n\n // If the user has entered text in the filter input, then filter by tags\n // whose name matches what they've entered.\n if (filter) {\n tags = tags.filter((tag) => tag.name().toLowerCase().includes(filter));\n }\n\n if (!this.indexTag || !tags.includes(this.indexTag)) this.indexTag = tags[0];\n\n return tags;\n }\n\n /**\n * Counts the number of selected primary tags.\n */\n protected primaryCount(): number {\n return this.selected.filter((tag) => tag.isPrimary()).length;\n }\n\n /**\n * Counts the number of selected secondary tags.\n */\n protected secondaryCount(): number {\n return this.selected.filter((tag) => !tag.isPrimary()).length;\n }\n\n /**\n * Validates the number of selected primary/secondary tags against the set min max limits.\n */\n protected meetsRequirements(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs || (this.attrs.allowResetting && this.selected.length === 0)) {\n return true;\n }\n\n if (this.selected.length < this.attrs.limits!.min!.total!) {\n return false;\n }\n\n return primaryCount >= this.attrs.limits!.min!.primary! && secondaryCount >= this.attrs.limits!.min!.secondary!;\n }\n\n /**\n * Add the given tag to the list of selected tags.\n */\n protected addTag(tag: Tag | undefined) {\n if (!tag || !this.attrs.canSelect(tag)) return;\n\n if (this.attrs.onSelect) {\n this.attrs.onSelect(tag, this.selected);\n }\n\n // If this tag has a parent, we'll also need to add the parent tag to the\n // selected list if it's not already in there.\n if (this.attrs.requireParentTag) {\n const parent = tag.parent();\n if (parent && !this.selected.includes(parent)) {\n this.selected.push(parent);\n }\n }\n\n if (!this.selected.includes(tag)) {\n this.selected.push(tag);\n }\n }\n\n /**\n * Remove the given tag from the list of selected tags.\n */\n protected removeTag(tag: Tag) {\n const index = this.selected.indexOf(tag);\n\n if (index !== -1) {\n this.selected.splice(index, 1);\n\n // Look through the list of selected tags for any tags which have the tag\n // we just removed as their parent. We'll need to remove them too.\n if (this.attrs.requireParentTag) {\n this.selected.filter((t) => t.parent() === tag).forEach(this.removeTag.bind(this));\n }\n\n if (this.attrs.onDeselect) {\n this.attrs.onDeselect(tag, this.selected);\n }\n }\n }\n\n protected toggleTag(tag: Tag) {\n // Won't happen, needed for type safety.\n if (!this.tags) return;\n\n if (this.selected.includes(tag)) {\n this.removeTag(tag);\n } else {\n this.addTag(tag);\n }\n\n if (this.filter()) {\n this.filter('');\n this.indexTag = this.tags[0];\n }\n\n this.onready();\n }\n\n /**\n * Gives human text instructions based on the current number of selected tags and set limits.\n */\n protected getInstruction(primaryCount: number, secondaryCount: number) {\n if (this.bypassReqs) {\n return '';\n }\n\n if (primaryCount < this.attrs.limits!.min!.primary!) {\n const remaining = this.attrs.limits!.min!.primary! - primaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_primary_placeholder', { count: remaining }));\n } else if (secondaryCount < this.attrs.limits!.min!.secondary!) {\n const remaining = this.attrs.limits!.min!.secondary! - secondaryCount;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_secondary_placeholder', { count: remaining }));\n } else if (this.selected.length < this.attrs.limits!.min!.total!) {\n const remaining = this.attrs.limits!.min!.total! - this.selected.length;\n return extractText(app.translator.trans('flarum-tags.lib.tag_selection_modal.choose_tags_placeholder', { count: remaining }));\n }\n\n return '';\n }\n\n /**\n * Submit tag selection.\n */\n onsubmit(e: SubmitEvent) {\n e.preventDefault();\n\n if (this.attrs.onsubmit) this.attrs.onsubmit(this.selected);\n\n this.hide();\n }\n\n protected select(e: KeyboardEvent) {\n // Ctrl + Enter submits the selection, just Enter completes the current entry\n if (e.metaKey || e.ctrlKey || (this.indexTag && this.selected.includes(this.indexTag))) {\n if (this.selected.length) {\n // The DOM submit method doesn't emit a `submit event, so we\n // simulate a manual submission so our `onsubmit` logic is run.\n this.$('button[type=\"submit\"]').click();\n }\n } else if (this.indexTag) {\n this.getItem(this.indexTag)[0].dispatchEvent(new Event('click'));\n }\n }\n\n protected selectableItems() {\n return this.$('.TagSelectionModal-list > li');\n }\n\n protected getCurrentNumericIndex() {\n if (!this.indexTag) return -1;\n\n return this.selectableItems().index(this.getItem(this.indexTag));\n }\n\n protected getItem(selectedTag: Tag) {\n return this.selectableItems().filter(`[data-index=\"${selectedTag.id()}\"]`);\n }\n\n protected setIndex(index: number, scrollToItem: boolean) {\n const $items = this.selectableItems();\n const $dropdown = $items.parent();\n\n if (index < 0) {\n index = $items.length - 1;\n } else if (index >= $items.length) {\n index = 0;\n }\n\n const $item = $items.eq(index);\n\n this.indexTag = app.store.getById('tags', $item.attr('data-index')!);\n\n m.redraw();\n\n if (scrollToItem && this.indexTag) {\n const dropdownScroll = $dropdown.scrollTop()!;\n const dropdownTop = $dropdown.offset()!.top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight()!;\n const itemTop = $item.offset()!.top;\n const itemBottom = itemTop + $item.outerHeight()!;\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({ scrollTop }, 100);\n }\n }\n }\n}\n\n/**\n * Catch invalid limits provided to the tag selection modal.\n */\nfunction catchInvalidLimits(limits: ITagSelectionModalLimits) {\n if (limits.min!.primary! > limits.max!.primary!) {\n throw new Error('The minimum number of primary tags allowed cannot be more than the maximum number of primary tags allowed.');\n }\n\n if (limits.min!.secondary! > limits.max!.secondary!) {\n throw new Error('The minimum number of secondary tags allowed cannot be more than the maximum number of secondary tags allowed.');\n }\n\n if (limits.min!.total! > limits.max!.primary! + limits.max!.secondary!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of primary and secondary tags allowed together.');\n }\n\n if (limits.max!.total! < limits.min!.primary! + limits.min!.secondary!) {\n throw new Error('The maximum number of tags allowed cannot be less than the minimum number of primary and secondary tags allowed together.');\n }\n\n if (limits.min!.total! > limits.max!.total!) {\n throw new Error('The minimum number of tags allowed cannot be more than the maximum number of tags allowed.');\n }\n}\n","import app from 'flarum/forum/app';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\n\nimport getSelectableTags from '../utils/getSelectableTags';\nimport TagSelectionModal, { ITagSelectionModalAttrs } from '../../common/components/TagSelectionModal';\n\nimport type Discussion from 'flarum/common/models/Discussion';\nimport type Tag from '../../common/models/Tag';\n\nexport interface TagDiscussionModalAttrs extends ITagSelectionModalAttrs {\n discussion?: Discussion;\n}\n\nexport default class TagDiscussionModal extends TagSelectionModal<TagDiscussionModalAttrs> {\n static initAttrs(attrs: TagDiscussionModalAttrs) {\n super.initAttrs(attrs);\n\n const title = attrs.discussion\n ? app.translator.trans('flarum-tags.forum.choose_tags.edit_title', { title: <em>{attrs.discussion.title()}</em> })\n : app.translator.trans('flarum-tags.forum.choose_tags.title');\n\n attrs.className = classList(attrs.className, 'TagDiscussionModal');\n attrs.title = extractText(title);\n attrs.allowResetting = !!app.forum.attribute('canBypassTagCounts');\n attrs.limits = {\n allowBypassing: attrs.allowResetting,\n max: {\n primary: app.forum.attribute<number>('maxPrimaryTags'),\n secondary: app.forum.attribute<number>('maxSecondaryTags'),\n },\n min: {\n primary: app.forum.attribute<number>('minPrimaryTags'),\n secondary: app.forum.attribute<number>('minSecondaryTags'),\n },\n };\n attrs.requireParentTag = true;\n attrs.selectableTags = () => getSelectableTags(attrs.discussion);\n attrs.selectedTags ??= (attrs.discussion?.tags() as Tag[]) || [];\n attrs.canSelect = (tag) => tag.canStartDiscussion();\n\n const suppliedOnsubmit = attrs.onsubmit || null;\n\n // Save changes.\n attrs.onsubmit = function (tags) {\n const discussion = attrs.discussion;\n\n if (discussion) {\n discussion.save({ relationships: { tags } }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n });\n }\n\n if (suppliedOnsubmit) suppliedOnsubmit(tags);\n };\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport Button from 'flarum/common/components/Button';\n\nimport TagDiscussionModal from './components/TagDiscussionModal';\n\nexport default function () {\n // Add a control allowing the discussion to be moved to another category.\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canTag()) {\n items.add(\n 'tags',\n <Button icon=\"fas fa-tag\" onclick={() => app.modal.show(TagDiscussionModal, { discussion })}>\n {app.translator.trans('flarum-tags.forum.discussion_controls.edit_tags_button')}\n </Button>\n );\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","import { extend, override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\nimport classList from 'flarum/common/utils/classList';\n\nimport TagDiscussionModal from './components/TagDiscussionModal';\nimport tagsLabel from '../common/helpers/tagsLabel';\nimport getSelectableTags from './utils/getSelectableTags';\n\nexport default function () {\n extend(IndexPage.prototype, 'newDiscussionAction', function (promise) {\n // From `addTagFilter\n const tag = this.currentTag();\n\n if (tag) {\n const parent = tag.parent();\n const tags = parent ? [parent, tag] : [tag];\n promise.then((composer) => (composer.fields.tags = tags));\n } else {\n app.composer.fields.tags = [];\n }\n });\n\n extend(DiscussionComposer.prototype, 'oninit', function () {\n app.tagList.load(['parent']).then(() => m.redraw());\n });\n\n // Add tag-selection abilities to the discussion composer.\n DiscussionComposer.prototype.chooseTags = function () {\n const selectableTags = getSelectableTags();\n\n if (!selectableTags.length) return;\n\n app.modal.show(TagDiscussionModal, {\n selectedTags: (this.composer.fields.tags || []).slice(0),\n onsubmit: (tags) => {\n this.composer.fields.tags = tags;\n this.$('textarea').focus();\n },\n });\n };\n\n // Add a tag-selection menu to the discussion composer's header, after the\n // title.\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n const tags = this.composer.fields.tags || [];\n const selectableTags = getSelectableTags();\n\n items.add(\n 'tags',\n <a className={classList(['DiscussionComposer-changeTags', !selectableTags.length && 'disabled'])} onclick={this.chooseTags.bind(this)}>\n {tags.length ? (\n tagsLabel(tags)\n ) : (\n <span className=\"TagLabel untagged\">{app.translator.trans('flarum-tags.forum.composer_discussion.choose_tags_link')}</span>\n )}\n </a>,\n 10\n );\n });\n\n override(DiscussionComposer.prototype, 'onsubmit', function (original) {\n const chosenTags = this.composer.fields.tags || [];\n const chosenPrimaryTags = chosenTags.filter((tag) => tag.position() !== null && !tag.isChild());\n const chosenSecondaryTags = chosenTags.filter((tag) => tag.position() === null);\n const selectableTags = getSelectableTags();\n\n const minPrimaryTags = parseInt(app.forum.attribute('minPrimaryTags'));\n const minSecondaryTags = parseInt(app.forum.attribute('minSecondaryTags'));\n const maxPrimaryTags = parseInt(app.forum.attribute('maxPrimaryTags'));\n const maxSecondaryTags = parseInt(app.forum.attribute('maxSecondaryTags'));\n\n if (\n ((!chosenTags.length && maxPrimaryTags !== 0 && maxSecondaryTags !== 0) ||\n chosenPrimaryTags.length < minPrimaryTags ||\n chosenSecondaryTags.length < minSecondaryTags) &&\n selectableTags.length\n ) {\n app.modal.show(TagDiscussionModal, {\n selectedTags: chosenTags,\n onsubmit: (tags) => {\n this.composer.fields.tags = tags;\n original();\n },\n });\n } else {\n original();\n }\n });\n\n // Add the selected tags as data to submit to the server.\n extend(DiscussionComposer.prototype, 'data', function (data) {\n data.relationships = data.relationships || {};\n data.relationships.tags = this.composer.fields.tags;\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\nimport tagsLabel from '../../common/helpers/tagsLabel';\n\nexport default class DiscussionTaggedPost extends EventPost {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n const oldTags = attrs.post.content()[0];\n const newTags = attrs.post.content()[1];\n\n function diffTags(tags1, tags2) {\n return tags1.filter((tag) => tags2.indexOf(tag) === -1).map((id) => app.store.getById('tags', id));\n }\n\n attrs.tagsAdded = diffTags(newTags, oldTags);\n attrs.tagsRemoved = diffTags(oldTags, newTags);\n }\n\n icon() {\n return 'fas fa-tag';\n }\n\n descriptionKey() {\n if (this.attrs.tagsAdded.length) {\n if (this.attrs.tagsRemoved.length) {\n return 'flarum-tags.forum.post_stream.added_and_removed_tags_text';\n }\n\n return 'flarum-tags.forum.post_stream.added_tags_text';\n }\n\n return 'flarum-tags.forum.post_stream.removed_tags_text';\n }\n\n descriptionData() {\n const data = {};\n\n if (this.attrs.tagsAdded.length) {\n data.tagsAdded = app.translator.trans('flarum-tags.forum.post_stream.tags_text', {\n tags: tagsLabel(this.attrs.tagsAdded, { link: true }),\n count: this.attrs.tagsAdded.length,\n });\n }\n\n if (this.attrs.tagsRemoved.length) {\n data.tagsRemoved = app.translator.trans('flarum-tags.forum.post_stream.tags_text', {\n tags: tagsLabel(this.attrs.tagsRemoved, { link: true }),\n count: this.attrs.tagsRemoved.length,\n });\n }\n\n return data;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import computed from 'flarum/common/utils/computed';\nimport Model from 'flarum/common/Model';\nimport type Discussion from 'flarum/common/models/Discussion';\n\nexport default class Tag extends Model {\n name() {\n return Model.attribute<string>('name').call(this);\n }\n slug() {\n return Model.attribute<string>('slug').call(this);\n }\n description() {\n return Model.attribute<string | null>('description').call(this);\n }\n\n color() {\n return Model.attribute<string | null>('color').call(this);\n }\n backgroundUrl() {\n return Model.attribute<string | null>('backgroundUrl').call(this);\n }\n backgroundMode() {\n return Model.attribute<string | null>('backgroundMode').call(this);\n }\n icon() {\n return Model.attribute<string | null>('icon').call(this);\n }\n\n position() {\n return Model.attribute<number | null>('position').call(this);\n }\n parent() {\n return Model.hasOne<Tag | null>('parent').call(this);\n }\n children() {\n return Model.hasMany<Tag>('children').call(this);\n }\n defaultSort() {\n return Model.attribute<string | null>('defaultSort').call(this);\n }\n isChild() {\n return Model.attribute<boolean>('isChild').call(this);\n }\n isHidden() {\n return Model.attribute<boolean>('isHidden').call(this);\n }\n\n discussionCount() {\n return Model.attribute<number>('discussionCount').call(this);\n }\n lastPostedAt() {\n return Model.attribute('lastPostedAt', Model.transformDate).call(this);\n }\n lastPostedDiscussion() {\n return Model.hasOne<Discussion | null>('lastPostedDiscussion').call(this);\n }\n\n isRestricted() {\n return Model.attribute<boolean>('isRestricted').call(this);\n }\n canStartDiscussion() {\n return Model.attribute<boolean>('canStartDiscussion').call(this);\n }\n canAddToDiscussion() {\n return Model.attribute<boolean>('canAddToDiscussion').call(this);\n }\n\n isPrimary() {\n return computed<boolean, this>('position', 'parent', (position, parent) => position !== null && parent === false).call(this);\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Tag from './models/Tag';\n\nexport default [\n new Extend.Store() //\n .add('tags', Tag),\n];\n","import app from 'flarum/forum/app';\nimport Extend from 'flarum/common/extenders';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionTaggedPost from './components/DiscussionTaggedPost';\nimport TagsPage from './components/TagsPage';\nimport Tag from '../common/models/Tag';\n\nimport commonExtend from '../common/extend';\n\nexport default [\n ...commonExtend,\n\n new Extend.Routes() //\n .add('tags', '/tags', TagsPage) //\n .add('tag', '/t/:tags', IndexPage) //\n .helper('tag', (tag) => app.route('tag', { tags: tag.slug() })),\n\n new Extend.PostTypes() //\n .add('discussionTagged', DiscussionTaggedPost),\n\n new Extend.Model(Discussion) //\n .hasMany<Tag>('tags') //\n .attribute<boolean>('canTag'),\n];\n","import sortTags from './utils/sortTags';\nimport Tag from './models/Tag';\nimport tagsLabel from './helpers/tagsLabel';\nimport tagIcon from './helpers/tagIcon';\nimport tagLabel from './helpers/tagLabel';\nimport TagSelectionModal from './components/TagSelectionModal';\nimport TagListState from './states/TagListState';\n\nexport default {\n 'tags/utils/sortTags': sortTags,\n 'tags/models/Tag': Tag,\n 'tags/helpers/tagsLabel': tagsLabel,\n 'tags/helpers/tagIcon': tagIcon,\n 'tags/helpers/tagLabel': tagLabel,\n 'tags/components/TagSelectionModal': TagSelectionModal,\n 'tags/states/TagListState': TagListState,\n};\n","import compat from '../common/compat';\n\nimport addTagFilter from './addTagFilter';\nimport addTagControl from './addTagControl';\nimport TagHero from './components/TagHero';\nimport TagDiscussionModal from './components/TagDiscussionModal';\nimport TagsPage from './components/TagsPage';\nimport DiscussionTaggedPost from './components/DiscussionTaggedPost';\nimport TagLinkButton from './components/TagLinkButton';\nimport addTagList from './addTagList';\nimport addTagLabels from './addTagLabels';\nimport addTagComposer from './addTagComposer';\nimport getSelectableTags from './utils/getSelectableTags';\n\nexport default Object.assign(compat, {\n 'tags/addTagFilter': addTagFilter,\n 'tags/addTagControl': addTagControl,\n 'tags/components/TagHero': TagHero,\n 'tags/components/TagDiscussionModal': TagDiscussionModal,\n 'tags/components/TagsPage': TagsPage,\n 'tags/components/DiscussionTaggedPost': DiscussionTaggedPost,\n 'tags/components/TagLinkButton': TagLinkButton,\n 'tags/addTagList': addTagList,\n 'tags/addTagLabels': addTagLabels,\n 'tags/addTagComposer': addTagComposer,\n 'tags/utils/getSelectableTags': getSelectableTags,\n});\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import app from 'flarum/forum/app';\n\nimport TagListState from '../common/states/TagListState';\n\nimport addTagList from './addTagList';\nimport addTagFilter from './addTagFilter';\nimport addTagLabels from './addTagLabels';\nimport addTagControl from './addTagControl';\nimport addTagComposer from './addTagComposer';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-tags', function () {\n app.tagList = new TagListState();\n\n addTagList();\n addTagFilter();\n addTagLabels();\n addTagControl();\n addTagComposer();\n});\n\n// Expose compat API\nimport tagsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, tagsCompat);\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n 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 function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\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 if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","import { extend, override } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Post from 'flarum/common/models/Post';\nimport Badge from 'flarum/common/components/Badge';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport PostComponent from 'flarum/forum/components/Post';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Button from 'flarum/common/components/Button';\nimport PostControls from 'flarum/forum/utils/PostControls';\n\napp.initializers.add(\n 'flarum-approval',\n () => {\n Discussion.prototype.isApproved = Discussion.attribute('isApproved');\n\n extend(Discussion.prototype, 'badges', function (items) {\n if (!this.isApproved() && !items.has('hidden')) {\n items.add(\n 'awaitingApproval',\n <Badge type=\"awaitingApproval\" icon=\"fas fa-gavel\" label={app.translator.trans('flarum-approval.forum.badge.awaiting_approval_tooltip')} />\n );\n }\n });\n\n Post.prototype.isApproved = Post.attribute('isApproved');\n Post.prototype.canApprove = Post.attribute('canApprove');\n\n extend(DiscussionListItem.prototype, 'elementAttrs', function (attrs) {\n if (!this.attrs.discussion.isApproved()) {\n attrs.className += ' DiscussionListItem--unapproved';\n }\n });\n\n extend(PostComponent.prototype, 'elementAttrs', function (attrs) {\n if (!this.attrs.post.isApproved()) {\n attrs.className += ' Post--unapproved';\n }\n });\n\n extend(CommentPost.prototype, 'headerItems', function (items) {\n if (!this.attrs.post.isApproved() && !this.attrs.post.isHidden()) {\n items.add('unapproved', app.translator.trans('flarum-approval.forum.post.awaiting_approval_text'));\n }\n });\n\n override(PostComponent.prototype, 'flagReason', function (original, flag) {\n if (flag.type() === 'approval') {\n return app.translator.trans('flarum-approval.forum.post.awaiting_approval_text');\n }\n\n return original(flag);\n });\n\n extend(PostControls, 'destructiveControls', function (items, post) {\n if (!post.isApproved() && post.canApprove()) {\n items.add(\n 'approve',\n <Button icon=\"fas fa-check\" onclick={PostControls.approveAction.bind(post)}>\n {app.translator.trans('flarum-approval.forum.post_controls.approve_button')}\n </Button>,\n 10\n );\n }\n });\n\n PostControls.approveAction = function () {\n this.save({ isApproved: true });\n\n if (this.number() === 1) {\n this.discussion().pushAttributes({ isApproved: true });\n }\n };\n },\n -10\n); // set initializer priority to run after reports\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=v;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),l=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?l(1,0):l(31,11);case f:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,l=this;r=Number(r);var $=O.p(h),y=function(t){var e=w(l);return O.w(e.date(e.date()+Math.round(t*r)),l)};if($===f)return this.set(f,this.$M+r);if($===c)return this.set(c,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},$={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||$[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,v=this-M,g=O.m(this,M);return g=($={},$[c]=g/12,$[f]=g,$[h]=g/3,$[o]=(v-m)/6048e5,$[a]=(v-m)/864e5,$[u]=v/n,$[s]=v/e,$[i]=v/t,$)[y]||v,l?g:O.a(g)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[g],w.Ls=D,w.p={},w}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['models/User'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/withAttr'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","import dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\n\ndayjs.extend(utc);\n\nexport function getPermanentSuspensionDate(): Date {\n return new Date('2038-01-01');\n}\n\nexport function isPermanentSuspensionDate(date: Date): boolean {\n return dayjs.utc(date).isSame(dayjs.utc('2038-01-01'));\n}\n\nexport function localStorageKey(): string {\n return 'flarum-suspend.acknowledge-suspension';\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\n\nimport Stream from 'flarum/utils/Stream';\nimport withAttr from 'flarum/utils/withAttr';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport { getPermanentSuspensionDate } from '../helpers/suspensionHelper';\n\nexport default class SuspendUserModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n let until = this.attrs.user.suspendedUntil();\n const reason = this.attrs.user.suspendReason();\n const message = this.attrs.user.suspendMessage();\n let status = null;\n\n if (new Date() > until) until = null;\n\n if (until) {\n if (until.getFullYear() === 9999) status = 'indefinitely';\n else status = 'limited';\n }\n\n this.status = Stream(status);\n this.reason = Stream(reason);\n this.message = Stream(message);\n this.daysRemaining = Stream(status === 'limited' && -dayjs().diff(until, 'days') + 1);\n }\n\n className() {\n return 'SuspendUserModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('flarum-suspend.forum.suspend_user.title', { user: this.attrs.user });\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form\">\n <div className=\"Form-group\">\n <label>{app.translator.trans('flarum-suspend.forum.suspend_user.status_heading')}</label>\n <div>{this.formItems().toArray()}</div>\n </div>\n\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary\" loading={this.loading} type=\"submit\">\n {app.translator.trans('flarum-suspend.forum.suspend_user.submit_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n radioItems() {\n const items = new ItemList();\n\n items.add(\n 'not-suspended',\n <label className=\"checkbox\">\n <input type=\"radio\" name=\"status\" checked={!this.status()} value=\"\" onclick={withAttr('value', this.status)} />\n {app.translator.trans('flarum-suspend.forum.suspend_user.not_suspended_label')}\n </label>,\n 100\n );\n\n items.add(\n 'indefinitely',\n <label className=\"checkbox\">\n <input type=\"radio\" name=\"status\" checked={this.status() === 'indefinitely'} value=\"indefinitely\" onclick={withAttr('value', this.status)} />\n {app.translator.trans('flarum-suspend.forum.suspend_user.indefinitely_label')}\n </label>,\n 90\n );\n\n items.add(\n 'time-suspension',\n <label className=\"checkbox SuspendUserModal-days\">\n <input\n type=\"radio\"\n name=\"status\"\n checked={this.status() === 'limited'}\n value=\"limited\"\n onclick={(e) => {\n this.status(e.target.value);\n m.redraw.sync();\n this.$('.SuspendUserModal-days-input input').select();\n e.redraw = false;\n }}\n />\n {app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_label')}\n {this.status() === 'limited' && (\n <div className=\"SuspendUserModal-days-input\">\n <input type=\"number\" min=\"0\" value={this.daysRemaining()} oninput={withAttr('value', this.daysRemaining)} className=\"FormControl\" />\n {app.translator.trans('flarum-suspend.forum.suspend_user.limited_time_days_text')}\n </div>\n )}\n </label>,\n 80\n );\n\n return items;\n }\n\n formItems() {\n const items = new ItemList();\n\n items.add('radioItems', <div className=\"Form-group\">{this.radioItems().toArray()}</div>, 100);\n\n items.add(\n 'reason',\n <div className=\"Form-group\">\n <label>\n {app.translator.trans('flarum-suspend.forum.suspend_user.reason')}\n <textarea\n className=\"FormControl\"\n bidi={this.reason}\n placeholder={app.translator.trans('flarum-suspend.forum.suspend_user.placeholder_optional')}\n rows=\"2\"\n />\n </label>\n </div>,\n 90\n );\n\n items.add(\n 'message',\n <div className=\"Form-group\">\n <label>\n {app.translator.trans('flarum-suspend.forum.suspend_user.display_message')}\n <textarea\n className=\"FormControl\"\n bidi={this.message}\n placeholder={app.translator.trans('flarum-suspend.forum.suspend_user.placeholder_optional')}\n rows=\"2\"\n />\n </label>\n </div>,\n 80\n );\n\n return items;\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n let suspendedUntil = null;\n switch (this.status()) {\n case 'indefinitely':\n suspendedUntil = getPermanentSuspensionDate();\n break;\n\n case 'limited':\n suspendedUntil = dayjs().add(this.daysRemaining(), 'days').toDate();\n break;\n\n default:\n // no default\n }\n\n this.attrs.user\n .save({ suspendedUntil, suspendReason: this.reason(), suspendMessage: this.message() })\n .then(() => this.hide(), this.loaded.bind(this));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/components/Notification';\nimport { isPermanentSuspensionDate } from '../helpers/suspensionHelper';\n\nexport default class UserSuspendedNotification extends Notification {\n icon() {\n return 'fas fa-ban';\n }\n\n href() {\n return app.route.user(this.attrs.notification.subject());\n }\n\n content() {\n const notification = this.attrs.notification;\n const suspendedUntil = notification.content();\n const timeReadable = dayjs(suspendedUntil).from(notification.createdAt(), true);\n\n return isPermanentSuspensionDate(suspendedUntil)\n ? app.translator.trans('flarum-suspend.forum.notifications.user_suspended_indefinite_text')\n : app.translator.trans('flarum-suspend.forum.notifications.user_suspended_text', {\n timeReadable,\n });\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/components/Notification';\n\nexport default class UserUnsuspendedNotification extends Notification {\n icon() {\n return 'fas fa-ban';\n }\n\n href() {\n return app.route.user(this.attrs.notification.subject());\n }\n\n content() {\n const notification = this.attrs.notification;\n\n return app.translator.trans('flarum-suspend.forum.notifications.user_unsuspended_text');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/fullTime'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport fullTime from 'flarum/common/helpers/fullTime';\nimport { isPermanentSuspensionDate, localStorageKey } from '../helpers/suspensionHelper';\n\nexport default class SuspensionInfoModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.message = this.attrs.message;\n this.until = this.attrs.until;\n }\n\n className() {\n return 'SuspensionInfoModal Modal';\n }\n\n title() {\n return app.translator.trans('flarum-suspend.forum.suspension_info.title');\n }\n\n content() {\n const timespan = isPermanentSuspensionDate(new Date(this.until))\n ? app.translator.trans('flarum-suspend.forum.suspension_info.indefinite')\n : app.translator.trans('flarum-suspend.forum.suspension_info.limited', { date: fullTime(this.until) });\n\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <p className=\"helpText\">{this.message}</p>\n <p className=\"helpText\">{timespan}</p>\n\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" onclick={this.hide.bind(this)}>\n {app.translator.trans('flarum-suspend.forum.suspension_info.dismiss_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n hide() {\n localStorage.setItem(localStorageKey(), this.attrs.until.getTime());\n this.attrs.state.close();\n }\n}\n","import app from 'flarum/forum/app';\nimport SuspensionInfoModal from './components/SuspensionInfoModal';\nimport { localStorageKey } from './helpers/suspensionHelper';\n\nexport default function () {\n return setTimeout(() => {\n if (app.session.user) {\n const message = app.session.user.suspendMessage();\n const until = app.session.user.suspendedUntil();\n const isSuspended = message && until && new Date() < until;\n const alreadyDisplayed = localStorage.getItem(localStorageKey()) === until?.getTime().toString();\n\n if (isSuspended && !alreadyDisplayed) {\n app.modal.show(SuspensionInfoModal, { message, until });\n } else if (localStorage.getItem(localStorageKey())) {\n localStorage.removeItem(localStorageKey());\n }\n }\n }, 0);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\n\nexport default [\n new Extend.Model(User)\n .attribute<boolean>('canSuspend')\n .attribute<Date, string | null | undefined>('suspendedUntil', Model.transformDate)\n .attribute<string | null | undefined>('suspendReason')\n .attribute<string | null | undefined>('suspendMessage'),\n];\n","import SuspendUserModal from './components/SuspendUserModal';\nimport SuspensionInfoModal from './components/SuspensionInfoModal';\nimport UserSuspendedNotification from './components/UserSuspendedNotification';\nimport UserUnsuspendedNotification from './components/UserUnsuspendedNotification';\nimport checkForSuspension from './checkForSuspension';\n\nexport default {\n 'suspend/components/suspendUserModal': SuspendUserModal,\n 'suspend/components/suspensionInfoModal': SuspensionInfoModal,\n 'suspend/components/UserSuspendedNotification': UserSuspendedNotification,\n 'suspend/components/UserUnsuspendedNotification': UserUnsuspendedNotification,\n 'suspend/checkForSuspension': checkForSuspension,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import { extend } from 'flarum/extend';\nimport app from 'flarum/app';\nimport UserControls from 'flarum/utils/UserControls';\nimport Button from 'flarum/components/Button';\nimport Badge from 'flarum/components/Badge';\nimport User from 'flarum/models/User';\n\nimport SuspendUserModal from './components/SuspendUserModal';\nimport UserSuspendedNotification from './components/UserSuspendedNotification';\nimport UserUnsuspendedNotification from './components/UserUnsuspendedNotification';\nimport checkForSuspension from './checkForSuspension';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-suspend', () => {\n app.notificationComponents.userSuspended = UserSuspendedNotification;\n app.notificationComponents.userUnsuspended = UserUnsuspendedNotification;\n\n extend(UserControls, 'moderationControls', (items, user) => {\n if (user.canSuspend()) {\n items.add(\n 'suspend',\n <Button icon=\"fas fa-ban\" onclick={() => app.modal.show(SuspendUserModal, { user })}>\n {app.translator.trans('flarum-suspend.forum.user_controls.suspend_button')}\n </Button>\n );\n }\n });\n\n extend(User.prototype, 'badges', function (items) {\n const until = this.suspendedUntil();\n\n if (new Date() < until) {\n items.add(\n 'suspended',\n <Badge icon=\"fas fa-ban\" type=\"suspended\" label={app.translator.trans('flarum-suspend.forum.user_badge.suspended_tooltip')} />,\n 100\n );\n }\n });\n\n checkForSuspension();\n});\n\n// Expose compat API\nimport suspendCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, suspendCompat);\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n 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 function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\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 if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) {\n keys.push(key);\n }\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/textContrastClass'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostPreview'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/punctuateSeries'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\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}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/states/PaginatedListState'];","import PaginatedListState, { PaginatedListParams } from 'flarum/common/states/PaginatedListState';\nimport Post from 'flarum/common/models/Post';\n\nexport interface MentionedByModalListParams extends PaginatedListParams {\n filter: {\n mentionedPost: string;\n };\n sort?: string;\n page?: {\n offset?: number;\n limit: number;\n };\n}\n\nexport default class MentionedByModalState<P extends MentionedByModalListParams = MentionedByModalListParams> extends PaginatedListState<Post, P> {\n constructor(params: P, page: number = 1) {\n const limit = 10;\n\n params.page = { ...(params.page || {}), limit };\n\n super(params, page, limit);\n }\n\n get type(): string {\n return 'posts';\n }\n}\n","import app from 'flarum/forum/app';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Mithril from 'mithril';\nimport type Post from 'flarum/common/models/Post';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport MentionedByModalState from '../state/MentionedByModalState';\n\nexport interface IMentionedByModalAttrs extends IInternalModalAttrs {\n post: Post;\n}\n\nexport default class MentionedByModal<CustomAttrs extends IMentionedByModalAttrs = IMentionedByModalAttrs> extends Modal<\n CustomAttrs,\n MentionedByModalState\n> {\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.state = new MentionedByModalState({\n filter: {\n mentionedPost: this.attrs.post.id()!,\n },\n sort: 'number',\n });\n\n this.state.refresh();\n }\n\n className(): string {\n return 'MentionedByModal';\n }\n\n title(): Mithril.Children {\n return app.translator.trans('flarum-mentions.forum.mentioned_by.title');\n }\n\n content(): Mithril.Children {\n return (\n <>\n <div className=\"Modal-body\">\n {this.state.isInitialLoading() ? (\n <LoadingIndicator />\n ) : (\n <>\n <ul className=\"MentionedByModal-list Dropdown-menu Dropdown-menu--inline Post-mentionedBy-preview\">\n {this.state.getPages().map((page) =>\n page.items.map((reply) => (\n <li data-number={reply.number()}>\n <PostPreview post={reply} onclick={() => app.modal.close()} />\n </li>\n ))\n )}\n </ul>\n </>\n )}\n </div>\n {this.state.hasNext() && (\n <div className=\"Modal-footer\">\n <div className=\"Form Form--centered\">\n <div className=\"Form-group\">\n <Button className=\"Button Button--block\" onclick={() => this.state.loadNext()} loading={this.state.isLoadingNext()}>\n {app.translator.trans('flarum-mentions.forum.mentioned_by.load_more_button')}\n </Button>\n </div>\n </div>\n </div>\n )}\n </>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EditPostComposer'];","import app from 'flarum/forum/app';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\n\nexport function insertMention(post, composer, quote) {\n return new Promise((resolve) => {\n const mention = app.mentionFormats.mentionable('post').replacement(post) + ' ';\n\n // If the composer is empty, then assume we're starting a new reply.\n // In which case we don't want the user to have to confirm if they\n // close the composer straight away.\n if (!composer.fields.content()) {\n composer.body.attrs.originalContent = mention;\n }\n\n const cursorPosition = composer.editor.getSelectionRange()[0];\n const preceding = composer.fields.content().slice(0, cursorPosition);\n const precedingNewlines = preceding.length == 0 ? 0 : 3 - preceding.match(/(\\n{0,2})$/)[0].length;\n\n composer.editor.insertAtCursor(\n Array(precedingNewlines).join('\\n') + // Insert up to two newlines, depending on preceding whitespace\n (quote ? '> ' + mention + quote.trim().replace(/\\n/g, '\\n> ') + '\\n\\n' : mention),\n false\n );\n return resolve(composer);\n });\n}\n\nexport default function reply(post, quote) {\n if (app.composer.bodyMatches(EditPostComposer) && app.composer.body.attrs.post.discussion() === post.discussion()) {\n // If we're already editing a post in the discussion of post we're quoting,\n // insert the mention directly.\n return insertMention(post, app.composer, quote);\n } else {\n // The default \"Reply\" action behavior will only open a new composer if\n // necessary, but it will always be a ReplyComposer, hence the exceptional\n // case above.\n return DiscussionControls.replyAction.call(post.discussion()).then((composer) => insertMention(post, composer, quote));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Fragment'];","import app from 'flarum/forum/app';\nimport Fragment from 'flarum/common/Fragment';\nimport icon from 'flarum/common/helpers/icon';\n\nimport reply from '../utils/reply';\n\nexport default class PostQuoteButton extends Fragment {\n constructor(post) {\n super();\n\n this.post = post;\n }\n\n view() {\n return (\n <button\n className=\"Button PostQuoteButton\"\n onclick={() => {\n reply(this.post, this.content);\n }}\n >\n {icon('fas fa-quote-left', { className: 'Button-icon' })}\n {app.translator.trans('flarum-mentions.forum.post.quote_button')}\n </button>\n );\n }\n\n show(left, top) {\n const $this = this.$().show();\n const parentOffset = $this.offsetParent().offset();\n\n $this.css('left', left - parentOffset.left).css('top', top - parentOffset.top);\n\n this.hideHandler = this.hide.bind(this);\n $(document).on('mouseup', this.hideHandler);\n }\n\n showStart(left, top) {\n const $this = this.$();\n\n this.show(left, $(window).scrollTop() + top - $this.outerHeight() - 5);\n }\n\n showEnd(right, bottom) {\n const $this = this.$();\n\n this.show(right - $this.outerWidth(), $(window).scrollTop() + bottom + 5);\n }\n\n hide() {\n this.$().hide();\n $(document).off('mouseup', this.hideHandler);\n }\n}\n","/**\n * Finds the selected text in the provided composer body.\n */\nexport default function selectedText(body) {\n const selection = window.getSelection();\n\n if (!selection.isCollapsed) {\n const range = selection.getRangeAt(0);\n const parent = range.commonAncestorContainer;\n\n if (body[0] === parent || $.contains(body[0], parent)) {\n const clone = $('<div>').append(range.cloneContents());\n\n // Replace emoji images with their shortcode (found in alt attribute)\n clone.find('img.emoji').replaceWith(function () {\n return this.alt;\n });\n\n // Replace all other images with a Markdown image\n clone.find('img').replaceWith(function () {\n return ``;\n });\n\n // Replace all links with a Markdown link\n clone.find('a').replaceWith(function () {\n return `[${this.innerText}](${this.href})`;\n });\n\n return clone.text();\n }\n }\n return '';\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditor'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditorButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","import Fragment from 'flarum/common/Fragment';\n\nexport default class AutocompleteDropdown extends Fragment {\n items = [];\n active = false;\n index = 0;\n keyWasJustPressed = false;\n\n view() {\n return (\n <ul className=\"Dropdown-menu MentionsDropdown\">\n {this.items.map((item) => (\n <li>{item}</li>\n ))}\n </ul>\n );\n }\n\n show(left, top) {\n this.$()\n .show()\n .css({\n left: left + 'px',\n top: top + 'px',\n });\n this.active = true;\n }\n\n hide() {\n this.$().hide();\n this.active = false;\n }\n\n navigate(delta) {\n this.keyWasJustPressed = true;\n this.setIndex(this.index + delta, true);\n clearTimeout(this.keyWasJustPressedTimeout);\n this.keyWasJustPressedTimeout = setTimeout(() => (this.keyWasJustPressed = false), 500);\n }\n\n complete() {\n this.$('li').eq(this.index).find('button').click();\n }\n\n setIndex(index, scrollToItem) {\n if (this.keyWasJustPressed && !scrollToItem) return;\n\n const $dropdown = this.$();\n const $items = $dropdown.find('li');\n let rangedIndex = index;\n\n if (rangedIndex < 0) {\n rangedIndex = $items.length - 1;\n } else if (rangedIndex >= $items.length) {\n rangedIndex = 0;\n }\n\n this.index = rangedIndex;\n\n const $item = $items.removeClass('active').eq(rangedIndex).addClass('active');\n\n if (scrollToItem) {\n const dropdownScroll = $dropdown.scrollTop();\n const dropdownTop = $dropdown.offset().top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight();\n const itemTop = $item.offset().top;\n const itemBottom = itemTop + $item.outerHeight();\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({ scrollTop }, 100);\n }\n }\n }\n}\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 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 return target;\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 if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\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 function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import Component from 'flarum/common/Component';\nimport type { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport type MentionableModel from '../mentionables/MentionableModel';\nimport type Mithril from 'mithril';\n\nexport interface IMentionsDropdownItemAttrs extends ComponentAttrs {\n mentionable: MentionableModel;\n onclick: () => void;\n onmouseenter: () => void;\n}\n\nexport default class MentionsDropdownItem<CustomAttrs extends IMentionsDropdownItemAttrs> extends Component<CustomAttrs> {\n view(vnode: Mithril.Vnode<CustomAttrs>): Mithril.Children {\n const { mentionable, ...attrs } = this.attrs;\n\n const className = classList('MentionsDropdownItem', 'PostPreview', `MentionsDropdown-${mentionable.type()}`);\n\n return (\n <button className={className} {...attrs}>\n <span className=\"PostPreview-content\">{vnode.children}</span>\n </button>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/throttleDebounce'];","import type MentionableModel from './MentionableModel';\nimport type Model from 'flarum/common/Model';\nimport type Mithril from 'mithril';\nimport MentionsDropdownItem from '../components/MentionsDropdownItem';\nimport { throttle } from 'flarum/common/utils/throttleDebounce';\n\nexport default class MentionableModels {\n protected mentionables?: MentionableModel[];\n /**\n * We store models returned from an API here to preserve order in which they are returned\n * This prevents the list jumping around while models are returned.\n * We also use a hashmap for model IDs to provide O(1) lookup for the users already in the list.\n */\n private results: Record<string, Map<string, Model>> = {};\n public typed: string | null = null;\n private searched: string[] = [];\n private dropdownItemAttrs: Record<string, any> = {};\n\n constructor(dropdownItemAttrs: Record<string, any>) {\n this.dropdownItemAttrs = dropdownItemAttrs;\n }\n\n public init(mentionables: MentionableModel[]): void {\n this.typed = null;\n this.mentionables = mentionables;\n\n for (const mentionable of this.mentionables) {\n this.results[mentionable.type()] = new Map(mentionable.initialResults().map((result) => [result.id() as string, result]));\n }\n }\n\n /**\n * Don't send API calls searching for models until at least 2 characters have been typed.\n * This focuses the mention results on models already loaded.\n */\n public readonly search = throttle(250, async (): Promise<void> => {\n if (!this.typed || this.typed.length <= 1) return;\n\n const typedLower = this.typed.toLowerCase();\n\n if (this.searched.includes(typedLower)) return;\n\n for (const mentionable of this.mentionables!) {\n for (const model of await mentionable.search(typedLower)) {\n if (!this.results[mentionable.type()].has(model.id() as string)) {\n this.results[mentionable.type()].set(model.id() as string, model);\n }\n }\n }\n\n this.searched.push(typedLower);\n\n return Promise.resolve();\n });\n\n public matches(mentionable: MentionableModel, model: Model): boolean {\n return mentionable.matches(model, this.typed?.toLowerCase() || '');\n }\n\n public makeSuggestion(mentionable: MentionableModel, model: Model): Mithril.Children {\n const content = mentionable.suggestion(model, this.typed!);\n const replacement = mentionable.replacement(model);\n\n const { onclick, ...attrs } = this.dropdownItemAttrs;\n\n return (\n <MentionsDropdownItem mentionable={mentionable} onclick={() => onclick(replacement)} {...attrs}>\n {content}\n </MentionsDropdownItem>\n );\n }\n\n public buildSuggestions(): Mithril.Children {\n const suggestions: Mithril.Children = [];\n\n for (const mentionable of this.mentionables!) {\n if (!mentionable.enabled()) continue;\n\n let matches = Array.from(this.results[mentionable.type()].values()).filter((model) => this.matches(mentionable, model));\n\n const max = mentionable.maxStoreMatchedResults();\n if (max) matches = matches.splice(0, max);\n\n for (const model of matches) {\n const dropdownItem = this.makeSuggestion(mentionable, model);\n suggestions.push(dropdownItem);\n }\n }\n\n return suggestions;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostMentionedNotification extends Notification {\n icon() {\n return 'fas fa-reply';\n }\n\n href() {\n const notification = this.attrs.notification;\n const post = notification.subject();\n const content = notification.content();\n\n return app.route.discussion(post.discussion(), content && content.replyNumber);\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.post_mentioned_text', { user, count: 1 });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain() || '', 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class UserMentionedNotification extends Notification {\n icon() {\n return 'fas fa-at';\n }\n\n href() {\n const post = this.attrs.notification.subject();\n\n return app.route.discussion(post.discussion(), post.number());\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.user_mentioned_text', { user });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class GroupMentionedNotification extends Notification {\n icon() {\n return 'fas fa-at';\n }\n\n href() {\n const post = this.attrs.notification.subject();\n\n return app.route.discussion(post.discussion(), post.number());\n }\n\n content() {\n const user = this.attrs.notification.fromUser();\n\n return app.translator.trans('flarum-mentions.forum.notifications.group_mentioned_text', { user });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","import type MentionableModel from '../MentionableModel';\nimport type Model from 'flarum/common/Model';\n\nexport default abstract class MentionFormat {\n protected instances?: MentionableModel[];\n\n public makeMentionables(): MentionableModel[] {\n return this.instances ?? (this.instances = this.mentionables.map((Mentionable) => new Mentionable(this)));\n }\n\n public getMentionable(type: string): MentionableModel | null {\n return this.makeMentionables().find((mentionable) => mentionable.type() === type) ?? null;\n }\n\n public extend(mentionable: new (...args: any[]) => MentionableModel): void {\n if (!this.extendable) throw new Error('This mention format does not allow extending.');\n\n this.mentionables.push(mentionable);\n }\n\n abstract mentionables: (new (...args: any[]) => MentionableModel)[];\n\n protected abstract extendable: boolean;\n\n abstract trigger(): string;\n\n /**\n * Picks the term to search in the API from the typed text.\n * @example:\n * * Full text = `Hello @\"John D`\n * * Typed text = `\"John D`\n * * Query = `John D`\n */\n abstract queryFromTyped(typed: string): string | null;\n\n abstract format(...args: any): string;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/highlight'];","import type Mithril from 'mithril';\nimport type Model from 'flarum/common/Model';\nimport type MentionFormat from './formats/MentionFormat';\n\nexport default abstract class MentionableModel<M extends Model = Model, Format extends MentionFormat = MentionFormat> {\n public format: Format;\n\n public constructor(format: Format) {\n this.format = format;\n }\n\n abstract type(): string;\n abstract initialResults(): M[];\n abstract search(typed: string): Promise<M[]>;\n abstract replacement(model: M): string;\n abstract suggestion(model: M, typed: string): Mithril.Children;\n abstract matches(model: M, typed: string): boolean;\n abstract maxStoreMatchedResults(): number | null;\n abstract enabled(): boolean;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","import app from 'flarum/forum/app';\nimport extractText from 'flarum/common/utils/extractText';\n\n/**\n * Whether to use the old mentions format.\n *\n * `'@username'` or `'@\"Display name\"'`\n */\nexport const shouldUseOldFormat = () => app.forum.attribute('allowUsernameMentionFormat') || false;\n\nconst getDeletedUserText = () => extractText(app.translator.trans('core.lib.username.deleted_text'));\n\n/**\n * Fetches a user's username or display name.\n *\n * Chooses based on the format option set in the admin settings page.\n *\n * @param user An instance of the User model to fetch the username for\n * @param useDisplayName If `true`, uses `user.displayName()`, otherwise, uses `user.username()`\n */\nexport default function getCleanDisplayName(user, useDisplayName = true) {\n if (!user) return getDeletedUserText().replace(/\"#[a-z]{0,3}[0-9]+/, '_');\n\n const text = (useDisplayName ? user.displayName() : user.username()) || getDeletedUserText();\n\n return text.replace(/\"#[a-z]{0,3}[0-9]+/, '_');\n}\n","import app from 'flarum/forum/app';\nimport type Mithril from 'mithril';\nimport type User from 'flarum/common/models/User';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport avatar from 'flarum/common/helpers/avatar';\nimport highlight from 'flarum/common/helpers/highlight';\nimport MentionableModel from './MentionableModel';\nimport getCleanDisplayName, { shouldUseOldFormat } from '../utils/getCleanDisplayName';\nimport AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class UserMention extends MentionableModel<User, AtMentionFormat> {\n type(): string {\n return 'user';\n }\n\n initialResults(): User[] {\n return Array.from(app.store.all<User>('users'));\n }\n\n /**\n * Automatically determines which mention syntax to be used based on the option in the\n * admin dashboard. Also performs display name clean-up automatically.\n *\n * @\"Display name\"#UserID or `@username`\n *\n * @example <caption>New display name syntax</caption>\n * // '@\"user\"#1'\n * forUser(User) // User is ID 1, display name is 'User'\n *\n * @example <caption>Using old syntax</caption>\n * // '@username'\n * forUser(user) // User's username is 'username'\n */\n public replacement(user: User): string {\n if (shouldUseOldFormat()) {\n const cleanText = getCleanDisplayName(user, false);\n return this.format.format(cleanText);\n }\n\n const cleanText = getCleanDisplayName(user);\n return this.format.format(cleanText, '', user.id());\n }\n\n suggestion(model: User, typed: string): Mithril.Children {\n const username = usernameHelper(model);\n\n if (typed) {\n username.children = [highlight((username.text ?? '') as string, typed)];\n delete username.text;\n }\n\n return (\n <>\n {avatar(model)}\n {username}\n </>\n );\n }\n\n matches(model: User, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.username(), model.displayName()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n async search(typed: string): Promise<User[]> {\n return await app.store.find<User[]>('users', { filter: { q: typed }, page: { limit: 5 } });\n }\n\n enabled(): boolean {\n return true;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ReplyComposer'];","import app from 'flarum/forum/app';\nimport MentionableModel from './MentionableModel';\nimport type Post from 'flarum/common/models/Post';\nimport type Mithril from 'mithril';\nimport usernameHelper from 'flarum/common/helpers/username';\nimport avatar from 'flarum/common/helpers/avatar';\nimport highlight from 'flarum/common/helpers/highlight';\nimport { truncate } from 'flarum/common/utils/string';\nimport ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport EditPostComposer from 'flarum/forum/components/EditPostComposer';\nimport getCleanDisplayName from '../utils/getCleanDisplayName';\nimport type AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class PostMention extends MentionableModel<Post, AtMentionFormat> {\n type(): string {\n return 'post';\n }\n\n /**\n * If the user is replying to a discussion, or if they are editing a\n * post, then we can suggest other posts in the discussion to mention.\n * We will add the 5 most recent comments in the discussion which\n * match any username characters that have been typed.\n */\n initialResults(): Post[] {\n if (!app.composer.bodyMatches(ReplyComposer) && !app.composer.bodyMatches(EditPostComposer)) {\n return [];\n }\n\n // @ts-ignore\n const composerAttrs = app.composer.body.attrs;\n const composerPost = composerAttrs.post;\n const discussion = (composerPost && composerPost.discussion()) || composerAttrs.discussion;\n\n return (\n discussion\n .posts()\n // Filter to only comment posts, and replies before this message\n .filter((post: Post) => post && post.contentType() === 'comment' && (!composerPost || post.number() < composerPost.number()))\n // Sort by new to old\n .sort((a: Post, b: Post) => b.createdAt().getTime() - a.createdAt().getTime())\n );\n }\n\n /**\n * Generates the syntax for mentioning of a post. Also cleans up the display name.\n *\n * @example <caption>Post mention</caption>\n * // '@\"User\"#p13'\n * // @\"Display name\"#pPostID\n * forPostMention(user, 13) // User display name is 'User', post ID is 13\n */\n public replacement(post: Post): string {\n const user = post.user();\n const cleanText = getCleanDisplayName(user);\n return this.format.format(cleanText, 'p', post.id());\n }\n\n suggestion(model: Post, typed: string): Mithril.Children {\n const user = model.user() || null;\n const username = usernameHelper(user);\n\n if (typed) {\n username.children = [highlight((username.text ?? '') as string, typed)];\n delete username.text;\n }\n\n return (\n <>\n {avatar(user)}\n {username}\n {[\n app.translator.trans('flarum-mentions.forum.composer.reply_to_post_text', { number: model.number() }),\n ' \u2014 ',\n truncate(model.contentPlain() ?? '', 200),\n ]}\n </>\n );\n }\n\n matches(model: Post, typed: string): boolean {\n const user = model.user();\n const userMentionable = app.mentionFormats.mentionable('user')!;\n\n return !typed || (user && userMentionable.matches(user, typed));\n }\n\n maxStoreMatchedResults(): number {\n return 5;\n }\n\n /**\n * Post mention suggestions are only offered from current discussion posts.\n */\n search(typed: string): Promise<Post[]> {\n return Promise.resolve([]);\n }\n\n enabled(): boolean {\n return true;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Group'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import app from 'flarum/forum/app';\nimport Group from 'flarum/common/models/Group';\nimport MentionableModel from './MentionableModel';\nimport type Mithril from 'mithril';\nimport Badge from 'flarum/common/components/Badge';\nimport highlight from 'flarum/common/helpers/highlight';\nimport type AtMentionFormat from './formats/AtMentionFormat';\n\nexport default class GroupMention extends MentionableModel<Group, AtMentionFormat> {\n type(): string {\n return 'group';\n }\n\n initialResults(): Group[] {\n return Array.from(\n app.store.all<Group>('groups').filter((g: Group) => {\n return g.id() !== Group.GUEST_ID && g.id() !== Group.MEMBER_ID;\n })\n );\n }\n\n /**\n * Generates the mention syntax for a group mention.\n *\n * @\"Name Plural\"#gGroupID\n *\n * @example <caption>Group mention</caption>\n * // '@\"Mods\"#g4'\n * forGroup(group) // Group display name is 'Mods', group ID is 4\n */\n public replacement(group: Group): string {\n return this.format.format(group.namePlural(), 'g', group.id());\n }\n\n suggestion(model: Group, typed: string): Mithril.Children {\n let groupName: Mithril.Children = model.namePlural();\n\n if (typed) {\n groupName = highlight(groupName, typed);\n }\n\n return (\n <>\n <Badge className={`Avatar Badge Badge--group--${model.id()} Badge-icon`} color={model.color()} type=\"group\" icon={model.icon()} />\n <span className=\"username\">{groupName}</span>\n </>\n );\n }\n\n matches(model: Group, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.namePlural().toLowerCase(), model.nameSingular().toLowerCase()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n /**\n * All groups are already loaded, so we don't need to search for them.\n */\n search(typed: string): Promise<Group[]> {\n return Promise.resolve([]);\n }\n\n enabled(): boolean {\n return app.session?.user?.canMentionGroups() ?? false;\n }\n}\n","import MentionFormat from './MentionFormat';\nimport type MentionableModel from '../MentionableModel';\nimport UserMention from '../UserMention';\nimport PostMention from '../PostMention';\nimport GroupMention from '../GroupMention';\n\nexport default class AtMentionFormat extends MentionFormat {\n public mentionables: (new (...args: any[]) => MentionableModel)[] = [UserMention, PostMention, GroupMention];\n protected extendable: boolean = true;\n\n public trigger(): string {\n return '@';\n }\n\n public queryFromTyped(typed: string): string | null {\n const matchTyped = typed.match(/^[\"\u201c]?((?:(?!\"#).)+)$/);\n\n return matchTyped ? matchTyped[1] : null;\n }\n\n public format(name: string, char: string | null = '', id: string | null = null): string {\n return {\n simple: `@${name}`,\n safe: `@\"${name}\"#${char}${id}`,\n }[id ? 'safe' : 'simple'];\n }\n}\n","import app from 'flarum/forum/app';\nimport Badge from 'flarum/common/components/Badge';\nimport highlight from 'flarum/common/helpers/highlight';\nimport type Tag from 'flarum/tags/common/models/Tag';\nimport type Mithril from 'mithril';\nimport MentionableModel from './MentionableModel';\nimport type HashMentionFormat from './formats/HashMentionFormat';\n\nexport default class TagMention extends MentionableModel<Tag, HashMentionFormat> {\n type(): string {\n return 'tag';\n }\n\n initialResults(): Tag[] {\n return Array.from(app.store.all<Tag>('tags'));\n }\n\n /**\n * Generates the mention syntax for a tag mention.\n *\n * ~tagSlug\n *\n * @example <caption>Tag mention</caption>\n * // ~general\n * forTag(tag) // Tag display name is 'Tag', tag ID is 5\n */\n public replacement(tag: Tag): string {\n return this.format.format(tag.slug());\n }\n\n matches(model: Tag, typed: string): boolean {\n if (!typed) return false;\n\n const names = [model.name().toLowerCase()];\n\n return names.some((name) => name.toLowerCase().substr(0, typed.length) === typed);\n }\n\n maxStoreMatchedResults(): null {\n return null;\n }\n\n async search(typed: string): Promise<Tag[]> {\n return await app.store.find<Tag[]>('tags', { filter: { q: typed }, page: { limit: 5 } });\n }\n\n suggestion(model: Tag, typed: string): Mithril.Children {\n let tagName: Mithril.Children = model.name();\n\n if (typed) {\n tagName = highlight(tagName, typed);\n }\n\n return (\n <>\n <Badge className=\"Avatar\" icon={model.icon()} color={model.color()} type=\"tag\" />\n <span className=\"username\">{tagName}</span>\n </>\n );\n }\n\n enabled(): boolean {\n return 'flarum-tags' in flarum.extensions;\n }\n}\n","import MentionFormat from './MentionFormat';\nimport MentionableModel from '../MentionableModel';\nimport TagMention from '../TagMention';\n\nexport default class HashMentionFormat extends MentionFormat {\n public mentionables: (new (...args: any[]) => MentionableModel)[] = [TagMention];\n protected extendable: boolean = true;\n\n public trigger(): string {\n return '#';\n }\n\n public queryFromTyped(typed: string): string | null {\n const matchTyped = typed.match(/^[-_\\p{L}\\p{N}\\p{M}]+$/giu);\n\n return matchTyped ? matchTyped[0] : null;\n }\n\n public format(slug: string): string {\n return `#${slug}`;\n }\n}\n","import AtMentionFormat from './AtMentionFormat';\nimport HashMentionFormat from './HashMentionFormat';\nimport type MentionFormat from './MentionFormat';\nimport MentionableModel from '../MentionableModel';\n\nexport default class MentionFormats {\n protected formats: MentionFormat[] = [new AtMentionFormat(), new HashMentionFormat()];\n\n public get(symbol: string): MentionFormat | null {\n return this.formats.find((f) => f.trigger() === symbol) ?? null;\n }\n\n public mentionable(type: string): MentionableModel | null {\n for (const format of this.formats) {\n const mentionable = format.getMentionable(type);\n\n if (mentionable) return mentionable;\n }\n\n return null;\n }\n\n public extend(format: new () => MentionFormat) {\n this.formats.push(new format());\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostsUserPage'];","import app from 'flarum/forum/app';\nimport PostsUserPage from 'flarum/forum/components/PostsUserPage';\n\n/**\n * The `MentionsUserPage` component shows post which user Mentioned at\n */\nexport default class MentionsUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param {Integer} [offset] The position to start getting results from.\n * @return {Promise}\n * @protected\n */\n loadResults(offset) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n mentioned: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport MentionsUserPage from './components/MentionsUserPage';\n\nexport default [\n new Extend.Routes() //\n .add('user.mentions', '/u/:username/mentions', MentionsUserPage),\n\n new Extend.Model(Post) //\n .hasMany<Post>('mentionedBy')\n .attribute<number>('mentionedByCount'),\n\n new Extend.Model(User) //\n .attribute<boolean>('canMentionGroups'),\n];\n","import app from 'flarum/forum/app';\nimport username from 'flarum/common/helpers/username';\nimport extractText from 'flarum/common/utils/extractText';\n\nexport function filterUserMentions(tag) {\n let user;\n\n if (app.forum.attribute('allowUsernameMentionFormat') && tag.hasAttribute('username'))\n user = app.store.getBy('users', 'username', tag.getAttribute('username'));\n else if (tag.hasAttribute('id')) user = app.store.getById('users', tag.getAttribute('id'));\n\n if (user) {\n tag.setAttribute('id', user.id());\n tag.setAttribute('slug', user.slug());\n tag.setAttribute('displayname', extractText(username(user)));\n\n return true;\n }\n\n tag.invalidate();\n}\n\nexport function postFilterUserMentions(tag) {\n tag.setAttribute('deleted', false);\n}\n\nexport function filterPostMentions(tag) {\n const post = app.store.getById('posts', tag.getAttribute('id'));\n\n if (post) {\n tag.setAttribute('discussionid', post.discussion().id());\n tag.setAttribute('number', post.number());\n tag.setAttribute('displayname', extractText(username(post.user())));\n\n return true;\n }\n}\n\nexport function postFilterPostMentions(tag) {\n tag.setAttribute('deleted', false);\n}\n\nexport function filterGroupMentions(tag) {\n if (app.session?.user?.canMentionGroups()) {\n const group = app.store.getById('groups', tag.getAttribute('id'));\n\n if (group) {\n tag.setAttribute('groupname', extractText(group.namePlural()));\n\n return true;\n }\n }\n\n tag.invalidate();\n}\n\nexport function postFilterGroupMentions(tag) {\n if (app.session?.user?.canMentionGroups()) {\n const group = app.store.getById('groups', tag.getAttribute('id'));\n\n tag.setAttribute('color', group.color());\n tag.setAttribute('icon', group.icon());\n tag.setAttribute('deleted', false);\n }\n}\n\nexport function filterTagMentions(tag) {\n if ('flarum-tags' in flarum.extensions) {\n const model = app.store.getBy('tags', 'slug', tag.getAttribute('slug'));\n\n if (model) {\n tag.setAttribute('id', model.id());\n tag.setAttribute('tagname', model.name());\n\n return true;\n }\n }\n\n tag.invalidate();\n}\n\nexport function postFilterTagMentions(tag) {\n if ('flarum-tags' in flarum.extensions) {\n const model = app.store.getBy('tags', 'slug', tag.getAttribute('slug'));\n\n tag.setAttribute('icon', model.icon());\n tag.setAttribute('color', model.color());\n tag.setAttribute('deleted', false);\n }\n}\n","import GroupMentionedNotification from './components/GroupMentionedNotification';\nimport MentionsUserPage from './components/MentionsUserPage';\nimport PostMentionedNotification from './components/PostMentionedNotification';\nimport UserMentionedNotification from './components/UserMentionedNotification';\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport PostQuoteButton from './fragments/PostQuoteButton';\nimport getCleanDisplayName from './utils/getCleanDisplayName';\nimport getMentionText from './utils/getMentionText';\nimport * as reply from './utils/reply';\nimport selectedText from './utils/selectedText';\nimport * as textFormatter from './utils/textFormatter';\nimport MentionableModel from './mentionables/MentionableModel';\nimport MentionFormat from './mentionables/formats/MentionFormat';\nimport Mentionables from './extenders/Mentionables';\n\nexport default {\n 'mentions/components/MentionsUserPage': MentionsUserPage,\n 'mentions/components/PostMentionedNotification': PostMentionedNotification,\n 'mentions/components/UserMentionedNotification': UserMentionedNotification,\n 'mentions/components/GroupMentionedNotification': GroupMentionedNotification,\n 'mentions/fragments/AutocompleteDropdown': AutocompleteDropdown,\n 'mentions/fragments/PostQuoteButton': PostQuoteButton,\n 'mentions/utils/getCleanDisplayName': getCleanDisplayName,\n 'mentions/utils/getMentionText': getMentionText,\n 'mentions/utils/reply': reply,\n 'mentions/utils/selectedText': selectedText,\n 'mentions/utils/textFormatter': textFormatter,\n 'mentions/mentionables/MentionableModel': MentionableModel,\n 'mentions/mentionables/formats/MentionFormat': MentionFormat,\n 'mentions/extenders/Mentionables': Mentionables,\n};\n","import app from 'flarum/forum/app';\n\n/**\n * Fetches the mention text for a specified user (and optionally a post ID for replies or group).\n *\n * Automatically determines which mention syntax to be used based on the option in the\n * admin dashboard. Also performs display name clean-up automatically.\n *\n * @deprecated Use `app.mentionables.get('user').replacement(user)` instead. Will be removed in 2.0.\n */\nexport default function getMentionText(user, postId, group) {\n if (user !== undefined && postId === undefined) {\n return app.mentionables.get('user').replacement(user);\n } else if (user !== undefined && postId !== undefined) {\n return app.mentionables.get('post').replacement(app.store.getById('posts', postId));\n } else if (group !== undefined) {\n return app.mentionables.get('group').replacement(group);\n }\n\n throw 'No parameters were passed';\n}\n","import type ForumApplication from 'flarum/forum/ForumApplication';\nimport type IExtender from 'flarum/common/extenders/IExtender';\nimport type MentionableModel from '../mentionables/MentionableModel';\nimport type MentionFormat from '../mentionables/formats/MentionFormat';\n\nexport default class Mentionables implements IExtender<ForumApplication> {\n protected formats: (new () => MentionFormat)[] = [];\n protected mentionables: Record<string, (new (...args: any[]) => MentionableModel)[]> = {};\n\n /**\n * Register a new mention format.\n * Must extend MentionFormat and have a unique unused trigger symbol.\n */\n format(format: new () => MentionFormat): this {\n this.formats.push(format);\n\n return this;\n }\n\n /**\n * Register a new mentionable model to a mention format.\n * Only works if the format has already been registered,\n * and the format allows using multiple mentionables.\n *\n * @param symbol The trigger symbol of the format to extend (ex: @).\n * @param mentionable The mentionable instance to register.\n * Must extend MentionableModel.\n */\n mentionable(symbol: string, mentionable: new (...args: any[]) => MentionableModel): this {\n if (!this.mentionables[symbol]) {\n this.mentionables[symbol] = [];\n }\n\n this.mentionables[symbol].push(mentionable);\n\n return this;\n }\n\n extend(app: ForumApplication): void {\n for (const format of this.formats) {\n app.mentionFormats.extend(format);\n }\n\n for (const symbol in this.mentionables) {\n const format = app.mentionFormats.get(symbol);\n\n if (!format) continue;\n\n for (const mentionable of this.mentionables[symbol]) {\n format.extend(mentionable);\n }\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\nimport { getPlainContent } from 'flarum/common/utils/string';\nimport textContrastClass from 'flarum/common/helpers/textContrastClass';\nimport Post from 'flarum/forum/components/Post';\n\nimport addPostMentionPreviews from './addPostMentionPreviews';\nimport addMentionedByList from './addMentionedByList';\nimport addPostReplyAction from './addPostReplyAction';\nimport addPostQuoteButton from './addPostQuoteButton';\nimport addComposerAutocomplete from './addComposerAutocomplete';\nimport PostMentionedNotification from './components/PostMentionedNotification';\nimport UserMentionedNotification from './components/UserMentionedNotification';\nimport GroupMentionedNotification from './components/GroupMentionedNotification';\nimport MentionFormats from './mentionables/formats/MentionFormats';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\n\napp.mentionFormats = new MentionFormats();\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-mentions', function () {\n // For every mention of a post inside a post's content, set up a hover handler\n // that shows a preview of the mentioned post.\n addPostMentionPreviews();\n\n // In the footer of each post, show information about who has replied (i.e.\n // who the post has been mentioned by).\n addMentionedByList();\n\n // Add a 'reply' control to the footer of each post. When clicked, it will\n // open up the composer and add a post mention to its contents.\n addPostReplyAction();\n\n // Show a Quote button when Post text is selected\n addPostQuoteButton();\n\n // After typing '@' in the composer, show a dropdown suggesting a bunch of\n // posts or users that the user could mention.\n addComposerAutocomplete();\n\n app.notificationComponents.postMentioned = PostMentionedNotification;\n app.notificationComponents.userMentioned = UserMentionedNotification;\n app.notificationComponents.groupMentioned = GroupMentionedNotification;\n\n // Add notification preferences.\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postMentioned', {\n name: 'postMentioned',\n icon: 'fas fa-reply',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_post_mentioned_label'),\n });\n\n items.add('userMentioned', {\n name: 'userMentioned',\n icon: 'fas fa-at',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_user_mentioned_label'),\n });\n\n items.add('groupMentioned', {\n name: 'groupMentioned',\n icon: 'fas fa-at',\n label: app.translator.trans('flarum-mentions.forum.settings.notify_group_mentioned_label'),\n });\n });\n\n // Add mentions tab in user profile\n extend(UserPage.prototype, 'navItems', function (items) {\n const user = this.user;\n items.add(\n 'mentions',\n <LinkButton href={app.route('user.mentions', { username: user.slug() })} name=\"mentions\" icon=\"fas fa-at\">\n {app.translator.trans('flarum-mentions.forum.user.mentions_link')}\n </LinkButton>,\n 80\n );\n });\n\n // Remove post mentions when rendering post previews.\n getPlainContent.removeSelectors.push('a.PostMention');\n\n // Apply color contrast fix on group mentions.\n extend(Post.prototype, 'oncreate', function () {\n this.$('.GroupMention--colored, .TagMention--colored').each(function () {\n this.classList.add(textContrastClass(getComputedStyle(this).getPropertyValue('--color')));\n });\n });\n});\n\nexport * from './utils/textFormatter';\n\n// Expose compat API\nimport mentionsCompat from './compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, mentionsCompat);\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport TextEditor from 'flarum/common/components/TextEditor';\nimport TextEditorButton from 'flarum/common/components/TextEditorButton';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\n\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport MentionableModels from './mentionables/MentionableModels';\n\nexport default function addComposerAutocomplete() {\n const $container = $('<div class=\"ComposerBody-mentionsDropdownContainer\"></div>');\n const dropdown = new AutocompleteDropdown();\n\n extend(TextEditor.prototype, 'oncreate', function () {\n const $editor = this.$('.TextEditor-editor').wrap('<div class=\"ComposerBody-mentionsWrapper\"></div>');\n\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .when(() => dropdown.active)\n .onUp(() => dropdown.navigate(-1))\n .onDown(() => dropdown.navigate(1))\n .onSelect(dropdown.complete.bind(dropdown))\n .onCancel(dropdown.hide.bind(dropdown))\n .bindTo($editor);\n\n $editor.after($container);\n });\n\n extend(TextEditor.prototype, 'buildEditorParams', function (params) {\n let relMentionStart;\n let absMentionStart;\n let matchTyped;\n\n let mentionables = new MentionableModels({\n onmouseenter: function () {\n dropdown.setIndex($(this).parent().index());\n },\n onclick: (replacement) => {\n this.attrs.composer.editor.replaceBeforeCursor(absMentionStart - 1, replacement + ' ');\n\n dropdown.hide();\n },\n });\n\n const suggestionsInputListener = () => {\n const selection = this.attrs.composer.editor.getSelectionRange();\n\n const cursor = selection[0];\n\n if (selection[1] - cursor > 0) return;\n\n // Search backwards from the cursor for a mention triggering symbol. If we find one,\n // we will want to show the correct autocomplete dropdown!\n // Check classes implementing the IMentionableModel interface to see triggering symbols.\n const lastChunk = this.attrs.composer.editor.getLastNChars(30);\n absMentionStart = 0;\n let activeFormat = null;\n for (let i = lastChunk.length - 1; i >= 0; i--) {\n const character = lastChunk.substr(i, 1);\n activeFormat = app.mentionFormats.get(character);\n\n if (activeFormat && (i === 0 || /\\s/.test(lastChunk.substr(i - 1, 1)))) {\n relMentionStart = i + 1;\n absMentionStart = cursor - lastChunk.length + i + 1;\n mentionables.init(activeFormat.makeMentionables());\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (absMentionStart) {\n const typed = lastChunk.substring(relMentionStart).toLowerCase();\n matchTyped = activeFormat.queryFromTyped(typed);\n\n if (!matchTyped) return;\n\n mentionables.typed = matchTyped;\n\n const buildSuggestions = () => {\n // If the user has started to type a mention,\n // then suggest models matching.\n const suggestions = mentionables.buildSuggestions();\n\n if (suggestions.length) {\n dropdown.items = suggestions;\n m.render($container[0], dropdown.render());\n\n dropdown.show();\n const coordinates = this.attrs.composer.editor.getCaretCoordinates(absMentionStart);\n const width = dropdown.$().outerWidth();\n const height = dropdown.$().outerHeight();\n const parent = dropdown.$().offsetParent();\n let left = coordinates.left;\n let top = coordinates.top + 15;\n\n // Keep the dropdown inside the editor.\n if (top + height > parent.height()) {\n top = coordinates.top - height - 15;\n }\n if (left + width > parent.width()) {\n left = parent.width() - width;\n }\n\n // Prevent the dropdown from going off screen on mobile\n top = Math.max(-(parent.offset().top - $(document).scrollTop()), top);\n left = Math.max(-parent.offset().left, left);\n\n dropdown.show(left, top);\n } else {\n dropdown.active = false;\n dropdown.hide();\n }\n };\n\n dropdown.active = true;\n\n buildSuggestions();\n\n dropdown.setIndex(0);\n dropdown.$().scrollTop(0);\n\n mentionables.search()?.then(buildSuggestions);\n }\n };\n\n params.inputListeners.push(suggestionsInputListener);\n });\n\n extend(TextEditor.prototype, 'toolbarItems', function (items) {\n items.add(\n 'mention',\n <TextEditorButton onclick={() => this.attrs.composer.editor.insertAtCursor(' @')} icon=\"fas fa-at\">\n {app.translator.trans('flarum-mentions.forum.composer.mention_tooltip')}\n </TextEditorButton>\n );\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport default function addPostMentionPreviews() {\n function addPreviews() {\n const contentHtml = this.attrs.post.contentHtml();\n\n if (contentHtml === this.oldPostContentHtml || this.isEditing()) return;\n\n this.oldPostContentHtml = contentHtml;\n\n const parentPost = this.attrs.post;\n const $parentPost = this.$();\n\n this.$().on(\n 'click',\n '.UserMention:not(.UserMention--deleted), .PostMention:not(.PostMention--deleted), .TagMention:not(.TagMention--deleted)',\n function (e) {\n m.route.set(this.getAttribute('href'));\n e.preventDefault();\n }\n );\n\n this.$('.PostMention:not(.PostMention--deleted)').each(function () {\n const $this = $(this);\n const id = $this.data('id');\n let timeout;\n\n // Wrap the mention link in a wrapper element so that we can insert a\n // preview popup as its sibling and relatively position it.\n const $preview = $('<ul class=\"Dropdown-menu PostMention-preview fade\"/>');\n $parentPost.append($preview);\n\n const getPostElement = () => {\n return $(`.PostStream-item[data-id=\"${id}\"]`);\n };\n\n const showPreview = () => {\n // When the user hovers their mouse over the mention, look for the\n // post that it's referring to in the stream, and determine if it's\n // in the viewport. If it is, we will \"pulsate\" it.\n const $post = getPostElement();\n let visible = false;\n if ($post.length) {\n const top = $post.offset().top;\n const scrollTop = window.pageYOffset;\n if (top > scrollTop && top + $post.height() < scrollTop + $(window).height()) {\n $post.addClass('pulsate');\n visible = true;\n }\n }\n\n // Otherwise, we will show a popup preview of the post. If the post\n // hasn't yet been loaded, we will need to do that.\n if (!visible) {\n // Position the preview so that it appears above the mention.\n // (The offsetParent should be .Post-body.)\n const positionPreview = () => {\n const previewHeight = $preview.outerHeight(true);\n let offset = 0;\n\n // If the preview goes off the top of the viewport, reposition it to\n // be below the mention.\n if ($this.offset().top - previewHeight < $(window).scrollTop() + $('#header').outerHeight()) {\n offset += $this.outerHeight(true);\n } else {\n offset -= previewHeight;\n }\n\n $preview\n .show()\n .css('top', $this.offset().top - $parentPost.offset().top + offset)\n .css('left', $this.offsetParent().offset().left - $parentPost.offset().left)\n .css('max-width', $this.offsetParent().width());\n };\n\n const showPost = (post) => {\n const discussion = post.discussion();\n\n m.render($preview[0], [\n discussion !== parentPost.discussion() && (\n <li>\n <span className=\"PostMention-preview-discussion\">{discussion.title()}</span>\n </li>\n ),\n <li>\n <PostPreview post={post} />\n </li>,\n ]);\n positionPreview();\n };\n\n const post = app.store.getById('posts', id);\n if (post && post.discussion()) {\n showPost(post);\n } else {\n m.render($preview[0], <LoadingIndicator />);\n app.store.find('posts', id).then(showPost);\n positionPreview();\n }\n\n setTimeout(() => $preview.off('transitionend').addClass('in'));\n }\n };\n\n const hidePreview = () => {\n getPostElement().removeClass('pulsate');\n if ($preview.hasClass('in')) {\n $preview.removeClass('in').one('transitionend', () => $preview.hide());\n }\n };\n\n // On a touch (mobile) device we cannot hover the link to reveal the preview.\n // Instead we cancel the navigation so that a click reveals the preview.\n // Users can then click on the preview to go to the post if desired.\n $this.on('touchend', (e) => {\n if (e.cancelable) {\n e.preventDefault();\n }\n });\n\n $this\n .add($preview)\n .hover(\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(showPreview, 250);\n },\n () => {\n clearTimeout(timeout);\n getPostElement().removeClass('pulsate');\n timeout = setTimeout(hidePreview, 250);\n }\n )\n .on('touchend', (e) => {\n showPreview();\n e.stopPropagation();\n });\n\n $(document).on('touchend', hidePreview);\n });\n }\n\n extend(CommentPost.prototype, 'oncreate', addPreviews);\n extend(CommentPost.prototype, 'onupdate', addPreviews);\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport PostPreview from 'flarum/forum/components/PostPreview';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\nimport MentionedByModal from './components/MentionedByModal';\n\nexport default function addMentionedByList() {\n function hidePreview() {\n this.$('.Post-mentionedBy-preview')\n .removeClass('in')\n .one('transitionend', function () {\n $(this).hide();\n });\n }\n\n extend(CommentPost.prototype, 'oncreate', function () {\n let timeout;\n const post = this.attrs.post;\n const replies = post.mentionedBy();\n\n if (replies && replies.length) {\n const $preview = $('<ul class=\"Dropdown-menu Post-mentionedBy-preview fade\"/>');\n this.$().append($preview);\n\n const $parentPost = this.$();\n const $this = this.$('.Post-mentionedBy');\n\n const showPreview = () => {\n if (!$preview.hasClass('in') && $preview.is(':visible')) return;\n\n // When the user hovers their mouse over the list of people who have\n // replied to the post, render a list of reply previews into a\n // popup.\n m.render(\n $preview[0],\n <>\n {replies.map((reply) => (\n <li data-number={reply.number()}>\n <PostPreview post={reply} onclick={hidePreview.bind(this)} />\n </li>\n ))}\n {replies.length < post.mentionedByCount() && (\n <li className=\"Post-mentionedBy-preview-more\">\n <Button\n className=\"PostPreview Button\"\n onclick={() => {\n hidePreview.call(this);\n app.modal.show(MentionedByModal, { post });\n }}\n >\n <span className=\"PostPreview-content\">\n <span className=\"PostPreview-badge Avatar\">{icon('fas fa-reply-all')}</span>\n <span>\n {app.translator.trans('flarum-mentions.forum.post.mentioned_by_more_text', { count: post.mentionedByCount() - replies.length })}\n </span>\n </span>\n </Button>\n </li>\n )}\n </>\n );\n\n $preview\n .show()\n .css('top', $this.offset().top - $parentPost.offset().top + $this.outerHeight(true))\n .css('left', $this.offsetParent().offset().left - $parentPost.offset().left)\n .css('max-width', $parentPost.width());\n\n setTimeout(() => $preview.off('transitionend').addClass('in'));\n };\n\n $this.add($preview).hover(\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(showPreview, 250);\n },\n () => {\n clearTimeout(timeout);\n timeout = setTimeout(hidePreview, 250);\n }\n );\n\n // Whenever the user hovers their mouse over a particular name in the\n // list of repliers, highlight the corresponding post in the preview\n // popup.\n this.$()\n .find('.Post-mentionedBy-summary a')\n .hover(\n function () {\n $preview.find('[data-number=\"' + $(this).data('number') + '\"]').addClass('active');\n },\n function () {\n $preview.find('[data-number]').removeClass('active');\n }\n );\n }\n });\n\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const replies = post.mentionedBy();\n\n if (replies && replies.length) {\n const users = [];\n const repliers = replies\n .sort((reply) => (reply.user() === app.session.user ? -1 : 0))\n .filter((reply) => {\n const user = reply.user();\n if (users.indexOf(user) === -1) {\n users.push(user);\n return true;\n }\n });\n\n const limit = 4;\n const overLimit = post.mentionedByCount() > limit;\n\n // Create a list of unique users who have replied. So even if a user has\n // replied twice, they will only be in this array once.\n const names = repliers.slice(0, overLimit ? limit - 1 : limit).map((reply) => {\n const user = reply.user();\n\n return (\n <Link href={app.route.post(reply)} onclick={hidePreview.bind(this)} data-number={reply.number()}>\n {app.session.user === user ? app.translator.trans('flarum-mentions.forum.post.you_text') : username(user)}\n </Link>\n );\n });\n\n // If there are more users that we've run out of room to display, add a \"x\n // others\" name to the end of the list. Clicking on it will display a modal\n // with a full list of names.\n if (overLimit) {\n const count = post.mentionedByCount() - names.length;\n\n names.push(app.translator.trans('flarum-mentions.forum.post.others_text', { count }));\n }\n\n items.add(\n 'replies',\n <div className=\"Post-mentionedBy\">\n <span className=\"Post-mentionedBy-summary\">\n {icon('fas fa-reply')}\n {app.translator.trans(`flarum-mentions.forum.post.mentioned_by${repliers[0].user() === app.session.user ? '_self' : ''}_text`, {\n count: names.length,\n users: punctuateSeries(names),\n })}\n </span>\n </div>\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nimport reply from './utils/reply';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || (app.session.user && !post.discussion().canReply())) return;\n\n items.add(\n 'reply',\n <Button className=\"Button Button--link\" onclick={() => reply(post)}>\n {app.translator.trans('flarum-mentions.forum.post.reply_link')}\n </Button>\n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nimport PostQuoteButton from './fragments/PostQuoteButton';\nimport selectedText from './utils/selectedText';\n\nexport default function addPostQuoteButton() {\n extend(CommentPost.prototype, 'oncreate', function () {\n const post = this.attrs.post;\n\n if (post.isHidden() || (app.session.user && !post.discussion().canReply())) return;\n\n const $postBody = this.$('.Post-body');\n\n // Wrap the quote button in a wrapper element so that we can render\n // button into it.\n const $container = $('<div class=\"Post-quoteButtonContainer\"></div>');\n\n const button = new PostQuoteButton(post);\n\n const handler = function (e) {\n setTimeout(() => {\n const content = selectedText($postBody);\n if (content) {\n button.content = content;\n m.render($container[0], button.render());\n\n const rects = window.getSelection().getRangeAt(0).getClientRects();\n const firstRect = rects[0];\n\n if (e.clientY < firstRect.bottom && e.clientX - firstRect.right < firstRect.left - e.clientX) {\n button.showStart(firstRect.left, firstRect.top);\n } else {\n const lastRect = rects[rects.length - 1];\n button.showEnd(lastRect.right, lastRect.bottom);\n }\n }\n }, 1);\n };\n\n this.$().after($container).on('mouseup', handler);\n\n if ('ontouchstart' in window) {\n document.addEventListener('selectionchange', handler, false);\n }\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\n\nexport default class SubscriptionMenuItem extends Component {\n view() {\n return (\n <button className=\"SubscriptionMenuItem hasIcon\" onclick={this.attrs.onclick}>\n {this.attrs.active && icon('fas fa-check', { className: 'Button-icon' })}\n <span className=\"SubscriptionMenuItem-label\">\n {icon(this.attrs.icon, { className: 'Button-icon' })}\n <strong>{this.attrs.label}</strong>\n <span className=\"SubscriptionMenuItem-description\">{this.attrs.description}</span>\n </span>\n </button>\n );\n }\n}\n","import app from 'flarum/forum/app';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport icon from 'flarum/common/helpers/icon';\nimport extractText from 'flarum/common/utils/extractText';\nimport classList from 'flarum/common/utils/classList';\n\nimport SubscriptionMenuItem from './SubscriptionMenuItem';\n\nexport default class SubscriptionMenu extends Dropdown {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.options = [\n {\n subscription: null,\n icon: 'far fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.not_following_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.not_following_text'),\n },\n {\n subscription: 'follow',\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.following_text'),\n },\n {\n subscription: 'ignore',\n icon: 'far fa-eye-slash',\n label: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button'),\n description: app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_text'),\n },\n ];\n }\n\n view() {\n const discussion = this.attrs.discussion;\n const subscription = discussion.subscription();\n\n let buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.follow_button');\n let buttonIcon = 'far fa-star';\n const buttonClass = 'SubscriptionMenu-button--' + subscription;\n\n switch (subscription) {\n case 'follow':\n buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.following_button');\n buttonIcon = 'fas fa-star';\n break;\n\n case 'ignore':\n buttonLabel = app.translator.trans('flarum-subscriptions.forum.sub_controls.ignoring_button');\n buttonIcon = 'far fa-eye-slash';\n break;\n\n default:\n // no default\n }\n\n const preferences = app.session.user.preferences();\n const notifyEmail = preferences['notify_newPost_email'];\n const notifyAlert = preferences['notify_newPost_alert'];\n const tooltipText = extractText(\n app.translator.trans(\n notifyEmail ? 'flarum-subscriptions.forum.sub_controls.notify_email_tooltip' : 'flarum-subscriptions.forum.sub_controls.notify_alert_tooltip'\n )\n );\n\n const shouldShowTooltip = (notifyEmail || notifyAlert) && subscription === null;\n\n const button = (\n <Button\n className={classList('Button', 'SubscriptionMenu-button', buttonClass)}\n icon={buttonIcon}\n onclick={this.saveSubscription.bind(this, discussion, ['follow', 'ignore'].indexOf(subscription) !== -1 ? null : 'follow')}\n >\n {buttonLabel}\n </Button>\n );\n\n return (\n <div className=\"Dropdown ButtonGroup SubscriptionMenu\">\n {shouldShowTooltip ? (\n <Tooltip text={tooltipText} position=\"bottom\">\n {button}\n </Tooltip>\n ) : (\n button\n )}\n\n <button className={classList('Dropdown-toggle Button Button--icon', buttonClass)} data-toggle=\"dropdown\">\n {icon('fas fa-caret-down', { className: 'Button-icon' })}\n </button>\n\n <ul className=\"Dropdown-menu dropdown-menu Dropdown-menu--right\">\n {this.options.map((attrs) => (\n <li>\n <SubscriptionMenuItem\n {...attrs}\n onclick={this.saveSubscription.bind(this, discussion, attrs.subscription)}\n active={subscription === attrs.subscription}\n />\n </li>\n ))}\n </ul>\n </div>\n );\n }\n\n saveSubscription(discussion, subscription) {\n discussion.save({ subscription });\n\n this.$('.SubscriptionMenu-button').tooltip('hide');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/GlobalSearchState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewPostNotification extends Notification {\n icon() {\n return 'fas fa-star';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n const content = notification.content() || {};\n\n return app.route.discussion(discussion, content.postNumber);\n }\n\n content() {\n return app.translator.trans('flarum-subscriptions.forum.notifications.new_post_text', { user: this.attrs.notification.fromUser() });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","import Extend from 'flarum/common/extenders';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Discussion from 'flarum/common/models/Discussion';\n\nexport default [\n new Extend.Routes() //\n .add('following', '/following', IndexPage),\n\n new Extend.Model(Discussion) //\n .attribute('subscription'),\n];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addSubscriptionBadge from './addSubscriptionBadge';\nimport addSubscriptionControls from './addSubscriptionControls';\nimport addSubscriptionFilter from './addSubscriptionFilter';\nimport addSubscriptionSettings from './addSubscriptionSettings';\n\nimport NewPostNotification from './components/NewPostNotification';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('subscriptions', function () {\n app.notificationComponents.newPost = NewPostNotification;\n\n addSubscriptionBadge();\n addSubscriptionControls();\n addSubscriptionFilter();\n addSubscriptionSettings();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('newPost', {\n name: 'newPost',\n icon: 'fas fa-star',\n label: app.translator.trans('flarum-subscriptions.forum.settings.notify_new_post_label'),\n });\n });\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addSubscriptionBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n let badge;\n\n switch (this.subscription()) {\n case 'follow':\n badge = <Badge label={app.translator.trans('flarum-subscriptions.forum.badge.following_tooltip')} icon=\"fas fa-star\" type=\"following\" />;\n break;\n\n case 'ignore':\n badge = <Badge label={app.translator.trans('flarum-subscriptions.forum.badge.ignoring_tooltip')} icon=\"far fa-eye-slash\" type=\"ignoring\" />;\n break;\n }\n\n if (badge) {\n badges.add('subscription', badge);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\n\nimport SubscriptionMenu from './components/SubscriptionMenu';\n\nexport default function addSubscriptionControls() {\n extend(DiscussionControls, 'userControls', function (items, discussion, context) {\n if (app.session.user && !(context instanceof DiscussionPage)) {\n const states = {\n none: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.follow_button'), icon: 'fas fa-star', save: 'follow' },\n follow: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unfollow_button'), icon: 'far fa-star', save: null },\n ignore: { label: app.translator.trans('flarum-subscriptions.forum.discussion_controls.unignore_button'), icon: 'fas fa-eye', save: null },\n };\n\n const subscription = discussion.subscription() || 'none';\n\n items.add(\n 'subscription',\n <Button icon={states[subscription].icon} onclick={discussion.save.bind(discussion, { subscription: states[subscription].save })}>\n {states[subscription].label}\n </Button>\n );\n }\n });\n\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (app.session.user) {\n const discussion = this.discussion;\n\n items.add('subscription', <SubscriptionMenu discussion={discussion} />, 80);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\n\nexport default function addSubscriptionFilter() {\n extend(IndexPage.prototype, 'navItems', function (items) {\n if (app.session.user) {\n const params = app.search.stickyParams();\n\n items.add(\n 'following',\n <LinkButton href={app.route('following', params)} icon=\"fas fa-star\">\n {app.translator.trans('flarum-subscriptions.forum.index.following_link')}\n </LinkButton>,\n 50\n );\n }\n });\n\n extend(IndexPage.prototype, 'setTitle', function () {\n if (app.current.get('routeName') === 'following') {\n app.setTitle(app.translator.trans('flarum-subscriptions.forum.following.meta_title_text'));\n }\n });\n\n extend(GlobalSearchState.prototype, 'params', function (params) {\n // We can't set `q` here directly, as that would make the search bar\n // think that text has been entered, and display the \"clear\" button.\n params.onFollowing = app.current.get('routeName') === 'following';\n });\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (this.params.onFollowing) {\n params.filter ||= {};\n\n if (params.filter.q) {\n params.filter.q += ' is:following';\n } else {\n params.filter.subscription = 'following';\n }\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport Switch from 'flarum/common/components/Switch';\n\nexport default function () {\n extend(SettingsPage.prototype, 'notificationsItems', function (this: SettingsPage, items) {\n items.add(\n 'followAfterReply',\n <Switch\n state={this.user.preferences().followAfterReply}\n onchange={(value) => {\n this.followAfterReplyLoading = true;\n\n this.user.savePreferences({ followAfterReply: value }).then(() => {\n this.followAfterReplyLoading = false;\n m.redraw();\n });\n }}\n loading={this.followAfterReplyLoading}\n >\n {app.translator.trans('flarum-subscriptions.forum.settings.follow_after_reply_label')}\n </Switch>\n );\n\n items.add(\n 'notifyForAllPosts',\n <Switch\n id=\"flarum_subscriptions__notify_for_all_posts\"\n state={!!this.user!.preferences()?.['flarum-subscriptions.notify_for_all_posts']}\n onchange={(val: boolean) => {\n this.user!.savePreferences({ 'flarum-subscriptions.notify_for_all_posts': val });\n }}\n >\n {app.translator.trans('flarum-subscriptions.forum.settings.notify_for_all_posts_label')}\n </Switch>\n );\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/punctuateSeries'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\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}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/states/PaginatedListState'];","import PaginatedListState, { PaginatedListParams } from 'flarum/common/states/PaginatedListState';\nimport User from 'flarum/common/models/User';\n\nexport interface PostLikesModalListParams extends PaginatedListParams {\n filter: {\n liked: string;\n };\n page?: {\n offset?: number;\n limit: number;\n };\n}\n\nexport default class PostLikesModalState<P extends PostLikesModalListParams = PostLikesModalListParams> extends PaginatedListState<User, P> {\n constructor(params: P, page: number = 1) {\n const limit = 10;\n\n params.page = { ...(params.page || {}), limit };\n\n super(params, page, limit);\n }\n\n get type(): string {\n return 'users';\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Link from 'flarum/common/components/Link';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport type { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport type Post from 'flarum/common/models/Post';\nimport type Mithril from 'mithril';\nimport PostLikesModalState from '../states/PostLikesModalState';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport interface IPostLikesModalAttrs extends IInternalModalAttrs {\n post: Post;\n}\n\nexport default class PostLikesModal<CustomAttrs extends IPostLikesModalAttrs = IPostLikesModalAttrs> extends Modal<CustomAttrs, PostLikesModalState> {\n oninit(vnode: Mithril.VnodeDOM<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.state = new PostLikesModalState({\n filter: {\n liked: this.attrs.post.id()!,\n },\n });\n\n this.state.refresh();\n }\n\n className() {\n return 'PostLikesModal Modal--small';\n }\n\n title() {\n return app.translator.trans('flarum-likes.forum.post_likes.title');\n }\n\n content() {\n return (\n <>\n <div className=\"Modal-body\">\n {this.state.isInitialLoading() ? (\n <LoadingIndicator />\n ) : (\n <ul className=\"PostLikesModal-list\">\n {this.state.getPages().map((page) =>\n page.items.map((user) => (\n <li>\n <Link href={app.route.user(user)}>\n {avatar(user)} {username(user)}\n </Link>\n </li>\n ))\n )}\n </ul>\n )}\n </div>\n {this.state.hasNext() ? (\n <div className=\"Modal-footer\">\n <div className=\"Form Form--centered\">\n <div className=\"Form-group\">\n <Button className=\"Button Button--block\" onclick={() => this.state.loadNext()} loading={this.state.isLoadingNext()}>\n {app.translator.trans('flarum-likes.forum.post_likes.load_more_button')}\n </Button>\n </div>\n </div>\n </div>\n ) : null}\n </>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostLikedNotification extends Notification {\n icon() {\n return 'far fa-thumbs-up';\n }\n\n href() {\n return app.route.post(this.attrs.notification.subject());\n }\n\n content() {\n const notification = this.attrs.notification;\n const user = notification.fromUser();\n\n return app.translator.trans('flarum-likes.forum.notifications.post_liked_text', { user, count: 1 });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostsUserPage'];","import app from 'flarum/forum/app';\nimport PostsUserPage from 'flarum/forum/components/PostsUserPage';\n\n/**\n * The `LikesUserPage` component shows posts which user the user liked.\n */\nexport default class LikesUserPage extends PostsUserPage {\n /**\n * Load a new page of the user's activity feed.\n *\n * @param offset The position to start getting results from.\n * @protected\n */\n loadResults(offset: number) {\n return app.store.find('posts', {\n filter: {\n type: 'comment',\n likedBy: this.user.id(),\n },\n page: { offset, limit: this.loadLimit },\n sort: '-createdAt',\n });\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Post from 'flarum/common/models/Post';\nimport User from 'flarum/common/models/User';\nimport LikesUserPage from './components/LikesUserPage';\n\nexport default [\n new Extend.Routes() //\n .add('user.likes', '/u/:username/likes', LikesUserPage),\n\n new Extend.Model(Post) //\n .hasMany<User>('likes')\n .attribute<number>('likesCount')\n .attribute<boolean>('canLike'),\n];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addLikeAction from './addLikeAction';\nimport addLikesList from './addLikesList';\nimport PostLikedNotification from './components/PostLikedNotification';\nimport addLikesTabToUserProfile from './addLikesTabToUserProfile';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-likes', () => {\n app.notificationComponents.postLiked = PostLikedNotification;\n\n addLikeAction();\n addLikesList();\n addLikesTabToUserProfile();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('postLiked', {\n name: 'postLiked',\n icon: 'far fa-thumbs-up',\n label: app.translator.trans('flarum-likes.forum.settings.notify_post_liked_label'),\n });\n });\n});\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nexport default function () {\n extend(CommentPost.prototype, 'actionItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || !post.canLike()) return;\n\n const likes = post.likes();\n\n let isLiked = app.session.user && likes && likes.some((user) => user === app.session.user);\n\n items.add(\n 'like',\n <Button\n className=\"Button Button--link\"\n onclick={() => {\n isLiked = !isLiked;\n\n post.save({ isLiked });\n\n // We've saved the fact that we do or don't like the post, but in order\n // to provide instantaneous feedback to the user, we'll need to add or\n // remove the like from the relationship data manually.\n const data = post.data.relationships.likes.data;\n data.some((like, i) => {\n if (like.id === app.session.user.id()) {\n data.splice(i, 1);\n return true;\n }\n });\n\n if (isLiked) {\n data.unshift({ type: 'users', id: app.session.user.id() });\n }\n }}\n >\n {app.translator.trans(isLiked ? 'flarum-likes.forum.post.unlike_link' : 'flarum-likes.forum.post.like_link')}\n </Button>\n );\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Link from 'flarum/common/components/Link';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport Button from 'flarum/common/components/Button';\n\nimport PostLikesModal from './components/PostLikesModal';\n\nexport default function () {\n extend(CommentPost.prototype, 'footerItems', function (items) {\n const post = this.attrs.post;\n const likes = post.likes();\n\n if (likes && likes.length) {\n const limit = 4;\n const overLimit = post.likesCount() > limit;\n\n // Construct a list of names of users who have liked this post. Make sure the\n // current user is first in the list, and cap a maximum of 4 items.\n const names = likes\n .sort((a) => (a === app.session.user ? -1 : 1))\n .slice(0, overLimit ? limit - 1 : limit)\n .map((user) => {\n return (\n <Link href={app.route.user(user)}>\n {user === app.session.user ? app.translator.trans('flarum-likes.forum.post.you_text') : username(user)}\n </Link>\n );\n });\n\n // If there are more users that we've run out of room to display, add a \"x\n // others\" name to the end of the list. Clicking on it will display a modal\n // with a full list of names.\n if (overLimit) {\n const count = post.likesCount() - names.length;\n const label = app.translator.trans('flarum-likes.forum.post.others_link', { count });\n\n if (app.forum.attribute('canSearchUsers')) {\n names.push(\n <Button\n className=\"Button Button--ua-reset Button--text\"\n onclick={(e) => {\n e.preventDefault();\n app.modal.show(PostLikesModal, { post });\n }}\n >\n {label}\n </Button>\n );\n } else {\n names.push(<span>{label}</span>);\n }\n }\n\n items.add(\n 'liked',\n <div className=\"Post-likedBy\">\n {icon('far fa-thumbs-up')}\n {app.translator.trans(`flarum-likes.forum.post.liked_by${likes[0] === app.session.user ? '_self' : ''}_text`, {\n count: names.length,\n users: punctuateSeries(names),\n })}\n </div>\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\n\nexport default function addLikesTabToUserProfile() {\n extend(UserPage.prototype, 'navItems', function (items: ItemList<Mithril.Children>) {\n const user = this.user;\n items.add(\n 'likes',\n <LinkButton href={app.route('user.likes', { username: user?.slug() })} icon=\"far fa-thumbs-up\">\n {app.translator.trans('flarum-likes.forum.user.likes_link')}\n </LinkButton>,\n 88\n );\n });\n}\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import { Widget } from '../extend/Widgets';\n\nexport default function sortWidgets(widgets: Widget[]): Widget[] {\n return widgets.slice(0).sort((a, b) => {\n const aPos = a.position!;\n const bPos = b.position!;\n return aPos > bPos ? 1 : aPos < bPos ? -1 : 0;\n });\n}\n","module.exports = flarum.core.compat['common/Component'];","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}","module.exports = flarum.core.compat['common/utils/classList'];","module.exports = flarum.core.compat['common/helpers/icon'];","import { Widget } from '../common/extend/Widgets';\n\nexport default class WidgetManager {\n public widgets: Widget[] = [];\n\n /**\n * We only have this because the way we're injecting the widget sections\n * ends up with the widgets rerendering on navigation.\n */\n public states: any = {};\n\n private config: any = {};\n\n add(widget: Widget, extension: any): void {\n widget.extension = extension;\n widget.id = `${extension}:${widget.key}`;\n this.widgets.push(widget);\n this.states[widget.id] = {};\n }\n\n getbyId(id: string): Widget | null {\n return this.getWidgetInstances().find((w: Widget) => w.id === id) || null;\n }\n\n getWidgetInstances(): Widget[] {\n const disabled = this.config.disabled || [];\n const widgets = (this.config.instances || []).map(\n (widget: any): Widget => ({\n ...(this.widgets.find((w: Widget) => w.id === widget.id) || {}),\n ...widget,\n })\n );\n\n this.widgets.forEach((widget: Widget) => {\n const lookupWidget = widgets.find((w: any) => w.id === widget.id);\n\n if (!lookupWidget) {\n widgets.push(widget);\n }\n });\n\n return widgets.filter((widget: Widget) => !disabled.includes(widget.id));\n }\n\n get(placement: string, withHidden: boolean = false): Widget[] {\n const widgets: Widget[] = this.getWidgetInstances()\n .filter((widget: Widget) => widget.placement === placement)\n .filter((widget: Widget) => withHidden || (typeof widget.isDisabled === 'function' ? !widget.isDisabled() : !widget.isDisabled))\n .filter((widget: Widget) => {\n // @TODO forgetting to add the extension name on the saved data forces us to split the ID\n // remove this in a future version and use extension value directly.\n const extension = widget.extension || widget.id!.split(':')[0];\n\n return extension in flarum.extensions;\n })\n .map((widget: Widget) => ({ ...widget, extension: widget.extension || widget.id!.split(':')[0], state: this.states[widget.id!] }));\n\n return widgets;\n }\n\n setConfig(config: any): void {\n this.config = config;\n }\n}\n","module.exports = flarum.core;","import { Application } from 'src/shims';\n\nexport type Placement = 'start_top' | 'start_bottom' | 'end' | 'top' | 'bottom';\n\nexport type Widget = {\n id?: string;\n key: string;\n component: any;\n placement: Placement;\n isDisabled: boolean | (() => boolean);\n isUnique: boolean;\n position?: number;\n extension?: string;\n state?: any;\n};\n\nexport default class Widgets {\n private widgets: Widget[] = [];\n\n add(widget: Widget): this {\n this.widgets.push(widget);\n\n return this;\n }\n\n extend(app: Application, extension: string): void {\n this.widgets.map((widget: Widget) => {\n app.widgets.add(widget, extension);\n });\n }\n}\n","import * as Mithril from 'mithril';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport classList from 'flarum/common/utils/classList';\nimport icon from 'flarum/common/helpers/icon';\n\nexport interface WidgetAttrs extends ComponentAttrs {\n state: any;\n}\n\nexport default class Widget<T extends WidgetAttrs> extends Component<T> {\n view(): Mithril.Children {\n return (\n <div className={classList(['AfruxWidgets-Widget', this.className()])}>\n {this.header()}\n <div className=\"AfruxWidgets-Widget-content\">{this.content()}</div>\n </div>\n );\n }\n\n header(): Mithril.Children {\n const iconName = this.icon();\n const title = this.title();\n\n return title ? (\n <div className=\"AfruxWidgets-Widget-title\">\n {iconName ? <span className=\"AfruxWidgets-Widget-title-icon\">{icon(iconName)}</span> : null}\n <span className=\"AfruxWidgets-Widget-title-label\">{title}</span>\n <div className=\"AfruxWidgets-Widget-title-desc\">{this.description()}</div>\n </div>\n ) : null;\n }\n\n className(): string {\n return '';\n }\n\n title(): string {\n return '';\n }\n\n description(): string {\n return '';\n }\n\n icon(): string {\n return '';\n }\n\n content(): Mithril.Children {\n return '';\n }\n}\n","import Widgets from './extend/Widgets';\nimport Widget from './components/Widget';\n\nexport default {\n 'extensions/afrux-forum-widgets-core/common/extend/Widgets': Widgets,\n 'extensions/afrux-forum-widgets-core/common/components/Widget': Widget,\n};\n","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['forum/components/IndexPage'];","module.exports = flarum.core.compat['common/utils/Stream'];","import * as Mithril from 'mithril';\nimport Component from 'flarum/common/Component';\n\nimport sortWidgets from '../../common/utils/sortWidgets';\n\nexport default class EndWidgetSection extends Component {\n view(): Mithril.Children {\n return (\n <div className=\"AfruxWidgets-sideNavAlt AfruxWidgets-WidgetSection\">\n {sortWidgets(app.widgets.get('end')).map((widget) => widget.component.component({ state: widget.state }))}\n </div>\n );\n }\n}\n","import * as Mithril from 'mithril';\nimport Component from 'flarum/common/Component';\n\nimport sortWidgets from '../../common/utils/sortWidgets';\n\nexport default class StartTopWidgetSection extends Component {\n view(): Mithril.Children {\n if (app.current.data.routeName !== 'index') {\n return null;\n }\n\n return (\n <div className=\"AfruxWidgets-startTop AfruxWidgets-WidgetSection\">\n {sortWidgets(app.widgets.get('start_top')).map((widget) => widget.component.component({ state: widget.state }))}\n </div>\n );\n }\n}\n","import * as Mithril from 'mithril';\nimport Component from 'flarum/common/Component';\n\nimport sortWidgets from '../../common/utils/sortWidgets';\n\nexport default class StartBottomWidgetSection extends Component {\n view(): Mithril.Children {\n if (app.current.data.routeName !== 'index') {\n return null;\n }\n\n return (\n <div className=\"AfruxWidgets-startBottom AfruxWidgets-WidgetSection\">\n {sortWidgets(app.widgets.get('start_bottom')).map((widget) => widget.component.component({ state: widget.state }))}\n </div>\n );\n }\n}\n","import * as Mithril from 'mithril';\nimport Component from 'flarum/common/Component';\nimport Stream from 'flarum/common/utils/Stream';\nimport classList from 'flarum/common/utils/classList';\n\nimport sortWidgets from '../../common/utils/sortWidgets';\n\nexport default class TopWidgetSection extends Component {\n scrollEnd: Stream;\n\n oninit(vnode): void {\n super.oninit(vnode);\n\n this.scrollEnd = Stream(false);\n }\n\n view(): Mithril.Children {\n const isSmallScreen = ['phone', 'tablet'].includes(app.screen());\n\n return (\n <div\n className={classList({\n 'AfruxWidgets-topWidgetSection AfruxWidgets-WidgetSection': true,\n 'AfruxWidgets-WidgetSection--endScroll': isSmallScreen && this.scrollEnd(),\n })}\n onscroll={(e) => {\n if (isSmallScreen) {\n this.scrollEnd(false);\n\n if (e.target.offsetWidth + e.target.scrollLeft >= e.target.scrollWidth) {\n this.scrollEnd(true);\n }\n }\n }}\n >\n {sortWidgets(app.widgets.get('top')).map((widget) => widget.component.component({ state: widget.state }))}\n </div>\n );\n }\n}\n","import * as Mithril from 'mithril';\nimport Component from 'flarum/common/Component';\n\nimport sortWidgets from '../../common/utils/sortWidgets';\n\nexport default class BottomWidgetSection extends Component {\n view(): Mithril.Children {\n return (\n <div className=\"AfruxWidgets-bottomWidgetSection AfruxWidgets-WidgetSection\">\n {sortWidgets(app.widgets.get('bottom')).map((widget) => widget.component.component({ state: widget.state }))}\n </div>\n );\n }\n}\n","import compat from '../common/compat';\n\nimport EndWidgetSection from './components/EndWidgetSection';\nimport StartTopWidgetSection from './components/StartTopWidgetSection';\nimport StartBottomWidgetSection from './components/StartBottomWidgetSection';\nimport TopWidgetSection from './components/TopWidgetSection';\n\nexport default Object.assign(compat, {\n 'extensions/afrux-forum-widgets-core/forum/components/EndWidgetSection': EndWidgetSection,\n 'extensions/afrux-forum-widgets-core/forum/components/StartTopWidgetSection': StartTopWidgetSection,\n 'extensions/afrux-forum-widgets-core/forum/components/StartBottomWidgetSection': StartBottomWidgetSection,\n 'extensions/afrux-forum-widgets-core/forum/components/TopWidgetSection': TopWidgetSection,\n});\n","import * as Mithril from 'mithril';\nimport { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport type ItemList from 'flarum/common/utils/ItemList';\n\nimport WidgetManager from '../common/WidgetManager';\nimport EndWidgetSection from './components/EndWidgetSection';\nimport StartTopWidgetSection from './components/StartTopWidgetSection';\nimport StartBottomWidgetSection from './components/StartBottomWidgetSection';\nimport TopWidgetSection from './components/TopWidgetSection';\nimport BottomWidgetSection from './components/BottomWidgetSection';\n\napp.widgets = new WidgetManager();\n\napp.initializers.add('afrux/forum-widgets-core', () => {\n app.widgets.setConfig(app.data.resources[0].attributes['afrux-forum-widgets-core.config']);\n\n extend(IndexPage.prototype, 'view', function (vnode: Mithril.Vnode) {\n vnode.children[1].children[0].children.push(<EndWidgetSection />);\n vnode.children[1].children = [<TopWidgetSection />, ...vnode.children[1].children, <BottomWidgetSection />];\n });\n\n extend(IndexPage.prototype, 'sidebarItems', (items: ItemList) => {\n items.add('startTopWidgetSection', <StartTopWidgetSection />, 100);\n items.add('startBottomWidgetSection', <StartBottomWidgetSection />, -100);\n });\n});\n\n// Expose compat API\nimport customCompat from './compat';\n// @ts-ignore\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, customCompat);\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/UsersSearchSource'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/SelectDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Placeholder'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/humanTime'];","import UserCard from 'flarum/forum/components/UserCard';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport humanTime from 'flarum/common/utils/humanTime';\n\nexport default class SmallUserCard extends UserCard {\n //Overriding infoItems so that other extensions can separately add items to small cards\n infoItems() {\n const items = new ItemList();\n const user = this.attrs.user;\n\n items.add('joined', app.translator.trans('core.forum.user.joined_date_text', { ago: humanTime(user.joinTime()) }));\n\n return items;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","import UserCard from 'flarum/forum/components/UserCard';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport humanTime from 'flarum/common/utils/humanTime';\nimport icon from 'flarum/common/helpers/icon';\nimport app from 'flarum/forum/app';\n\nexport default class UserDirectoryUserCard extends UserCard {\n /**\n * Allowing to add additonal items unique to the user directory.\n *\n * @return {ItemList<import('mithril').Children>}\n */\n infoItems() {\n const items = super.infoItems();\n const user = this.attrs.user;\n\n if (items.has('lastSeen')) items.setPriority('lastSeen', 100);\n if (items.has('joined')) items.setPriority('joined', 95);\n if (items.has('points')) items.setPriority('points', 60);\n if (items.has('best-answer-count')) items.setPriority('best-answer-count', 68);\n if (items.has('masquerade-bio')) items.setPriority('masquerade-bio', 50);\n\n items.add(\n 'discussion-count',\n <div className=\"userStat\">\n {icon('fas fa-comment')}\n {app.translator.trans('fof-user-directory.forum.page.usercard.discussion-count', {\n count: user.discussionCount(),\n })}\n </div>,\n 70\n );\n\n items.add(\n 'comment-count',\n <div className=\"userStat\">\n {icon('fas fa-comments')}\n {app.translator.trans('fof-user-directory.forum.page.usercard.post-count', {\n count: user.commentCount(),\n })}\n </div>,\n 69\n );\n\n return items;\n }\n}\n","import Component from 'flarum/common/Component';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport SmallUserCard from './SmallUserCard';\nimport UserDirectoryUserCard from './UserDirectoryUserCard';\n\nexport default class UserDirectoryListItem extends Component {\n view(vnode) {\n const { user, useSmallCards } = this.attrs;\n\n const attributes = {\n user,\n className: `UserCard--directory${useSmallCards ? ' UserCard--small' : ''}`,\n controlsButtonClassName: 'Button Button--icon Button--flat',\n };\n\n return <div className=\"User\">{useSmallCards ? SmallUserCard.component(attributes) : UserDirectoryUserCard.component(attributes)}</div>;\n }\n}\n","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Placeholder from 'flarum/common/components/Placeholder';\nimport UserDirectoryListItem from './UserDirectoryListItem';\n\n/**\n * Based on Flarum's DiscussionList\n */\nexport default class UserDirectoryList extends Component {\n view() {\n const { state } = this.attrs;\n\n const params = state.getParams();\n const useSmallCards = app.forum.attribute('userDirectorySmallCards');\n let loading;\n\n if (state.isLoading()) {\n loading = LoadingIndicator.component();\n } else if (state.moreResults) {\n loading = Button.component(\n {\n className: 'Button',\n onclick: state.loadMore.bind(state),\n },\n app.translator.trans('fof-user-directory.forum.page.load_more_button')\n );\n }\n\n if (state.empty()) {\n const text = app.translator.trans('fof-user-directory.forum.page.empty_text');\n return <div className=\"DiscussionList\">{Placeholder.component({ text })}</div>;\n }\n\n return (\n <div\n className={\n 'UserDirectoryList' +\n (state.isSearchResults() ? ' UserDirectoryList--searchResults' : '') +\n (useSmallCards ? ' UserDirectoryList--small-cards' : '')\n }\n >\n <ul className=\"UserDirectoryList-users\">\n {state.users.map((user) => {\n return (\n <li key={user.id()} data-id={user.id()}>\n {UserDirectoryListItem.component({ user, params, useSmallCards })}\n </li>\n );\n })}\n </ul>\n <div className=\"UserDirectoryList-loadMore\">{loading}</div>\n </div>\n );\n }\n}\n","/**\n * The sort options.\n * We use a class and not just a POJO/function because we want extensions to be able to extend it\n */\nexport default class SortMap {\n sortMap() {\n return {\n username_az: 'username',\n username_za: '-username',\n newest: '-joinedAt',\n oldest: 'joinedAt',\n most_discussions: '-discussionCount',\n least_discussions: 'discussionCount',\n };\n }\n}\n","/**\n * Based on Flarum's DiscussionListState\n */\nimport SortMap from '../../common/utils/SortMap';\n\nexport default class UserDirectoryState {\n constructor(params = {}, app = window.app) {\n this.params = params;\n\n this.app = app;\n\n this.users = [];\n\n this.moreResults = false;\n\n this.loading = false;\n\n this.qBuilder = {};\n }\n\n requestParams() {\n const params = { include: [], filter: {} };\n\n const sortKey = this.params.sort || app.forum.attribute('userDirectoryDefaultSort');\n\n // sort might be set to null if no sort params has been passed\n params.sort = this.sortMap()[sortKey];\n\n if (this.params.q) {\n params.filter.q = this.params.q;\n }\n\n return params;\n }\n\n sortMap() {\n return {\n default: '',\n ...new SortMap().sortMap(),\n };\n }\n\n getParams() {\n return this.params;\n }\n\n clear() {\n this.users = [];\n m.redraw();\n }\n\n refreshParams(newParams) {\n if (!this.hasUsers() || Object.keys(newParams).some((key) => this.getParams()[key] !== newParams[key])) {\n const q = '';\n this.params = newParams;\n\n if (newParams.qBuilder) {\n Object.assign(this.qBuilder, newParams.qBuilder || {});\n this.params.q = Object.values(this.qBuilder).join(' ').trim();\n }\n\n if (!this.params.q && q) {\n this.params.q = q;\n }\n\n this.refresh();\n }\n }\n\n refresh() {\n this.loading = true;\n\n this.clear();\n\n return this.loadResults().then(\n (results) => {\n this.users = [];\n this.parseResults(results);\n },\n () => {\n this.loading = false;\n m.redraw();\n }\n );\n }\n\n loadResults(offset) {\n const preloadedUsers = this.app.preloadedApiDocument();\n\n if (preloadedUsers) {\n return Promise.resolve(preloadedUsers);\n }\n\n const params = this.requestParams();\n params.page = { offset };\n params.include = params.include.join(',');\n\n return this.app.store.find('users', params);\n }\n\n loadMore() {\n this.loading = true;\n\n this.loadResults(this.users.length).then(this.parseResults.bind(this));\n }\n\n parseResults(results) {\n this.users.push(...results);\n\n this.loading = false;\n this.moreResults = !!results.payload.links && !!results.payload.links.next;\n\n m.redraw();\n\n return results;\n }\n\n hasUsers() {\n return this.users.length > 0;\n }\n\n isLoading() {\n return this.loading;\n }\n\n isSearchResults() {\n return !!this.params.q;\n }\n\n empty() {\n return !this.hasUsers() && !this.isLoading();\n }\n}\n","import Button from 'flarum/common/components/Button';\nimport icon from 'flarum/common/helpers/icon';\n\nexport default class CheckableButton extends Button {\n /**\n * Get the template for the button's content.\n *\n * @return {*}\n * @protected\n */\n getButtonContent(children) {\n const prev = super.getButtonContent(children);\n\n if (this.attrs.checked) prev.push(icon('fas fa-check', { className: 'Button-icon ButtonCheck' }));\n\n return prev;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/withAttr'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/ItemList'];","/**\n * @abstract\n */\nexport default class AbstractType {\n constructor() {\n this.suggestions = [];\n this.loading = false;\n }\n\n /**\n * The `type` property of the Models used in suggestions and applied filters for this type\n * @return {String}\n */\n resourceType() {\n //\n }\n\n /**\n * Executed when the search query changes\n * The method should update this.suggestions with the new results\n * If asynchronous loading is used, this.loading should be set to true during the process\n * @param {String} query\n */\n search(query) {\n //\n }\n\n /**\n * Renders the \"kind\" label next to the value indicating what kind of information that result is\n * Should probably just be a translated text\n * @param {Model} resource\n * @return {vnode}\n */\n renderKind(resource) {\n //\n }\n\n /**\n * Renders the Label containing the suggestion's value\n * Should be a vdom template using the .UserDirectorySearchLabel class or similar\n * @param {Model} resource\n * @return {vnode}\n */\n renderLabel(resource) {\n //\n }\n\n /**\n * Applies a filter on a params object to use in the page request\n * @param {Object} params Object. Might or might not contain a `q` property or `sort` property. In the future, `filters` object might be supported\n * @param {Model} resource\n */\n applyFilter(params, resource) {\n //\n }\n\n /**\n * Used to populate the search field on page load with values from the querystring\n * A promise must be returned, and the UI will auto-update once the promise returns\n * @param {Object} params Object with a `q` and `sort` property. `filters` might be supported in the future\n * @return {Promise<Model[]>}\n */\n initializeFromParams(params) {\n //\n }\n}\n","import app from 'flarum/forum/app';\nimport AbstractType from './AbstractType';\n\n/* global m */\n\nexport default class TextFilter extends AbstractType {\n resourceType() {\n return 'fof-user-directory-text';\n }\n\n search(query) {\n if (!query) {\n this.suggestions = [];\n return;\n }\n\n this.suggestions = [\n app.store.createRecord('fof-user-directory-text', {\n attributes: {\n text: query,\n },\n }),\n ];\n }\n\n renderKind() {\n return app.translator.trans('fof-user-directory.forum.search.kinds.text');\n }\n\n renderLabel(resource) {\n return m('.UserDirectorySearchLabel', resource.text());\n }\n\n applyFilter(params, resource) {\n params.q = params.q ? params.q + ' ' : '';\n params.q += resource.text();\n }\n\n initializeFromParams(params) {\n if (!params.q) {\n return Promise.resolve([]);\n }\n\n return Promise.resolve(\n params.q\n .split(' ')\n // Words with : are gambits and we will ignore them\n .filter((word) => word.indexOf(':') === -1)\n .map((word) =>\n app.store.createRecord('fof-user-directory-text', {\n attributes: {\n text: word,\n },\n })\n )\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Group'];","import app from 'flarum/forum/app';\nimport Group from 'flarum/common/models/Group';\nimport icon from 'flarum/common/helpers/icon';\nimport AbstractType from './AbstractType';\n\n/* global m */\n\nexport default class GroupFilter extends AbstractType {\n resourceType() {\n return 'groups';\n }\n\n search(query) {\n this.suggestions = [];\n\n if (!query) {\n return;\n }\n\n query = query.toLowerCase();\n\n app.store.all('groups').forEach((group) => {\n // Do not allow Guest group as it wouldn't do anything\n if (group.id() === Group.GUEST_ID) {\n return;\n }\n\n if (group.nameSingular().toLowerCase().indexOf(query) !== -1 || group.namePlural().toLowerCase().indexOf(query) !== -1) {\n this.suggestions.push(group);\n }\n });\n }\n\n renderKind() {\n return app.translator.trans('fof-user-directory.forum.search.kinds.group');\n }\n\n renderLabel(group) {\n return m(\n '.UserDirectorySearchLabel',\n group.color()\n ? {\n className: 'colored',\n style: {\n backgroundColor: group.color(),\n },\n }\n : {},\n [group.icon() ? [icon(group.icon()), ' '] : null, group.namePlural()]\n );\n }\n\n applyFilter(params, group) {\n params.q = params.q ? params.q + ' ' : '';\n params.q += 'group:' + group.id();\n }\n\n initializeFromParams(params) {\n if (!params.q) {\n return Promise.resolve([]);\n }\n\n const qWithSpacesAround = ' ' + params.q + ' ';\n\n const groups = [];\n\n const queryGroups = qWithSpacesAround.split(' ').filter((q) => q.startsWith('group:'));\n\n app.store.all('groups').forEach((group) => {\n queryGroups.forEach((queryGroup) => {\n const groupIds = queryGroup.replace('group:', '').split(',');\n if (groupIds.includes(group.id())) {\n groups.push(group);\n }\n });\n });\n\n return Promise.resolve(groups);\n }\n}\n","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport withAttr from 'flarum/common/utils/withAttr';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport ItemList from 'flarum/utils/ItemList';\nimport TextFilter from '../searchTypes/TextFilter';\nimport GroupFilter from '../searchTypes/GroupFilter';\n\nexport default class SearchField extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.searchIndex = 0;\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .when((event) => {\n // Do not handle keyboard when TAB is pressed and there's nothing in field\n // Without this it's impossible to TAB out of the field\n return event.key !== 'Tab' || !!this.filter;\n })\n .onUp(() => {\n if (this.searchIndex > 0) {\n this.searchIndex--;\n m.redraw();\n }\n })\n .onDown(() => {\n if (this.searchIndex < this.allSuggestions().length - 1) {\n this.searchIndex++;\n m.redraw();\n }\n })\n .onSelect(() => {\n if (this.filter) {\n this.selectResult(this.allSuggestions()[this.searchIndex]);\n m.redraw();\n } else {\n this.applyFiltering();\n }\n })\n .onRemove(() => {\n this.appliedFilters.pop();\n });\n\n this.availableFilters = this.filterTypes().toArray();\n this.appliedFilters = [];\n\n this.filter = '';\n this.focused = false;\n\n // When the page loads, initialize UI with filters from the parameters\n this.availableFilters.forEach((filter) => {\n filter\n .initializeFromParams({\n sort: m.route.param('sort'),\n q: m.route.param('q'),\n })\n .then((resources) => {\n this.appliedFilters.push(...resources);\n m.redraw();\n });\n });\n }\n\n view() {\n const suggestions = this.allSuggestions();\n\n const loading = this.availableFilters.some((filter) => filter.loading);\n\n return (\n <div className=\"Form-group Usersearchbox\">\n <label className={`UserDirectorySearchInput FormControl ${this.focused ? 'focus' : ''}`}>\n <span className=\"UserDirectorySearchInput-selected\">\n {this.appliedFilters.map((recipient, index) => (\n <span\n className=\"UserDirectorySearchInput-filter\"\n onclick={() => {\n this.appliedFilters.splice(index, 1);\n this.applyFiltering();\n }}\n title={this.searchResultKind(recipient)}\n >\n {this.recipientLabel(recipient)}\n </span>\n ))}\n </span>\n <input\n className=\"FormControl\"\n placeholder={app.translator.trans('fof-user-directory.forum.search.field.placeholder')}\n value={this.filter}\n oninput={withAttr('value', (value) => {\n this.filter = value;\n this.performNewSearch();\n })}\n onkeydown={this.navigator.navigate.bind(this.navigator)}\n onfocus={() => {\n this.focused = true;\n }}\n onblur={() => {\n this.focused = false;\n }}\n />\n {loading && <LoadingIndicator />}\n {!!suggestions.length && (\n <ul className=\"Dropdown-menu\">\n {suggestions.map((result, index) => (\n <li\n className={this.searchIndex === index ? 'active' : ''}\n onclick={() => {\n this.selectResult(result);\n this.applyFiltering();\n }}\n >\n <button type=\"button\">\n <span className=\"UserDirectorySearchKind\">{this.searchResultKind(result)}</span>\n {this.recipientLabel(result)}\n </button>\n </li>\n ))}\n </ul>\n )}\n </label>\n </div>\n );\n }\n\n filterTypes() {\n const items = new ItemList();\n\n items.add('text', new TextFilter(), 10);\n items.add('group', new GroupFilter(), 20);\n\n return items;\n }\n\n filterForResource(resource) {\n return this.availableFilters.find((f) => f.resourceType() === resource.data.type);\n }\n\n recipientLabel(resource) {\n const filter = this.filterForResource(resource);\n\n if (filter) {\n return filter.renderLabel(resource);\n }\n\n return '[unknown]';\n }\n\n searchResultKind(resource) {\n const filter = this.filterForResource(resource);\n\n if (filter) {\n return filter.renderKind(resource);\n }\n\n return '[unknown]';\n }\n\n selectResult(result) {\n if (!result) {\n return;\n }\n\n this.appliedFilters.push(result);\n this.clearSuggestions();\n }\n\n clearSuggestions() {\n this.filter = '';\n this.availableFilters.forEach((filter) => {\n filter.search('');\n });\n }\n\n allSuggestions() {\n return [].concat(...this.availableFilters.map((filter) => filter.suggestions));\n }\n\n performNewSearch() {\n this.searchIndex = 0;\n\n this.availableFilters.forEach((filter) => {\n filter.search(this.filter);\n });\n\n this.attrs.state.refreshParams({ ...this.attrs.state.getParams(), qBuilder: this.qBuilder() });\n }\n\n qBuilder(params = {}) {\n this.appliedFilters.forEach((resource) => {\n const filter = this.filterForResource(resource);\n\n if (filter) {\n filter.applyFilter(params, resource);\n } else {\n console.warn('Cannot find filter class for resource', resource);\n }\n });\n return { filter: `${this.filter} ${params.q || ''}` };\n }\n\n applyFiltering() {\n const params = {\n sort: m.route.param('sort'),\n };\n\n this.qBuilder(params);\n\n m.route.set(app.route('fof_user_directory', params));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Separator'];","import app from 'flarum/forum/app';\nimport Page from 'flarum/common/components/Page';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport listItems from 'flarum/common/helpers/listItems';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Select from 'flarum/common/components/Select';\nimport Button from 'flarum/common/components/Button';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport SelectDropdown from 'flarum/common/components/SelectDropdown';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport extractText from 'flarum/common/utils/extractText';\nimport UserDirectoryList from './UserDirectoryList';\nimport UserDirectoryState from '../states/UserDirectoryState';\nimport CheckableButton from './CheckableButton';\nimport SearchField from './SearchField';\nimport Separator from 'flarum/common/components/Separator';\n\n/**\n * This page re-uses Flarum's IndexPage CSS classes\n */\nexport default class UserDirectoryPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.state = new UserDirectoryState({});\n this.state.refreshParams(app.search.params());\n\n this.bodyClass = 'User--directory';\n\n let idSegments = [];\n if (this.params().q) {\n Array.from(this.params().q.matchAll(/group:([\\d,]+)/g)).forEach((match) => {\n idSegments.push(match[1]);\n });\n }\n this.enabledGroupFilters = idSegments\n .join(',')\n .split(',')\n .filter((id) => id);\n\n this.enabledSpecialGroupFilters = [];\n if (app.initializers.has('flarum-suspend') && app.forum.attribute('hasSuspendPermission')) {\n // If there is a special group filter int the params, enable it here\n if (this.params()?.q?.includes('is:suspended')) {\n this.enabledSpecialGroupFilters['flarum-suspend'] = 'is:suspended';\n }\n }\n\n app.history.push('users', app.translator.trans('fof-user-directory.forum.header.back_to_user_directory_tooltip'));\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n app.setTitle(extractText(app.translator.trans('fof-user-directory.forum.page.nav')));\n }\n\n view() {\n return (\n <div className=\"IndexPage\">\n {IndexPage.prototype.hero()}\n <div className=\"container\">\n <div className=\"sideNavContainer\">\n <nav className=\"IndexPage-nav sideNav\">\n <ul>{listItems(this.sidebarItems().toArray())}</ul>\n </nav>\n <div className=\"IndexPage-results sideNavOffset\">\n <div className=\"IndexPage-toolbar\">\n <ul className=\"IndexPage-toolbar-view\">{listItems(this.viewItems().toArray())}</ul>\n <ul className=\"IndexPage-toolbar-action\">{listItems(this.actionItems().toArray())}</ul>\n </div>\n <UserDirectoryList state={this.state} />\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n /**\n * Our own sidebar. Re-uses Index.sidebarItems as the base\n * Elements added here will only show up on the user directory page\n *\n * @return {ItemList}\n */\n sidebarItems() {\n const items = IndexPage.prototype.sidebarItems();\n\n items.setContent(\n 'nav',\n SelectDropdown.component(\n {\n buttonClassName: 'Button',\n className: 'App-titleControl',\n },\n this.navItems().toArray()\n )\n );\n\n return items;\n }\n\n /**\n * Our own sidebar navigation. Re-uses Index.navItems as the base\n * Elements added here will only show up on the user directory page\n *\n * @return {ItemList}\n */\n navItems() {\n const items = IndexPage.prototype.navItems();\n const params = this.stickyParams();\n\n items.add(\n 'fof-user-directory',\n LinkButton.component(\n {\n href: app.route('fof_user_directory', params),\n icon: 'far fa-address-book',\n },\n app.translator.trans('fof-user-directory.forum.page.nav')\n ),\n 85\n );\n\n return items;\n }\n\n viewItems() {\n const items = new ItemList();\n const sortMap = this.state.sortMap();\n\n const sortOptions = {};\n for (const i in sortMap) {\n sortOptions[i] = app.translator.trans('fof-user-directory.lib.sort.' + i);\n }\n\n items.add(\n 'sort',\n Select.component({\n options: sortOptions,\n value: this.state.getParams().sort || app.forum.attribute('userDirectoryDefaultSort'),\n onchange: this.changeParams.bind(this),\n }),\n 100\n );\n\n items.add(\n 'filterGroups',\n Dropdown.component(\n {\n caretIcon: 'fas fa-filter',\n label: app.translator.trans('fof-user-directory.forum.page.filter_button'),\n buttonClassName: 'FormControl',\n className: 'GroupFilterDropdown',\n },\n this.groupItems().toArray()\n ),\n 80\n );\n\n items.add(\n 'search',\n SearchField.component({\n state: this.state,\n }),\n 60\n );\n\n return items;\n }\n\n groupItems() {\n const items = new ItemList();\n\n app.store\n .all('groups')\n .filter((group) => group.id() !== '2' && group.id() !== '3')\n .forEach((group) => {\n items.add(\n group.namePlural(),\n CheckableButton.component(\n {\n className: 'GroupFilterButton',\n icon: group.icon(),\n checked: this.enabledGroupFilters.includes(group.id()),\n onclick: () => {\n const id = group.id();\n if (this.enabledGroupFilters.includes(id)) {\n this.enabledGroupFilters = this.enabledGroupFilters.filter((e) => e != id);\n } else {\n this.enabledGroupFilters.push(id);\n // Empty the special group filters\n this.enabledSpecialGroupFilters = [];\n }\n\n this.changeParams(this.params().sort);\n },\n },\n group.namePlural()\n )\n );\n });\n\n if (app.initializers.has('flarum-suspend') && app.forum.attribute('hasSuspendPermission')) {\n items.add(\n 'suspend',\n CheckableButton.component(\n {\n className: 'GroupFilterButton',\n icon: 'fas fa-ban',\n checked: this.enabledSpecialGroupFilters['flarum-suspend'] === 'is:suspended',\n onclick: () => {\n const id = 'flarum-suspend';\n if (this.enabledSpecialGroupFilters[id] === 'is:suspended') {\n this.enabledSpecialGroupFilters[id] = '';\n } else {\n this.enabledSpecialGroupFilters[id] = 'is:suspended';\n // Empty the group filters\n this.enabledGroupFilters = [];\n }\n\n this.changeParams(this.params().sort);\n },\n },\n app.translator.trans('flarum-suspend.forum.user_badge.suspended_tooltip')\n ),\n 90\n );\n\n items.add('seperator', Separator.component(), 50);\n }\n\n return items;\n }\n\n actionItems() {\n const items = new ItemList();\n\n items.add(\n 'refresh',\n Button.component({\n title: app.translator.trans('fof-user-directory.forum.page.refresh_tooltip'),\n icon: 'fas fa-sync',\n className: 'Button Button--icon',\n onclick: () => {\n this.state.refresh();\n if (app.session.user) {\n app.store.find('users', app.session.user.id());\n m.redraw();\n }\n },\n })\n );\n\n return items;\n }\n\n /**\n * Redirect to the index page using the given sort parameter.\n *\n * @param {String} sort\n */\n changeParams(sort) {\n const params = this.params();\n\n if (sort === app.forum.attribute('userDirectoryDefaultSort')) {\n delete params.sort;\n } else {\n params.sort = sort;\n }\n\n let moreQ = '';\n for (const filter in this.enabledSpecialGroupFilters) {\n moreQ += this.enabledSpecialGroupFilters[filter] + ' ';\n }\n\n if (this.enabledGroupFilters.length > 0) {\n const groupsQ = this.enabledGroupFilters.reduce((prev, curr) => {\n return `${prev}${prev ? ' ' : ''}group:${curr}`;\n }, '');\n\n params.qBuilder = { groups: groupsQ };\n } else {\n params.qBuilder = { groups: '', q: moreQ.trim() };\n }\n\n this.state.refreshParams(params);\n\n const routeParams = { ...params };\n delete routeParams.qBuilder;\n\n m.route.set(app.route('fof_user_directory', routeParams));\n }\n\n stickyParams() {\n return {\n sort: m.route.param('sort'),\n q: m.route.param('q'),\n };\n }\n\n params() {\n return this.stickyParams();\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Model from 'flarum/common/Model';\n\n/**\n * Special model used only client-side to hold a free text search value in the search field\n */\nexport default class Text extends Model {\n text = Model.attribute('text');\n}\n","import CheckableButton from './CheckableButton';\nimport SearchField from './SearchField';\nimport SmallUserCard from './SmallUserCard';\nimport UserDirectoryList from './UserDirectoryList';\nimport UserDirectoryListItem from './UserDirectoryListItem';\nimport UserDirectoryPage from './UserDirectoryPage';\nimport UserDirectoryUserCard from './UserDirectoryUserCard';\n\nexport const components = {\n CheckableButton,\n SearchField,\n SmallUserCard,\n UserDirectoryList,\n UserDirectoryListItem,\n UserDirectoryPage,\n UserDirectoryUserCard,\n};\n","import AbstractType from './AbstractType';\nimport GroupFilter from './GroupFilter';\nimport TextFilter from './TextFilter';\n\nexport const searchTypes = {\n AbstractType,\n GroupFilter,\n TextFilter,\n};\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UsersSearchSource from 'flarum/common/components/UsersSearchSource';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport UserDirectoryPage from './components/UserDirectoryPage';\nimport UserDirectoryList from './components/UserDirectoryList';\nimport UserDirectoryListItem from './components/UserDirectoryListItem';\nimport UserDirectoryState from './states/UserDirectoryState';\nimport SortMap from '../common/utils/SortMap';\nimport CheckableButton from './components/CheckableButton';\nimport Text from './models/Text';\n\n// Allow other extensions to extend the page\nexport { UserDirectoryPage, UserDirectoryList, UserDirectoryListItem, UserDirectoryState, SortMap, CheckableButton };\n\nexport const linkGroupMentions = function () {\n if (app.forum.attribute('canSeeUserDirectoryLink') && app.forum.attribute('userDirectoryLinkGroupMentions')) {\n this.$('.GroupMention').each(function () {\n if ($(this).hasClass('GroupMention--linked')) return;\n\n const name = $(this).find('.GroupMention-name').text();\n const group = app.store.getBy('groups', 'namePlural', name.slice(1));\n\n if (group) {\n const link = $(`<a class=\"GroupMention-link\" href=\"${app.route('fof_user_directory', { q: `group:${group.id()}` })}\"></a>`);\n\n link.on('click', function (e) {\n m.route.set(this.getAttribute('href'));\n e.preventDefault();\n });\n\n $(this).addClass('GroupMention--linked').wrap(link);\n }\n });\n }\n};\n\napp.initializers.add('fof-user-directory', (app) => {\n app.routes.fof_user_directory = {\n path: '/users',\n component: UserDirectoryPage,\n };\n\n app.store.models['fof-user-directory-text'] = Text;\n\n extend(UsersSearchSource.prototype, 'view', function (view, query) {\n if (!view || !app.forum.attribute('canSeeUserDirectoryLink') || app.forum.attribute('userDirectoryDisableGlobalSearchSource')) {\n return;\n }\n\n query = query.toLowerCase();\n\n view.splice(\n 1,\n 0,\n m(\n 'li',\n LinkButton.component(\n {\n href: app.route('fof_user_directory', { q: query }),\n icon: 'fas fa-search',\n },\n app.translator.trans('fof-user-directory.forum.search.users_heading', { query })\n )\n )\n );\n });\n\n extend(IndexPage.prototype, 'navItems', (items) => {\n if (app.forum.attribute('canSeeUserDirectoryLink') && app.forum.attribute('canSearchUsers')) {\n items.add(\n 'fof-user-directory',\n LinkButton.component(\n {\n href: app.route('fof_user_directory'),\n icon: 'far fa-address-book',\n },\n app.translator.trans('fof-user-directory.forum.page.nav')\n ),\n 85\n );\n }\n });\n\n extend(CommentPost.prototype, 'oncreate', linkGroupMentions);\n extend(CommentPost.prototype, 'onupdate', linkGroupMentions);\n});\n\nexport * from './components';\nexport * from './searchTypes';\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\n\nlet opts;\n\nexport default (section) =>\n opts ||\n (opts = ['none', 'tags'].reduce((o, key) => {\n o[key] = app.translator.trans(`fof-follow-tags.${section}.following_${key}_label`);\n\n return o;\n }, {}));\n","import app from 'flarum/forum/app';\nimport followingPageOptions from '../../common/utils/followingPageOptions';\n\nexport let options;\n\nexport const getOptions = () => {\n if (!options) {\n options = followingPageOptions('forum.index.following');\n }\n\n return options;\n};\n\nexport const getDefaultFollowingFiltering = () => {\n getOptions();\n\n let value = app.data['fof-follow-tags.following_page_default'];\n\n if (!options[value]) {\n value = null;\n }\n\n if (app.session.user) {\n const preference = app.session.user.preferences().followTagsPageDefault;\n\n if (options[preference]) {\n value = preference;\n }\n }\n\n return value || 'none';\n};\n","import app from 'flarum/forum/app';\n\nexport default () => 'flarum-subscriptions' in flarum.extensions && m.route.get().includes(app.route('following'));\n","import followingPageOptions from './utils/followingPageOptions';\n\nexport const utils = {\n followingPageOptions,\n};\n","import { options, getOptions, getDefaultFollowingFiltering } from './getDefaultFollowingFiltering';\nimport isFollowingPage from './isFollowingPage';\nimport subscriptionOptions from './subscriptionOptions';\nimport { utils as commonUtils } from '../../common';\n\nexport const utils = {\n options,\n getOptions,\n getDefaultFollowingFiltering,\n isFollowingPage,\n subscriptionOptions,\n ...commonUtils,\n};\n","type SubscriptionOption = {\n subscription: string;\n icon: string;\n labelKey: string;\n descriptionKey: string;\n};\n\nconst subscriptionOptions: SubscriptionOption[] = [\n {\n subscription: 'not_follow',\n icon: 'far fa-star',\n labelKey: 'fof-follow-tags.forum.sub_controls.not_following_button',\n descriptionKey: 'fof-follow-tags.forum.sub_controls.not_following_text',\n },\n {\n subscription: 'follow',\n icon: 'fas fa-star',\n labelKey: 'fof-follow-tags.forum.sub_controls.following_button',\n descriptionKey: 'fof-follow-tags.forum.sub_controls.following_text',\n },\n {\n subscription: 'lurk',\n icon: 'fas fa-eye',\n labelKey: 'fof-follow-tags.forum.sub_controls.lurking_button',\n descriptionKey: 'fof-follow-tags.forum.sub_controls.lurking_text',\n },\n {\n subscription: 'ignore',\n icon: 'fas fa-bell-slash',\n labelKey: 'fof-follow-tags.forum.sub_controls.ignoring_button',\n descriptionKey: 'fof-follow-tags.forum.sub_controls.ignoring_text',\n },\n {\n subscription: 'hide',\n icon: 'fas fa-eye-slash',\n labelKey: 'fof-follow-tags.forum.sub_controls.hiding_button',\n descriptionKey: 'fof-follow-tags.forum.sub_controls.hiding_text',\n },\n];\n\nexport default subscriptionOptions;\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import app from 'flarum/forum/app';\nimport icon from 'flarum/common/helpers/icon';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\n\ninterface SubscriptionOptionItemAttrs extends ComponentAttrs {\n active: boolean;\n icon: string;\n labelKey: string;\n descriptionKey: string;\n onclick: () => void;\n}\n\nexport default class SubscriptionOptionItem extends Component<SubscriptionOptionItemAttrs> {\n view() {\n const isSelected = this.attrs.active;\n\n return (\n <div className={`SubscriptionOption ${isSelected ? 'selected' : ''}`} onclick={this.attrs.onclick}>\n {icon(this.attrs.icon, { className: 'SubscriptionOption-icon' })}\n <span className=\"SubscriptionOption-title\">{app.translator.trans(this.attrs.labelKey)}</span>\n <div className=\"SubscriptionOption-description\">{app.translator.trans(this.attrs.descriptionKey)}</div>\n {isSelected && icon('fas fa-check', { className: 'SubscriptionOption-selectedIcon' })}\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import app from 'flarum/forum/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport { utils } from '../utils';\nimport SubscriptionOptionItem from './SubscriptionOptionItem';\nimport type Mithril from 'mithril';\nimport Tag from 'flarum/tags/models/Tag';\nimport Stream from 'flarum/common/utils/Stream';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\ninterface ISubscriptionModalAttrs extends IInternalModalAttrs {\n model?: Tag;\n}\n\nexport default class SubscriptionModal extends Modal<ISubscriptionModalAttrs> {\n subscription!: string;\n loading: Stream<boolean>;\n canShowTooltip: boolean | undefined = undefined;\n\n oninit(vnode: Mithril.Vnode<ISubscriptionModalAttrs, this>): void {\n super.oninit(vnode);\n this.loading = Stream(false);\n this.subscription = this.attrs.model.subscription() || 'not_follow';\n\n const preferences = app.session.user?.preferences();\n const notifyEmail = preferences['notify_newPostInTag_email'];\n const notifyAlert = preferences['notify_newPostInTag_alert'];\n\n if ((notifyEmail || notifyAlert) && this.subscription === 'not_follow') {\n this.canShowTooltip = true;\n } else {\n this.canShowTooltip = false;\n }\n }\n\n className() {\n return 'SubscriptionModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('fof-follow-tags.forum.sub_controls.header', {\n tagName: this.attrs.model.name(),\n });\n }\n\n content() {\n const preferences = app.session.user?.preferences();\n const notifyEmail = preferences['notify_newPostInTag_email'];\n const notifyAlert = preferences['notify_newPostInTag_alert'];\n\n return (\n <div className=\"Modal-body\">\n {this.formOptionItems().toArray()}\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary\" onclick={() => this.saveSubscription(this.subscription)} loading={this.loading()}>\n {app.translator.trans('fof-follow-tags.forum.sub_controls.submit_button')}\n </Button>\n </div>\n </div>\n );\n }\n\n formOptionItems(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'subscription_type',\n <div className=\"Form-group\">\n <label>{app.translator.trans('fof-follow-tags.forum.sub_controls.subscription_label', { tagName: this.attrs.model.name() })}</label>\n {this.subscriptionOptionItems().toArray()}\n </div>,\n 60\n );\n\n return items;\n }\n\n subscriptionOptionItems(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n let priority = 100;\n\n utils.subscriptionOptions.forEach((option, index) => {\n const attrs = {\n ...option,\n onclick: () => {\n this.subscription = option.subscription;\n this.canShowTooltip = false;\n },\n active: this.subscription === option.subscription,\n disabled: option.subscription === 'hide' && this.attrs.model.isHidden(),\n };\n\n items.add(`subscription-option-${index}`, <SubscriptionOptionItem {...attrs} />, priority);\n priority -= 5;\n });\n\n return items;\n }\n\n saveSubscription(subscription: string) {\n const tag = this.attrs.model;\n\n this.loading(true);\n\n this.subscription = subscription;\n\n app\n .request({\n url: `${app.forum.attribute('apiUrl')}/tags/${tag.id()}/subscription`,\n method: 'POST',\n body: {\n data: this.requestData(),\n },\n })\n .then((res: any) => app.store.pushPayload(res))\n .then(() => {\n this.loading(false);\n\n m.redraw();\n this.hide();\n });\n }\n\n requestData(): { [key: string]: string } {\n return { subscription: this.subscription };\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","import app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport { utils } from '../utils';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport extractText from 'flarum/common/utils/extractText';\nimport Stream from 'flarum/common/utils/Stream';\n\nexport default class SubscriptionStateButton extends Button {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.loading = Stream(false);\n this.canShowTooltip = Stream(false);\n }\n\n onbeforeupdate(vnode) {\n super.onbeforeupdate(vnode);\n\n const subscription = this.attrs.subscription || false;\n\n const preferences = app.session.user.preferences();\n const notifyEmail = preferences['notify_newPostInTag_email'];\n const notifyAlert = preferences['notify_newPostInTag_alert'];\n\n if ((notifyEmail || notifyAlert) && subscription === false) {\n this.canShowTooltip(undefined);\n } else {\n this.canShowTooltip(false);\n }\n }\n\n view(vnode) {\n const subscription = this.attrs.subscription || false;\n let option = utils.subscriptionOptions.find((opt) => opt.subscription === subscription);\n\n let buttonIcon = option ? option.icon : 'fas fa-star';\n let buttonLabel = option ? app.translator.trans(option.labelKey) : app.translator.trans('fof-follow-tags.forum.sub_controls.follow_button');\n\n this.attrs.className = (this.attrs.className || '') + ' SubscriptionButton ' + 'SubscriptionButton--' + subscription;\n this.attrs.icon = buttonIcon;\n\n const preferences = app.session.user.preferences();\n const notifyEmail = preferences['notify_newPostInTag_email'];\n\n const tooltipText = extractText(\n app.translator.trans(\n notifyEmail ? 'fof-follow-tags.forum.sub_controls.notify_email_tooltip' : 'fof-follow-tags.forum.sub_controls.notify_alert_tooltip'\n )\n );\n\n return (\n <Tooltip\n text={\n // By adding this constraint we make sure that when we explicitly set the\n // value of `canShowTooltip` to `false`, the internal `shouldRecreateTooltip`\n // property of the `Tooltip` component is set to `true` and we can, in that\n // way, switch between 'manual' and 'hover' trigger modes for the tooltip.\n typeof this.canShowTooltip() === 'boolean' ? '' : tooltipText\n }\n tooltipVisible={this.canShowTooltip()}\n position=\"bottom\"\n delay={250}\n >\n {super.view(Object.assign({}, vnode, { children: buttonLabel }))}\n </Tooltip>\n );\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Model from 'flarum/common/Model';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport SubscriptionModal from './components/SubscriptionModal';\nimport SubscriptionStateButton from './components/SubscriptionStateButton';\n\nexport default () => {\n app.store.models.tags.prototype.subscription = Model.attribute('subscription');\n\n extend(IndexPage.prototype, 'sidebarItems', function (items) {\n if (!this.currentTag() || !app.session.user) return;\n\n const tag = this.currentTag();\n\n if (items.has('newDiscussion')) items.setPriority('newDiscussion', 10);\n\n items.add(\n 'subscriptionButton',\n <SubscriptionStateButton\n className=\"Button App-primaryControl\"\n subscription={tag.subscription()}\n onclick={() => app.modal.show(SubscriptionModal, { model: tag })}\n />,\n 5\n );\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\n\nimport Button from 'flarum/common/components/Button';\nimport Dropdown from 'flarum/common/components/Dropdown';\n\nimport { getDefaultFollowingFiltering, getOptions } from '../utils/getDefaultFollowingFiltering';\n\nexport default class FollowingPageFilterDropdown extends Component {\n view() {\n const selected = app.discussions.followTags;\n const options = this.options();\n\n return Dropdown.component(\n {\n buttonClassName: 'Button',\n label: options[selected] || getDefaultFollowingFiltering(),\n },\n Object.keys(options).map((key) => {\n const active = key === selected;\n\n return Button.component(\n {\n active,\n icon: active ? 'fas fa-check' : true,\n onclick: () => {\n app.discussions.followTags = key;\n\n app.discussions.refresh();\n },\n },\n options[key]\n );\n })\n );\n }\n\n options() {\n return getOptions();\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\n\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\n\nimport isFollowingPage from './utils/isFollowingPage';\n\nimport { getDefaultFollowingFiltering } from './utils/getDefaultFollowingFiltering';\nimport FollowingPageFilterDropdown from './components/FollowingPageFilterDropdown';\n\nexport default () => {\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (!isFollowingPage() || !app.session.user) return;\n\n if (!this.followTags) {\n this.followTags = getDefaultFollowingFiltering();\n }\n\n const followTags = this.followTags;\n\n if (app.current.get('routeName') === 'following' && followTags === 'tags') {\n params.filter['following-tag'] = true;\n\n delete params.filter.subscription;\n }\n });\n\n extend(IndexPage.prototype, 'viewItems', function (items) {\n if (!isFollowingPage() || !app.session.user) {\n return;\n }\n\n items.add('follow-tags', <FollowingPageFilterDropdown />);\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewDiscussionNotification extends Notification {\n icon() {\n return 'fas fa-user-tag';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n return app.translator.trans('fof-follow-tags.forum.notifications.new_discussion_text', {\n user: this.attrs.notification.fromUser(),\n title: this.attrs.notification.subject().title(),\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","export default {\n [false]: 'fas fa-star',\n follow: 'fas fa-star',\n lurk: 'fas fa-comments',\n ignore: 'fas fa-bell-slash',\n hide: 'fas fa-eye-slash',\n};\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nimport icons from '../icons';\n\nexport default class NewPostNotification extends Notification {\n icon() {\n return icons.lurk;\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n const content = notification.content() || {};\n\n return app.route.discussion(discussion, content.postNumber);\n }\n\n content() {\n return app.translator.trans('fof-follow-tags.forum.notifications.new_post_text', { user: this.attrs.notification.fromUser() });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewDiscussionTagNotification extends Notification {\n icon() {\n return 'fas fa-user-tag';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n return app.translator.trans('fof-follow-tags.forum.notifications.new_discussion_tag_text', {\n user: this.attrs.notification.fromUser(),\n title: this.attrs.notification.subject().title(),\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\n\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport Select from 'flarum/common/components/Select';\n\nimport { getOptions, getDefaultFollowingFiltering } from './utils/getDefaultFollowingFiltering';\n\nexport default () => {\n extend(SettingsPage.prototype, 'settingsItems', function (items) {\n items.add(\n 'fof-follow-tags',\n FieldSet.component(\n {\n label: app.translator.trans('fof-follow-tags.forum.user.settings.heading'),\n className: 'Settings-follow-tags',\n },\n [\n <div className=\"Form-group\">\n <p>{app.translator.trans('fof-follow-tags.forum.user.settings.filter_label')}</p>\n {Select.component({\n options: getOptions(),\n value: this.user.preferences().followTagsPageDefault || getDefaultFollowingFiltering(),\n onchange: (value) => {\n this.user.savePreferences({ followTagsPageDefault: value }).then(() => {\n m.redraw();\n });\n },\n })}\n </div>,\n ]\n )\n );\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","import FollowingPageFilterDropdown from './FollowingPageFilterDropdown';\nimport NewDiscussionNotification from './NewDiscussionNotification';\nimport NewDiscussionTagNotification from './NewDiscussionTagNotification';\nimport NewPostNotification from './NewPostNotification';\nimport SubscriptionModal from './SubscriptionModal';\nimport SubscriptionOptionItem from './SubscriptionOptionItem';\nimport SubscriptionStateButton from './SubscriptionStateButton';\n\nexport const components = {\n FollowingPageFilterDropdown,\n NewDiscussionNotification,\n NewDiscussionTagNotification,\n NewPostNotification,\n SubscriptionModal,\n SubscriptionOptionItem,\n SubscriptionStateButton,\n};\n","import app from 'flarum/forum/app';\nimport addSubscriptionControls from './addSubscriptionControls';\nimport addFollowedTagsDiscussions from './addFollowedTagsDiscussions';\nimport NewDiscussionNotification from './components/NewDiscussionNotification';\nimport NewPostNotification from './components/NewPostNotification';\nimport NewDiscussionTagNotification from './components/NewDiscussionTagNotification';\nimport addDiscussionBadge from './addDiscussionBadge';\nimport addPreferences from './addPreferences';\nimport extendNotificationGrid from './extendNotificationGrid';\n\nexport * from './components';\nexport * from './utils';\n\napp.initializers.add(\n 'fof/follow-tags',\n () => {\n if (!app.initializers.has('flarum-tags')) {\n console.error('[fof/follow-tags] flarum/tags is not enabled');\n return;\n }\n\n addSubscriptionControls();\n\n if ('flarum-subscriptions' in flarum.extensions) {\n addDiscussionBadge();\n addFollowedTagsDiscussions();\n addPreferences();\n }\n\n app.notificationComponents.newPostInTag = NewPostNotification;\n app.notificationComponents.newDiscussionInTag = NewDiscussionNotification;\n app.notificationComponents.newDiscussionTag = NewDiscussionTagNotification;\n\n extendNotificationGrid();\n },\n -1\n);\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nimport isFollowingPage from './utils/isFollowingPage';\n\nexport default function addSubscriptionBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (!isFollowingPage() || !this.tags()) {\n return;\n }\n\n const subscriptions = this.tags()\n .map((tag) => tag.subscription())\n .filter((state) => ['lurk', 'follow'].includes(state));\n\n const type = subscriptions.includes('lurk') ? 'lurking' : 'following';\n\n if (subscriptions.length) {\n badges.add(\n 'followTags',\n Badge.component({\n label: app.translator.trans(`fof-follow-tags.forum.badge.${type}_tag_tooltip`),\n icon: 'fas fa-user-tag',\n type: `${type}-tag`,\n })\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nexport default function extendNotificationGrid() {\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('newDiscussionInTag', {\n name: 'newDiscussionInTag',\n icon: 'fas fa-user-tag',\n label: app.translator.trans('fof-follow-tags.forum.settings.notify_new_discussion_label'),\n });\n\n items.add('newPostInTag', {\n name: 'newPostInTag',\n icon: 'fas fa-user-tag',\n label: app.translator.trans('fof-follow-tags.forum.settings.notify_new_post_label'),\n });\n\n items.add('newDiscussionTag', {\n name: 'newDiscussionTag',\n icon: 'fas fa-user-tag',\n label: app.translator.trans('fof-follow-tags.forum.settings.notify_new_discussion_tag_label'),\n });\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/EditUserModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SignUpModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\n\nexport default class NicknameModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n this.nickname = Stream(app.session.user.displayName());\n }\n\n className() {\n return 'NickameModal Modal--small';\n }\n\n title() {\n return app.translator.trans('flarum-nicknames.forum.change_nickname.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <div className=\"Form-group\">\n <input type=\"text\" autocomplete=\"off\" name=\"nickname\" className=\"FormControl\" bidi={this.nickname} disabled={this.loading} />\n </div>\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" type=\"submit\" loading={this.loading}>\n {app.translator.trans('flarum-nicknames.forum.change_nickname.submit_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.nickname() === app.session.user.displayName()) {\n this.hide();\n return;\n }\n\n this.loading = true;\n\n app.session.user\n .save(\n { nickname: this.nickname() },\n {\n errorHandler: this.onerror.bind(this),\n }\n )\n .then(this.hide.bind(this))\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\n\nexport default [\n new Extend.Model(User) //\n .attribute<boolean>('canEditNickname'),\n];\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport EditUserModal from 'flarum/common/components/EditUserModal';\nimport SignUpModal from 'flarum/forum/components/SignUpModal';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport extractText from 'flarum/common/utils/extractText';\nimport Stream from 'flarum/common/utils/Stream';\nimport NickNameModal from './components/NicknameModal';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum/nicknames', () => {\n extend(SettingsPage.prototype, 'accountItems', function (items) {\n if (app.forum.attribute('displayNameDriver') !== 'nickname') return;\n\n if (this.user.canEditNickname()) {\n items.add(\n 'changeNickname',\n <Button className=\"Button\" onclick={() => app.modal.show(NickNameModal)}>\n {app.translator.trans('flarum-nicknames.forum.settings.change_nickname_button')}\n </Button>\n );\n }\n });\n\n extend(EditUserModal.prototype, 'oninit', function () {\n this.nickname = Stream(this.attrs.user.displayName());\n });\n\n extend(EditUserModal.prototype, 'fields', function (items) {\n if (app.forum.attribute('displayNameDriver') !== 'nickname') return;\n\n if (!this.attrs.user.canEditNickname()) return;\n\n items.add(\n 'nickname',\n <div className=\"Form-group\">\n <label>{app.translator.trans('flarum-nicknames.forum.edit_user.nicknames_heading')}</label>\n <input\n className=\"FormControl\"\n placeholder={extractText(app.translator.trans('flarum-nicknames.forum.edit_user.nicknames_text'))}\n bidi={this.nickname}\n />\n </div>,\n 100\n );\n });\n\n extend(EditUserModal.prototype, 'data', function (data) {\n if (app.forum.attribute('displayNameDriver') !== 'nickname') return;\n\n if (!this.attrs.user.canEditNickname()) return;\n\n if (this.nickname() !== this.attrs.user.displayName()) {\n data.nickname = this.nickname();\n }\n });\n\n extend(SignUpModal.prototype, 'oninit', function () {\n if (app.forum.attribute('displayNameDriver') !== 'nickname') return;\n\n this.nickname = Stream(this.attrs.username || '');\n });\n\n extend(SignUpModal.prototype, 'onready', function () {\n if (app.forum.attribute('displayNameDriver') !== 'nickname') return;\n\n if (app.forum.attribute('setNicknameOnRegistration') && app.forum.attribute('randomizeUsernameOnRegistration')) {\n this.$('[name=nickname]').select();\n }\n });\n\n extend(SignUpModal.prototype, 'fields', function (items) {\n if (app.forum.attribute('displayNameDriver') !== 'nickname') return;\n\n if (app.forum.attribute('setNicknameOnRegistration')) {\n items.add(\n 'nickname',\n <div className=\"Form-group\">\n <input\n className=\"FormControl\"\n name=\"nickname\"\n type=\"text\"\n placeholder={extractText(app.translator.trans('flarum-nicknames.forum.sign_up.nickname_placeholder'))}\n bidi={this.nickname}\n disabled={this.loading || this.isProvided('nickname')}\n required={app.forum.attribute('randomizeUsernameOnRegistration')}\n />\n </div>,\n 25\n );\n\n if (app.forum.attribute('randomizeUsernameOnRegistration')) {\n items.remove('username');\n }\n }\n });\n\n extend(SignUpModal.prototype, 'submitData', function (data) {\n if (app.forum.attribute('displayNameDriver') !== 'nickname') return;\n\n if (app.forum.attribute('setNicknameOnRegistration')) {\n data.nickname = this.nickname();\n if (app.forum.attribute('randomizeUsernameOnRegistration')) {\n const arr = new Uint32Array(2);\n crypto.getRandomValues(arr);\n data.username = arr.join('');\n }\n }\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","import app from 'flarum/common/app';\nimport Component from 'flarum/common/Component';\nimport Link from 'flarum/common/components/Link';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport listItems from 'flarum/common/helpers/listItems';\n\n/**\n * The `PageHero` component displays the hero on a page page.\n *\n * ### Props\n *\n * - `page`\n */\nexport default class PageHero extends Component {\n view() {\n return (\n <header className=\"Hero PageHero\">\n <div className=\"container\">\n <ul className=\"PageHero-items\">{listItems(this.items().toArray())}</ul>\n </div>\n </header>\n );\n }\n\n /**\n * Build an item list for the contents of the page hero.\n *\n * @return {ItemList}\n */\n items() {\n const items = new ItemList();\n const page = this.attrs.page;\n\n items.add(\n 'title',\n <h1 className=\"PageHero-title\">\n <Link href={app.route.page(page)}>{page.title()}</Link>\n </h1>\n );\n\n return items;\n }\n}\n","import Page from 'flarum/common/components/Page';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport classList from 'flarum/common/utils/classList';\n\nimport PageHero from './PageHero';\n\nexport default class PagePage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n /**\n * The page that is being viewed.\n *\n * @type {fof/pages/models/Page}\n */\n this.page = null;\n\n this.loadPage();\n\n this.bodyClass = 'App--page';\n }\n\n view() {\n const page = this.page;\n\n return (\n <div className={classList('Pages', page?.isHtml() && 'Pages--isHtml')} data-id={page?.id()} data-slug={page?.slug()}>\n <div className=\"Pages-page\">\n {page\n ? [\n this.hero(),\n <div className=\"Pages-container container\">\n <div className=\"Post-body\">{this.content()}</div>\n </div>,\n ]\n : LoadingIndicator.component({ className: 'LoadingIndicator--block' })}\n </div>\n </div>\n );\n }\n\n /**\n * Initialize page.\n *\n * @param {fof/pages/models/Page} page\n * @protected\n */\n show(page) {\n this.page = page;\n\n app.history.push('page', page.title());\n app.setTitle(page.title());\n\n m.redraw();\n }\n\n /**\n * Get the hero of current page.\n */\n hero() {\n return PageHero.component({ page: this.page });\n }\n\n /**\n * Get the content of page.\n */\n content() {\n return m.trust(this.page.contentHtml());\n }\n\n /**\n * Get current page id from route.\n *\n * @return string\n */\n id() {\n const id = m.route.param('id').split('-')[0];\n if (!isNaN(parseInt(id))) {\n return id;\n } else {\n return m.route.param('id');\n }\n }\n\n /**\n * Load page from the store, or make a request\n * if we don't have it yet. Then initialize the page.\n */\n loadPage() {\n const id = this.id();\n\n const preloaded = app.preloadedApiDocument();\n const page = (!Array.isArray(preloaded) && preloaded) || app.store.getById('pages', id);\n\n if (page) {\n this.show(page);\n } else {\n Promise.all([\n app.store.find('pages', id).then((result) => {\n this.show(result);\n }),\n m.redraw(),\n ]);\n }\n }\n}\n","import IndexPage from 'flarum/forum/components/IndexPage';\nimport icon from 'flarum/common/helpers/icon';\n\nimport PagePage from './PagePage';\n\nexport default class HomePage extends PagePage {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('homePage', icon('fas fa-home'));\n app.drawer.hide();\n app.modal.close();\n }\n\n show(page) {\n this.page = page;\n app.setTitle('');\n m.redraw();\n }\n\n hero() {\n return IndexPage.prototype.hero();\n }\n\n id() {\n return app.data['fof-pages.home'];\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import app from 'flarum/app';\nimport Model from 'flarum/common/Model';\nimport computed from 'flarum/common/utils/computed';\nimport { getPlainContent } from 'flarum/common/utils/string';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default class Page extends Model {\n title = Model.attribute('title');\n time = Model.attribute('time', Model.transformDate);\n editTime = Model.attribute('editTime', Model.transformDate);\n content = Model.attribute('content');\n contentHtml = Model.attribute('contentHtml');\n contentPlain = computed('contentHtml', getPlainContent);\n slug = Model.attribute('slug');\n isHidden = Model.attribute('isHidden');\n isRestricted = Model.attribute('isRestricted');\n isHtml = Model.attribute('isHtml');\n\n badges() {\n const items = new ItemList();\n\n if (this.isHidden()) {\n items.add(\n 'hidden',\n Badge.component({\n type: 'hidden',\n icon: 'fas fa-trash',\n label: app.translator.trans('fof-pages.admin.badges.hidden'),\n })\n );\n }\n\n if (this.isRestricted()) {\n items.add(\n 'restricted',\n Badge.component({\n type: 'restricted',\n icon: 'fas fa-user-shield',\n label: app.translator.trans('fof-pages.admin.badges.restricted'),\n })\n );\n }\n\n return items;\n }\n}\n","import HomePage from './components/HomePage';\nimport PagePage from './components/PagePage';\nimport Page from '../common/models/Page';\n\napp.initializers.add('fof-pages', (app) => {\n app.routes.homePage = { path: '/pages/home', component: HomePage };\n\n app.routes.page = { path: '/p/:id', component: PagePage };\n app.store.models.pages = Page;\n\n /**\n * Generate a URL to a page.\n *\n * @param {../common/models/Page} page\n * @return {String}\n */\n app.route.page = (page) => {\n return app.route('page', {\n id: page.id() + '-' + page.slug(),\n });\n };\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\n\napp.initializers.add('v17development/flarum-user-badges', () => {\n // console.log('[v17development/flarum-user-badges] Hello, forum and admin!')\n});\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Button'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/mixin'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/fullTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/Stream'];","import Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\nimport ItemList from 'flarum/utils/ItemList';\nimport Select from 'flarum/components/Select';\nimport Stream from 'flarum/utils/Stream';\nimport BadgeModal from './BadgeModal';\n\nexport default class GiveBadgeModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n // Select image\n this.selectedBadge = this.attrs.badge ? this.attrs.badge.badge() : null;\n\n // Current user\n this.user = this.attrs.badge ? this.attrs.badge.user() : this.attrs.user;\n\n // User has badge\n this.userHasBadge = false;\n\n // Badge model\n this.badge = this.attrs.badge ? this.attrs.badge : app.store.createRecord('userBadges');\n\n // Earning reason\n this.description = Stream(this.badge.description());\n\n // List of available bagges\n this.categories = {};\n\n this.uncategorizedBadges = [];\n\n this.loading = false;\n\n // Load all available badges\n if (!this.attrs.badge) {\n this.loading = true;\n\n app.store\n .find('badges', {\n include: 'category',\n })\n .then((badges) => {\n badges.forEach((badge) => {\n // Categorized\n if (badge.category()) {\n const category = badge.category();\n\n if (!this.categories[category.id()]) {\n this.categories[category.id()] = {\n category,\n badges: [badge],\n };\n } else {\n this.categories[category.id()].badges.push(badge);\n }\n }\n // Uncategorized\n else {\n this.uncategorizedBadges.push(badge);\n }\n });\n\n this.loading = false;\n\n // Redraw\n m.redraw();\n });\n }\n }\n\n className() {\n return 'Modal--small BadgeModal';\n }\n\n title() {\n return app.translator.trans(`v17development-flarum-badges.forum.${this.badge.exists ? 'update' : 'give'}_badge`);\n }\n\n content() {\n return (\n <div>\n <div className=\"Modal-body\">\n <div className=\"Form\">{this.fields().toArray()}</div>\n </div>\n\n <div className=\"Modal-footer\">\n <Button className={'Button Button--primary'} type={'submit'} loading={this.loading} disabled={this.userHasBadge}>\n {app.translator.trans('core.forum.composer_edit.submit_button')}\n </Button>\n </div>\n </div>\n );\n }\n\n fields() {\n const items = new ItemList();\n\n // Badge selector\n items.add(\n 'badge',\n <div className=\"BadgeModalListItem\">\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.badge')}</b>\n </p>\n\n <div className={'Select'}>\n <select\n value={this.selectedBadge ? this.selectedBadge.id() : 'empty'}\n disabled={!!this.attrs.badge}\n onchange={(e) => {\n if (e.target.value === 'empty') return;\n this.selectedBadge = app.store.getById('badges', e.target.value);\n\n // Check if the user already has this badge\n this.checkUserHasBadge(this.selectedBadge);\n }}\n className=\"Select-input FormControl\"\n >\n <option value={'empty'}>{app.translator.trans('v17development-flarum-badges.forum.select_badge')}</option>\n\n {/* When no badge is selected, show all available badges */}\n {!this.attrs.badge &&\n Object.values(this.categories).map(({ category, badges }) => (\n <optgroup label={category.name()}>\n {badges.map((badge) => (\n <option value={badge.id()}>{badge.name()}</option>\n ))}\n </optgroup>\n ))}\n\n {!this.attrs.badge && this.uncategorizedBadges.length >= 1 && (\n <optgroup label={app.translator.trans('v17development-flarum-badges.forum.uncategorized')}>\n {this.uncategorizedBadges.map((badge) => (\n <option value={badge.id()}>{badge.name()}</option>\n ))}\n </optgroup>\n )}\n\n {/* When a badge is already assigned */}\n {!!this.attrs.badge && <option value={this.selectedBadge.id()}>{this.selectedBadge.name()}</option>}\n </select>\n <i class=\"icon fas fa-caret-down Select-caret\"></i>\n </div>\n\n {this.userHasBadge && <p className={'UserHasBadge'}>{app.translator.trans('v17development-flarum-badges.forum.user_has_badge')}</p>}\n </div>,\n 30\n );\n\n // Badge description\n items.add(\n 'badge_description',\n <div className={'BadgeModalListItem'}>\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.description')}:</b>\n </p>\n <p>{this.selectedBadge ? this.selectedBadge.description() : app.translator.trans('v17development-flarum-badges.forum.select_badge')}</p>\n </div>,\n 30\n );\n\n // Badge earning reason\n items.add(\n 'description',\n <div className=\"BadgeModalListItem\">\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.earning_reason')}</b>\n </p>\n <textarea\n className=\"FormControl\"\n placeholder={app.translator.trans('v17development-flarum-badges.forum.badge.earning_reason')}\n bidi={this.description}\n />\n </div>,\n 30\n );\n\n return items;\n }\n\n checkUserHasBadge(badge) {\n let foundBadge = false;\n\n this.user.userBadges().map((userBadge) => {\n if (userBadge.badge() == badge) {\n foundBadge = true;\n }\n });\n\n this.userHasBadge = foundBadge;\n\n m.redraw();\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n this.badge\n .save({\n description: this.description(),\n relationships: this.attrs.badge\n ? {}\n : {\n badge: this.selectedBadge,\n user: this.user,\n },\n })\n .then(\n () => {\n // Re-open badge modal\n if (this.attrs.badge) {\n app.modal.show(BadgeModal, {\n badge: this.attrs.badge.badge(),\n userBadgeData: this.attrs.badge,\n });\n } else {\n this.hide();\n }\n\n m.redraw();\n },\n (response) => {\n this.loading = false;\n this.handleErrors(response);\n }\n );\n }\n}\n","import Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\nimport fullTime from 'flarum/helpers/fullTime';\nimport ItemList from 'flarum/utils/ItemList';\nimport LinkButton from 'flarum/components/LinkButton';\nimport GiveBadgeModal from './GiveBadgeModal';\n\nexport default class BadgeModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.loading = false;\n }\n\n className() {\n return 'Modal--small';\n }\n\n title() {\n return app.translator.trans('v17development-flarum-badges.forum.badge_information');\n }\n\n content() {\n return (\n <div>\n <div className=\"Modal-body\">{this.data().toArray()}</div>\n <div className=\"Modal-footer\">\n <LinkButton\n href={app.route('badges.item', {\n id: this.attrs.badge.id(),\n })}\n className={'Button'}\n style={{\n margin: '0 10px',\n }}\n >\n {app.translator.trans('v17development-flarum-badges.forum.badge.badge_details')}\n </LinkButton>\n\n {this.attrs.userBadgeData && app.forum.attribute('canGiveBadge') && (\n <Button\n className={'Button Button--primary'}\n onclick={() => {\n if (confirm(app.translator.trans('v17development-flarum-badges.forum.moderation.remove_badge_confirm'))) {\n this.loading = true;\n this.attrs.userBadgeData.delete().then(() => this.hide());\n }\n }}\n loading={this.loading}\n >\n {app.translator.trans('v17development-flarum-badges.forum.moderation.remove_badge')}\n </Button>\n )}\n </div>\n </div>\n );\n }\n\n data() {\n const items = new ItemList();\n\n // Badge name\n items.add(\n 'name',\n <div className={'BadgeModalListItem'}>\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.name')}:</b>\n </p>\n <p>{this.attrs.badge.name()}</p>\n </div>\n );\n\n // Badge description\n items.add(\n 'description',\n <div className={'BadgeModalListItem'}>\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.description')}:</b>\n </p>\n <p>{this.attrs.badge.description()}</p>\n </div>\n );\n\n // Badge earning reason\n if (this.attrs.userBadgeData && (this.attrs.userBadgeData.description() || app.forum.attribute('canGiveBadge'))) {\n items.add(\n 'earning_reason',\n <div className={'BadgeModalListItem'}>\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.earning_reason')}:</b>\n </p>\n\n <p>\n {this.attrs.userBadgeData.description() ? (\n this.attrs.userBadgeData.description()\n ) : (\n <i>{app.translator.trans('v17development-flarum-badges.forum.badge.no_earning_reason')}</i>\n )}\n </p>\n <p>\n {app.forum.attribute('canGiveBadge') && (\n <a\n href={'#'}\n onclick={(e) => {\n e.preventDefault();\n app.modal.show(GiveBadgeModal, {\n badge: this.attrs.userBadgeData,\n });\n }}\n >\n {app.translator.trans('v17development-flarum-badges.forum.badge.update_earning_reason')}\n </a>\n )}\n </p>\n </div>\n );\n }\n\n // Badge earned on\n if (this.attrs.userBadgeData) {\n items.add(\n 'earned_date',\n <div className={'BadgeModalListItem'}>\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.earned_on')}:</b>\n </p>\n <p>{fullTime(this.attrs.userBadgeData.assignedAt())}</p>\n </div>\n );\n }\n\n // Badge category\n if (this.attrs.userBadgeData) {\n items.add(\n 'category',\n <div className={'BadgeModalListItem'}>\n <p>\n <b>{app.translator.trans('v17development-flarum-badges.forum.badge.category')}:</b>\n </p>\n <p>\n {this.attrs.badge.category() && this.attrs.badge.category().name()}\n\n {/* Uncategorized */}\n {!this.attrs.badge.category() && app.translator.trans('v17development-flarum-badges.forum.uncategorized')}\n {/* <Link\n href={app.route(\"badges.category\", {\n category: this.attrs.badge.category().id(),\n })}\n >\n {app.translator.trans(\n \"v17development-flarum-badges.forum.all_badges\"\n )}\n </Link> */}\n </p>\n </div>\n );\n }\n\n // Badge category\n if (this.attrs.badge && this.attrs.badge.earnedAmount()) {\n items.add(\n 'earned_amount',\n <div className={'BadgeModalListItem'}>\n <p>\n {app.translator.trans('v17development-flarum-badges.forum.badge.earned_count', {\n count: this.attrs.badge.earnedAmount(),\n })}\n </p>\n </div>\n );\n }\n\n return items;\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\nimport BadgeModal from '../../forum/components/BadgeModal';\n\nexport default class Badge extends mixin(Model, {\n name: Model.attribute('name'),\n icon: Model.attribute('icon'),\n order: Model.attribute('order'),\n image: Model.attribute('image'),\n description: Model.attribute('description'),\n isVisible: Model.attribute('isVisible'),\n createdAt: Model.attribute('createdAt'),\n earnedAmount: Model.attribute('earnedAmount'),\n category: Model.hasOne('category'),\n backgroundColor: Model.attribute('backgroundColor'),\n iconColor: Model.attribute('iconColor'),\n labelColor: Model.attribute('labelColor'),\n}) {\n apiEndpoint() {\n return '/badges' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class BadgeCategory extends mixin(Model, {\n name: Model.attribute('name'),\n order: Model.attribute('order'),\n description: Model.attribute('description'),\n isEnabled: Model.attribute('isEnabled'),\n createdAt: Model.attribute('createdAt'),\n isTable: Model.attribute('isTable'),\n users: Model.hasMany('users'),\n badges: Model.hasMany('badges'),\n}) {\n apiEndpoint() {\n return '/badge_categories' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class UserBadge extends mixin(Model, {\n user: Model.hasOne('user'),\n badge: Model.hasOne('badge'),\n description: Model.attribute('description'),\n isPrimary: Model.attribute('isPrimary'),\n assignedAt: Model.attribute('assignedAt'),\n inUserCard: Model.attribute('inUserCard'),\n}) {\n apiEndpoint() {\n return '/user_badges' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","import Component from 'flarum/common/Component';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport BadgeModal from '../../forum/components/BadgeModal';\n\nexport default class UserBadge extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.tooltip = this.attrs.tooltip !== false;\n this.forceVisibility = this.attrs.forceVisibility === true;\n }\n\n view() {\n // Hide badge when not enabled\n if (!this.attrs.badge.isVisible() && !this.forceVisibility) {\n return null;\n }\n\n // Just show badge\n if (this.tooltip === false) return this.badge();\n\n return <Tooltip text={`${this.attrs.badge.description() ? this.attrs.badge.description() : ''}`}>{this.badge()}</Tooltip>;\n }\n\n badge() {\n const isPartlyHidden = !this.attrs.badge.isVisible() && this.forceVisibility;\n\n // This badge is an image\n if (this.attrs.badge.image()) {\n return (\n <img\n src={this.attrs.badge.image()}\n className={'UserBadgeImage'}\n onclick={() => {\n if (this.attrs.onclick) {\n this.attrs.onclick();\n }\n }}\n style={{\n opacity: isPartlyHidden ? 0.5 : undefined,\n }}\n />\n );\n }\n\n return (\n <span\n className={`UserBadge UserBadge-${this.attrs.badge.id()}`}\n onclick={() => {\n if (this.attrs.onclick) {\n this.attrs.onclick();\n }\n }}\n style={{\n backgroundColor: this.attrs.badge.backgroundColor(),\n color: this.attrs.badge.labelColor(),\n borderColor: this.attrs.badge.backgroundColor(),\n opacity: isPartlyHidden ? 0.5 : undefined,\n }}\n >\n <i className={this.attrs.badge.icon()} style={{ color: this.attrs.badge.iconColor() }} /> {this.attrs.badge.name()}\n </span>\n );\n }\n}\n","export default function categorizeUserBadges(user) {\n const categories = {};\n const uncategorized = [];\n\n user.userBadges().map((userBadge) => {\n if (!userBadge) return null;\n\n // Categorized\n if (userBadge.badge().category()) {\n const category = userBadge.badge().category();\n\n if (!categories[category.id()]) {\n categories[category.id()] = {\n name: category.name(),\n category,\n badges: [userBadge],\n };\n } else {\n categories[category.id()].badges.push(userBadge);\n }\n }\n // Uncategorized\n else {\n uncategorized.push(userBadge);\n }\n });\n\n // Sort categories and map them into an array\n let sortedCategories = Object.keys(categories)\n .sort((a, b) => categories[a].category.order() - categories[b].category.order())\n .map((category) => categories[category]);\n\n // Add uncategorized category to list\n if (uncategorized.length >= 1) {\n sortedCategories.push({\n name: app.translator.trans('v17development-flarum-badges.forum.uncategorized'),\n category: null,\n badges: uncategorized,\n });\n }\n\n return sortedCategories;\n}\n","import Component from 'flarum/common/Component';\nimport UserBadge from '../../common/components/UserBadge';\nimport categorizeUserBadges from '../utils/categorizeUserBadges';\nimport BadgeModal from './BadgeModal';\n\nexport default class UserBadgeList extends Component {\n view() {\n const categories = categorizeUserBadges(this.attrs.user);\n\n return (\n <div className=\"UserBadges\">\n {categories.length === 0 && (\n <div className={'Placeholder'}>\n <p>{app.translator.trans('v17development-flarum-badges.forum.user_no_badges')}</p>\n </div>\n )}\n\n {categories.length >= 1 &&\n categories.map(({ name, category, badges }) => {\n if (category && !category.isEnabled()) return null;\n\n return (\n <div className={'UserBadgesCategory'}>\n <h3>{name}</h3>\n\n {category && category.description() && <p>{category.description()}</p>}\n\n {badges\n .sort((a, b) => a.badge().order() - b.badge().order())\n .map((userBadge) => (\n <UserBadge\n badge={userBadge.badge()}\n onclick={() =>\n app.modal.show(BadgeModal, {\n badge: userBadge.badge(),\n userBadgeData: userBadge,\n })\n }\n />\n ))}\n </div>\n );\n })}\n </div>\n );\n }\n}\n","import UserPage from 'flarum/components/UserPage';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport UserBadgeList from './UserBadgeList';\n\nexport default class BadgesProfilePage extends UserPage {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.user = null;\n\n this.loading = true;\n\n this.loadUser(m.route.param('username'));\n }\n\n content() {\n if (!this.user || this.loading) {\n return <LoadingIndicator size={46} />;\n }\n\n return UserBadgeList.component({\n user: this.user,\n });\n }\n\n show(user) {\n super.show(user);\n this.user = user;\n\n app.store\n .find('users', user.id(), {\n include: 'userBadges,userBadges.badge,userBadges.badge.category',\n })\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Link'];","import Component from 'flarum/common/Component';\nimport Link from 'flarum/components/Link';\nimport UserBadge from '../../../common/components/UserBadge';\n\nexport default class TableView extends Component {\n view() {\n if (!this.attrs.badges) {\n return null;\n }\n\n const badges = this.attrs.badges;\n\n return (\n <table width={'100%'} className={'BadgeTable'}>\n <thead>\n <tr>\n <th scope=\"col\">{app.translator.trans('v17development-flarum-badges.forum.badge.badges')}</th>\n <th scope=\"col\">{app.translator.trans('v17development-flarum-badges.forum.badge.description')}</th>\n </tr>\n </thead>\n <tbody>\n {badges.map((badge) => {\n return (\n <tr>\n <td>\n <Link href={app.route('badges.item', { id: badge.id() })}>\n <UserBadge badge={badge} tooltip={false} />\n </Link>\n </td>\n <td>\n {badge.description()}\n\n <div className={'BadgeTableRewarded'}>\n {app.translator.trans('v17development-flarum-badges.forum.badge.earned_count', {\n count: badge.earnedAmount(),\n })}\n </div>\n </td>\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n }\n}\n","import Component from 'flarum/common/Component';\nimport Link from 'flarum/components/Link';\nimport UserBadge from '../../../common/components/UserBadge';\n\nexport default class BlockListView extends Component {\n view() {\n if (!this.attrs.badges) {\n return null;\n }\n\n const badges = this.attrs.badges;\n\n return (\n <ul className={'BadgeCategoryList'}>\n {badges.map((badge) => {\n return (\n <li>\n <Link href={app.route('badges.item', { id: badge.id() })} className={'BadgeContainer'}>\n <div className={'BadgeContainerInfo'}>\n <UserBadge badge={badge} tooltip={false} />\n\n <p className={'BadgeDescription'}>{badge.description()}</p>\n\n <p>\n {app.translator.trans('v17development-flarum-badges.forum.badge.earned_count', {\n count: badge.earnedAmount(),\n })}\n </p>\n </div>\n </Link>\n </li>\n );\n })}\n </ul>\n );\n }\n}\n","import Page from 'flarum/components/Page';\nimport IndexPage from 'flarum/components/IndexPage';\nimport listItems from 'flarum/common/helpers/listItems';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport TableView from './BadgeCategoryList/TableView';\nimport BlockListView from './BadgeCategoryList/BlockListView';\n\nexport default class BadgesOverviewPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.bodyClass = 'App--index';\n\n this.loading = true;\n\n app.history.push('badgeOverviewPage');\n\n app.setTitle(app.translator.trans('v17development-flarum-badges.forum.badge.badges'));\n\n // Load badge categories\n app.store.find('badge_categories').then(() => {\n this.loading = false;\n\n m.redraw();\n });\n }\n\n view() {\n const categories = app.store.all('badgeCategories').sort((a, b) => a.order() - b.order());\n\n return (\n <div className=\"IndexPage\">\n {IndexPage.prototype.hero()}\n\n <div className=\"container\">\n <div className=\"sideNavContainer\">\n <nav className=\"IndexPage-nav sideNav\">\n <ul>{listItems(IndexPage.prototype.sidebarItems().toArray())}</ul>\n </nav>\n <div className=\"IndexPage-results sideNavOffset\">\n <h2 className={'BadgeOverviewTitle'}>{app.translator.trans('v17development-flarum-badges.forum.badge.badges')}</h2>\n\n {this.loading && <LoadingIndicator size={'large'} />}\n\n {!this.loading &&\n categories.map((category) => {\n const badges = category.badges().sort((a, b) => a.order() - b.order());\n\n return (\n <div className={'BadgeCategory'}>\n <h3>{category.name()}</h3>\n {category.description() && <p>{category.description()}</p>}\n\n {category.isTable() && <TableView badges={badges} />}\n\n {!category.isTable() && <BlockListView badges={badges} />}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/humanTime'];","import Component from 'flarum/common/Component';\nimport Button from 'flarum/components/Button';\nimport Link from 'flarum/components/Link';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport avatar from 'flarum/helpers/avatar';\nimport humanTime from 'flarum/helpers/humanTime';\n\nexport default class BadgeUserList extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n // Load articles\n this.attrs.state.refreshParams({\n filter: {\n badge: this.attrs.badgeId,\n },\n sort: '-assignedAt',\n });\n }\n\n view() {\n const state = this.attrs.state;\n\n let loading = null;\n\n if (state.isInitialLoading() || state.isLoadingNext()) {\n loading = LoadingIndicator.component({\n size: 'large',\n });\n } else if (state.hasNext()) {\n loading = Button.component(\n {\n className: 'Button',\n icon: 'fas fa-chevron-down',\n onclick: state.loadNext.bind(state),\n },\n app.translator.trans('core.forum.discussion_list.load_more_button')\n );\n }\n\n // No items\n if (state.isInitialLoading() && state.isEmpty()) {\n return <LoadingIndicator />;\n }\n\n // No items\n if (state.isEmpty()) {\n return <div className={'BadgeUserList-empty'}>{app.translator.trans('v17development-flarum-badges.forum.no_received')}</div>;\n }\n\n return (\n <div>\n <ul className={'BadgeUserList'}>\n {state.getPages().map((pg) => {\n return pg.items.map((userBadge) => {\n return (\n <li>\n <Link\n href={app.route('user.badges', {\n username: userBadge.user().username(),\n })}\n className={'BadgeUserList-user'}\n >\n {avatar(userBadge.user())}\n\n <div className={'BadgeUserList-userinfo'}>\n <h4>{userBadge.user().displayName()}</h4>\n\n <p>\n {app.translator.trans('v17development-flarum-badges.forum.badge.received_on', {\n date: humanTime(userBadge.assignedAt()),\n })}\n </p>\n </div>\n </Link>\n </li>\n );\n });\n })}\n </ul>\n\n {loading && <div className=\"SupportSearchList-loadMore\">{loading}</div>}\n </div>\n );\n }\n}\n","import Page from 'flarum/components/Page';\nimport IndexPage from 'flarum/components/IndexPage';\nimport listItems from 'flarum/common/helpers/listItems';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport LinkButton from 'flarum/components/LinkButton';\nimport BadgeUserList from './BadgeUserList';\n\nexport default class BadgeItemPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.bodyClass = 'App--index';\n\n const found = app.store.getById('badges', m.route.param('id'));\n\n this.loading = !found;\n\n if (!found) {\n // Load badge categories\n app.store.find(`badges/${m.route.param('id')}`).then((badge) => {\n this.loading = false;\n\n app.history.push('badgeItemPage', badge.name());\n\n this.setTitle(badge);\n\n m.redraw();\n });\n } else {\n app.history.push('badgeItemPage', found.name());\n\n this.setTitle(found);\n }\n }\n\n setTitle(badge) {\n app.setTitle(`${badge.name()} - ${app.translator.trans('v17development-flarum-badges.forum.badge.badges')}`);\n }\n\n view() {\n const badge = app.store.getById('badges', m.route.param('id'));\n\n return (\n <div className=\"IndexPage\">\n {IndexPage.prototype.hero()}\n\n <div className=\"container\">\n <div className=\"sideNavContainer\">\n <nav className=\"IndexPage-nav sideNav\">\n <ul>{listItems(IndexPage.prototype.sidebarItems().toArray())}</ul>\n </nav>\n <div className=\"IndexPage-results sideNavOffset\">\n <LinkButton href={app.route('badges')} icon={'fas fa-chevron-left'} className={'Button BadgesOverviewButton'}>\n {app.translator.trans('v17development-flarum-badges.forum.badge.badges')}\n </LinkButton>\n\n {this.loading && <LoadingIndicator size={'large'} />}\n\n {!this.loading && (\n <div className={'BadgeUserListInfo'}>\n <i className={badge.icon()} />\n\n <div className={'BadgeUserListInfo-meta'}>\n <h3>{badge.name()}</h3>\n <p>{badge.description()}</p>\n </div>\n </div>\n )}\n\n {badge && (\n <h3>\n {app.translator.trans('v17development-flarum-badges.forum.badge.earned_by_count', {\n count: badge.earnedAmount(),\n })}\n </h3>\n )}\n\n {!this.loading && app.forum.attribute('canViewDetailedBadgeUsers') && (\n <BadgeUserList state={app.userBadgeListState} badgeId={badge.id()} />\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n","import { extend } from 'flarum/extend';\nimport IndexPage from 'flarum/components/IndexPage';\nimport LinkButton from 'flarum/components/LinkButton';\n\nexport default function addSidebarNav() {\n extend(IndexPage.prototype, 'navItems', function (items) {\n items.add(\n 'badges',\n <LinkButton icon=\"fas fa-id-badge\" href={app.route('badges')}>\n {app.translator.trans('v17development-flarum-badges.forum.badge.badges')}\n </LinkButton>,\n 15\n );\n\n return items;\n });\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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/states/PaginatedListState'];","import PaginatedListState from 'flarum/common/states/PaginatedListState';\n\nexport default class UserBadgeListState extends PaginatedListState {\n constructor(params, page = 1) {\n super(params, page, 18);\n }\n\n get type() {\n return 'user_badges';\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import Notification from 'flarum/forum/components/Notification';\n\nexport default class BadgeReceivedNotification extends Notification {\n icon() {\n return '';\n }\n\n href() {\n return app.route('user.badges', {\n username: app.session.user.username(),\n });\n }\n\n content() {\n return app.translator.trans('v17development-flarum-badges.forum.notification.title');\n }\n\n excerpt() {\n const subject = this.attrs.notification.subject();\n\n return (\n <div>\n <i className={`icon ${subject.badge().icon()}`} />\n\n {subject.badge().name()}\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Switch'];","import Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\nimport ItemList from 'flarum/utils/ItemList';\nimport Switch from 'flarum/components/Switch';\nimport UserBadge from '../../common/components/UserBadge';\nimport categorizeUserBadges from '../utils/categorizeUserBadges';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nexport default class SelectUserCardBadgesModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.loading = false;\n\n this.limit = app.forum.attribute('numberOfBadgesOnUserCard');\n this.selectedBadges = this.attrs.user\n .userBadges()\n .filter((userBadge) => userBadge.inUserCard())\n .map((userBadge) => userBadge.id());\n }\n\n className() {\n return 'Modal--big UserCardBadgesModal';\n }\n\n title() {\n return app.translator.trans('v17development-flarum-badges.forum.badges_in_card.title');\n }\n\n content() {\n return (\n <div>\n <div className=\"Modal-body\">{this.data().toArray()}</div>\n <div className=\"Modal-footer\">\n <Button className={'Button Button--primary'} onclick={() => this.save()} loading={this.loading}>\n {app.translator.trans('v17development-flarum-badges.forum.save_changes')}\n </Button>\n </div>\n </div>\n );\n }\n\n data() {\n const items = new ItemList();\n\n const categories = categorizeUserBadges(this.attrs.user);\n\n // Badge name\n items.add(\n 'info',\n <div className={'BadgeModalListItem'}>\n <p>{app.translator.trans('v17development-flarum-badges.forum.badges_in_card.description')}</p>\n <p>\n {app.translator.trans('v17development-flarum-badges.forum.badges_in_card.select_limit', {\n limit: app.forum.attribute('numberOfBadgesOnUserCard'),\n })}\n </p>\n </div>\n );\n\n // Loop through all badge categories\n categories.map(({ name, category, badges }) => {\n items.add(\n `badge_category_${category ? category.id() : 'uncategorized'}`,\n <div className={'UserCardBadgesModalCategory'}>\n <div className={'UserCardBadgesModalCategory-name'}>{name}</div>\n\n {/* Loop through the badges */}\n {badges\n .sort((a, b) => a.badge().order() - b.badge().order())\n .map((userBadge) => {\n const disabled = this.selectedBadges.length >= this.limit && this.selectedBadges.indexOf(userBadge.id()) === -1;\n\n return (\n <Tooltip\n text={\n disabled\n ? app.translator.trans('v17development-flarum-badges.forum.badges_in_card.hit_limit', {\n limit: app.forum.attribute('numberOfBadgesOnUserCard'),\n })\n : ''\n }\n position=\"bottom\"\n >\n <div\n className={'UserCardBadgesModalCategory-badge'}\n onclick={() => {\n if (disabled) {\n return;\n }\n\n const currentIndex = this.selectedBadges.indexOf(userBadge.id());\n\n // Remove from selected list\n if (currentIndex >= 0) {\n this.selectedBadges.splice(currentIndex, 1);\n } else {\n // Add to list\n this.selectedBadges.push(userBadge.id());\n }\n }}\n >\n <div className={'UserCardBadgesModalCategory-badge-preview'}>\n <UserBadge badge={userBadge.badge()} onclick={() => {}} />\n </div>\n {/* <div className={\"UserCardBadgesModalCategory-badge-points\"}></div> */}\n <div className={'UserCardBadgesModalCategory-badge-switch'}>\n {Switch.component({\n state: this.selectedBadges.indexOf(userBadge.id()) >= 0,\n disabled,\n })}\n </div>\n </div>\n </Tooltip>\n );\n })}\n </div>\n );\n });\n\n return items;\n }\n\n save() {\n this.loading = true;\n\n this.attrs.user\n .save({ userCardBadges: this.selectedBadges })\n .then(() => {\n // Update current user badges store\n this.attrs.user.userBadges().map((userBadge) => {\n userBadge.pushAttributes({\n inUserCard: this.selectedBadges.indexOf(userBadge.id()) >= 0,\n });\n });\n\n this.hide();\n })\n .catch(() => {})\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","import { extend } from 'flarum/extend';\nimport Model from 'flarum/Model';\nimport User from 'flarum/models/User';\nimport UserPage from 'flarum/components/UserPage';\nimport UserControls from 'flarum/utils/UserControls';\nimport LinkButton from 'flarum/components/LinkButton';\nimport Button from 'flarum/components/Button';\nimport Badge from '../common/models/Badge';\nimport BadgeCategory from '../common/models/BadgeCategory';\nimport UserBadge from '../common/models/UserBadge';\nimport BadgesProfilePage from './components/BadgesProfilePage';\nimport BadgesOverviewPage from './components/BadgesOverviewPage';\nimport BadgeItemPage from './components/BadgeItemPage';\nimport GiveBadgeModal from './components/GiveBadgeModal';\nimport addSidebarNav from './addSidebarNav';\nimport UserBadgeListState from './states/UserBadgeListState';\nimport BadgeReceivedNotification from './notification/BadgeReceivedNotification';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\nimport addBadgeListUserCard from './addBadgeListUserCard';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\n\napp.initializers.add('v17development-flarum-badges', (app) => {\n app.store.models.badges = Badge;\n app.store.models.badgeCategories = BadgeCategory;\n app.store.models.userBadges = UserBadge;\n\n User.prototype.userBadges = Model.hasMany('userBadges');\n User.prototype.userPrimaryBadge = Model.hasOne('userPrimaryBadge');\n\n // Add user badges to the user profile\n app.routes['user.badges'] = {\n path: '/u/:username/badges',\n component: BadgesProfilePage,\n };\n\n // Badges overview page\n app.routes.badges = {\n path: '/badges',\n component: BadgesOverviewPage,\n };\n\n // Future\n // // Badges overview page\n // app.routes[\"badges.category\"] = {\n // path: \"/badges/category/:id\",\n // component: BadgesOverviewPage,\n // };\n\n // Badge item page\n app.routes['badges.item'] = {\n path: '/badges/:id',\n component: BadgeItemPage,\n };\n\n addSidebarNav();\n\n app.userBadgeListState = new UserBadgeListState({});\n\n // Badge received notification\n app.notificationComponents.badgeReceived = BadgeReceivedNotification;\n\n // Enable badge notifications?\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('badgeReceived', {\n name: 'badgeReceived',\n icon: 'fas fa-user-tag',\n label: app.translator.trans('v17development-flarum-badges.forum.notification.settings'),\n });\n });\n\n // Add uploads to user page menu items\n extend(UserPage.prototype, 'navItems', function (items) {\n items.add(\n 'badges',\n LinkButton.component(\n {\n href: app.route('user.badges', {\n username: this.user.username(),\n }),\n name: 'badges',\n icon: 'fas fa-user-tag',\n },\n [\n app.translator.trans('v17development-flarum-badges.forum.badge.badges'),\n <span className=\"Button-badge\">{this.user.userBadges().length}</span>,\n ]\n ),\n 90\n );\n });\n\n extend(UserControls, 'moderationControls', function (items, user) {\n // User can give badges\n if (app.forum.attribute('canGiveBadge')) {\n items.add(\n 'test',\n <Button\n icon=\"fas fa-user-tag\"\n onclick={() =>\n app.modal.show(GiveBadgeModal, {\n user: user,\n })\n }\n >\n {app.translator.trans('v17development-flarum-badges.forum.give_badge')}\n </Button>\n );\n }\n });\n\n addBadgeListUserCard();\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (typeof params.include === 'string') {\n params.include = [params.include];\n } else {\n params.include?.push('user.userBadges', 'user.userBadges.badge');\n }\n });\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport Link from 'flarum/common/components/Link';\nimport UserBadge from '../common/components/UserBadge';\nimport BadgeModal from './components/BadgeModal';\nimport SelectUserCardBadgesModal from './components/SelectUserCardBadgesModal';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nexport default function addBadgeListUserCard() {\n extend(UserCard.prototype, 'infoItems', function (items) {\n // Get user\n const user = this.attrs.user;\n\n // Don't show badges\n if (!app.forum.attribute('showBadgesOnUserCard') || !user.userBadges) return;\n\n const userBadges = user.userBadges() ?? [];\n\n // No badges to show\n if (userBadges.length < 1 || !userBadges) return;\n\n const limit = app.forum.attribute('numberOfBadgesOnUserCard');\n\n // Check for all badges\n let visibleBadges = userBadges.filter((userBadge) => {\n return userBadge.inUserCard();\n });\n\n // No badges selected (yet). Just select a few\n if (visibleBadges.length === 0) {\n visibleBadges = userBadges.slice(0, limit);\n }\n\n const badges = visibleBadges.map((userBadge) => {\n return (\n <UserBadge\n badge={userBadge.badge()}\n onclick={() =>\n app.modal.show(BadgeModal, {\n badge: userBadge.badge(),\n userBadgeData: userBadge,\n })\n }\n />\n );\n });\n\n if (badges.length < userBadges.length) {\n const count = userBadges.length - visibleBadges.length;\n badges.push(\n <Link\n href={app.route('user.badges', {\n username: user.username(),\n })}\n className=\"UserBadge more-badges\"\n >\n {app.translator.trans('v17development-flarum-badges.forum.badge.others_link', { count })}\n </Link>\n );\n }\n\n // Manage badges\n if ((user === app.session.user && app.forum.attribute('editOwnUserCardBadges')) || app.forum.attribute('editUserCardBadges')) {\n badges.push(\n <Tooltip text={app.translator.trans('v17development-flarum-badges.forum.badges_in_card.manage_badges')}>\n <a\n href={'#'}\n className=\"UserBadge more-badges\"\n onclick={(e) => {\n e.preventDefault();\n app.modal.show(SelectUserCardBadgesModal, { user });\n }}\n >\n <i className={'fas fa-pencil-alt BadgeIconOnly'} />\n </a>\n </Tooltip>\n );\n }\n\n items.add('badges', badges);\n });\n}\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","module.exports = flarum.core.compat['forum/app'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['components/EditPostComposer'];","module.exports = flarum.core.compat['common/components/Alert'];","module.exports = flarum.core.compat['utils/DiscussionControls'];","module.exports = flarum.core.compat['components/LogInModal'];","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['components/ReplyComposer'];","module.exports = flarum.core.compat['models/User'];","import { extend, override } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Alert from 'flarum/common/components/Alert';\nimport DiscussionControls from 'flarum/utils/DiscussionControls';\nimport EditPostComposer from 'flarum/components/EditPostComposer';\nimport LogInModal from 'flarum/components/LogInModal';\nimport Model from 'flarum/Model';\nimport ReplyComposer from 'flarum/components/ReplyComposer';\nimport User from 'flarum/models/User';\n\napp.initializers.add(\n 'the-turk-nodp',\n () => {\n User.prototype.canDoublePost = Model.attribute('canDoublePost');\n\n const isDoublePosting = (discussion, user) => {\n if (!discussion || !user || user.canDoublePost()) return false;\n\n const lastPostedUser = discussion.lastPostedUser();\n const lastPostedAt = discussion.lastPostedAt();\n\n const timeLimit = app.forum.attribute('nodp.time_limit'); // in minutes\n const isExpired = dayjs(lastPostedAt.getTime()).add(timeLimit, 'minute').isBefore(dayjs());\n\n return timeLimit == 0 || (!isExpired && lastPostedUser == user) ? true : false;\n };\n\n // Add a warning message.\n extend(EditPostComposer.prototype, 'headerItems', function (items) {\n items.add(\n 'nodp',\n <div className=\"Alert\">\n <div className=\"Alert-body\">\n <h4>{app.translator.trans('the-turk-nodp.forum.composer_edit.double_posting_warning_title')}</h4>\n <p>{app.translator.trans('the-turk-nodp.forum.composer_edit.double_posting_warning_description')}</p>\n </div>\n </div>\n );\n });\n\n // We need to override replyAction directly to support `flarum/mentions`.\n override(DiscussionControls, 'replyAction', function (goToLast, forceRefresh) {\n const user = app.session.user;\n\n return new Promise((resolve, reject) => {\n if (user) {\n if (isDoublePosting(this, user)) {\n const post = this.lastPost();\n\n if (post.contentType() === 'comment' && post.canEdit()) {\n app.composer.load(EditPostComposer, { post });\n app.composer.show();\n\n // showing the composer message like this because what will happen\n // if you're just editing a post instead of attempting double posting?\n $('body').find('.item-nodp').css('display', 'block');\n\n return resolve(app.composer);\n }\n app.alerts.show(Alert, { type: 'error' }, app.translator.trans('the-turk-nodp.forum.discussion.cannot_reply_alert_message'));\n\n return reject();\n }\n\n if (this.canReply()) {\n if (!app.composer.composingReplyTo(this) || forceRefresh) {\n app.composer.load(ReplyComposer, {\n user,\n discussion: this,\n });\n }\n app.composer.show();\n\n if (goToLast && app.viewingDiscussion(this) && !app.composer.isFullScreen()) {\n app.current.get('stream').goToNumber('reply');\n }\n\n return resolve(app.composer);\n } else {\n return reject();\n }\n }\n\n app.modal.show(LogInModal);\n\n return reject();\n });\n });\n },\n -10\n);\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['Model'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/LoadingIndicator'];","export default function formatBytes(bytes, decimals = 2) {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\nimport ItemList from 'flarum/utils/ItemList';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport formatBytes from '../../common/formatBytes';\n\nexport default class CoverEditorModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.maxSize = parseFloat(app.forum.attribute('sycho-profile-cover.max_size') || 2048);\n\n this.alertAttrs = {\n content: app.translator.trans('sycho-profile-cover.forum.notice', { size: formatBytes(this.maxSize * Math.pow(2, 10)) }),\n };\n\n this.loading = false;\n this.cover = this.attrs.user.cover_thumbnail() || this.attrs.user.cover();\n this.context = '';\n }\n\n content() {\n let attrs = {};\n let className = 'Modal-image CoverEditor-cover';\n\n if (this.cover) {\n attrs.style = { backgroundImage: `url(${this.cover})` };\n className += ' CoverEditor-active';\n }\n\n return [\n <div className={className} {...attrs}>\n {this.loading ? <LoadingIndicator /> : ''}\n </div>,\n\n <div className=\"Modal-body\">\n <div className=\"Form\">{this.fieldsItems().toArray()}</div>\n </div>,\n ];\n }\n\n className() {\n return 'Cover-modal Modal--small';\n }\n\n title() {\n return app.translator.trans('sycho-profile-cover.forum.edit_cover');\n }\n\n fieldsItems() {\n const items = new ItemList();\n\n items.add('actions', this.controlItems().toArray());\n\n return items;\n }\n\n controlItems() {\n const items = new ItemList();\n\n items.add(\n 'upload',\n <Button icon=\"fas fa-upload\" className=\"Button\" onclick={this.openPicker.bind(this)}>\n {app.translator.trans('core.forum.user.avatar_upload_button')}\n </Button>\n );\n\n items.add(\n 'remove',\n <Button icon=\"fas fa-times\" className=\"Button\" onclick={this.remove.bind(this)}>\n {app.translator.trans('core.forum.user.avatar_remove_button')}\n </Button>\n );\n\n return items;\n }\n\n openPicker() {\n const input = $('<input type=\"file\">');\n\n input\n .appendTo('body')\n .hide()\n .click()\n .on('change', (e) => {\n this.upload($(e.target)[0].files[0]);\n });\n }\n\n upload(file) {\n if (this.loading) return;\n\n const data = new FormData();\n data.append('cover', file);\n\n this.loading = true;\n this.context = 'added';\n m.redraw();\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/users/${this.attrs.user.id()}/cover`,\n serialize: (raw) => raw,\n body: data,\n })\n .then(this.success.bind(this), this.failure.bind(this));\n }\n\n remove() {\n this.loading = true;\n this.context = 'removed';\n m.redraw();\n\n app\n .request({\n method: 'DELETE',\n url: `${app.forum.attribute('apiUrl')}/users/${this.attrs.user.id()}/cover`,\n })\n .then(this.success.bind(this), this.failure.bind(this));\n }\n\n success(response) {\n app.store.pushPayload(response);\n\n this.showAlert('success');\n this.loading = false;\n m.redraw();\n this.hide();\n }\n\n failure() {\n this.showAlert('error');\n this.loading = false;\n m.redraw();\n }\n\n showAlert(type) {\n this.alertAttrs.content = app.translator.trans(`sycho-profile-cover.forum.${this.context}.${type}`);\n this.alertAttrs.type = type;\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/extend';\nimport User from 'flarum/models/User';\nimport UserCard from 'flarum/components/UserCard';\nimport UserControls from 'flarum/utils/UserControls';\nimport Button from 'flarum/components/Button';\nimport Model from 'flarum/Model';\n\nimport CoverEditorModal from './components/CoverEditorModal';\n\napp.initializers.add('sycho-profile-cover', () => {\n User.prototype.cover = Model.attribute('cover');\n User.prototype.cover_thumbnail = Model.attribute('cover_thumbnail');\n User.prototype.canSetProfileCover = Model.attribute('canSetProfileCover');\n\n extend(UserCard.prototype, 'view', function (view) {\n if (!view.attrs.style || !this.attrs.user.cover()) return;\n\n let coverUrl = this.attrs.user.cover();\n let thumbnailUrl = this.attrs.user.cover_thumbnail();\n\n if (!coverUrl) return;\n\n if (this.attrs.controlsButtonClassName.includes('Button--icon') && thumbnailUrl) {\n coverUrl = thumbnailUrl;\n }\n\n view.attrs.style = Object.assign(view.attrs.style, {\n '--background-image': `url(${coverUrl})`,\n });\n });\n\n extend(UserControls, 'moderationControls', function (items, user) {\n if (!user.canSetProfileCover()) return;\n\n items.add(\n 'cover',\n <Button icon=\"fas fa-image\" onclick={() => app.modal.show(CoverEditorModal, { user })}>\n {app.translator.trans('sycho-profile-cover.forum.cover')}\n </Button>\n );\n\n return items;\n });\n});\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./forum.js\");\n","export * from './src/forum'\n","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}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\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 Input from './components/Input';\nimport ProgressBar from './components/ProgressBar';\nimport Label from './components/Label';\nimport LabelGroup from './components/LabelGroup';\n\nexport default {\n 'uikit/common/components/Input': Input,\n 'uikit/common/components/ProgressBar': ProgressBar,\n 'uikit/common/components/Label': Label,\n 'uikit/common/components/LabelGroup': LabelGroup,\n};\n","import Component from 'flarum/Component';\nimport icon from 'flarum/helpers/icon';\n\nexport default class Input extends Component {\n view() {\n this.attrs.className = this.attrs.className || '';\n\n this.attrs.className += ' UiKit-FormControl';\n\n if (this.attrs.icon) {\n this.attrs.className += ' hasIcon';\n }\n\n let className = `UiKit-Input ${this.attrs.parentClassName || ''}`;\n\n return (\n <div className={className}>\n {this.icon()}\n <input {...this.attrs} />\n </div>\n );\n }\n\n icon() {\n if (!this.attrs.icon) return;\n\n const iconValue = this.attrs.icon;\n\n delete this.attrs.icon;\n\n return <span class=\"UiKit-Input-icon\">{icon(iconValue)}</span>;\n }\n}\n","import Component from 'flarum/Component';\n\nexport default class Label extends Component {\n view(vnode) {\n let style = {};\n let className = ['UiKit-Label'];\n\n if (this.attrs.className) className.push(this.attrs.className);\n\n if (this.attrs.color) {\n style.backgroundColor = `#${this.attrs.color}`;\n className.push('colored');\n }\n\n return (\n <span className={className.join(' ')} style={style}>\n <span className=\"UiKit-Label-text\">{vnode.children}</span>\n </span>\n );\n }\n}\n","import Component from 'flarum/Component';\n\nexport default class LabelGroup extends Component {\n view(vnode) {\n let className = ['UiKit-LabelGroup'];\n\n if (this.attrs.className) className.push(this.attrs.className);\n\n return <span className={className.join(' ')}>{vnode.children}</span>;\n }\n}\n","import Component from 'flarum/Component';\n\nexport default class ProgressBar extends Component {\n view() {\n let className = ['UiKit-ProgressBar'];\n\n if (this.attrs.className) className.push(this.attrs.className);\n\n if (this.attrs.mini) className.push('UiKit-ProgressBar--mini');\n\n if (this.attrs.fancy) className.push('UiKit-ProgressBar--fancy');\n\n if (this.attrs.alternate) className.push('UiKit-ProgressBar--alternate');\n\n return (\n <div className={className.join(' ')}>\n <div className=\"UiKit-ProgressBar-bar\" style={{ width: `${this.getProgress()}%` }} />\n </div>\n );\n }\n\n getProgress() {\n return this.attrs.progress;\n }\n}\n","import DiscussionSearch from \"./components/DiscussionSearch\";\nimport DiscussionSearchSource from \"./components/DiscussionSearchSource\";\nimport compat from \"../common/compat\";\n\nexport default {\n ...compat,\n 'uikit/forum/DiscussionSearch': DiscussionSearch,\n 'uikit/forum/DiscussionSearchSource': DiscussionSearchSource,\n};\n","import Search, { SearchAttrs } from 'flarum/forum/components/Search';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport DiscussionSearchSource from './DiscussionSearchSource';\nimport type Discussion from \"flarum/common/models/Discussion\";\n\nexport interface DiscussionSearchAttrs extends SearchAttrs {\n onSelect: (discussion: Discussion) => void;\n ignore: number;\n}\n\nexport default class DiscussionSearch<T extends DiscussionSearchAttrs> extends Search<T> {\n view() {\n this.hasFocus = true;\n\n const vdom = super.view();\n\n // @ts-ignore\n vdom.attrs.className = `UiKit-Search ${this.state.getValue() && 'open'} ` + vdom.attrs.className.replace(/(focused|open)/g, '');\n\n return vdom;\n }\n\n sourceItems() {\n const items = new ItemList();\n\n items.add('discussions', new DiscussionSearchSource((discussion: Discussion) => {\n this.state.setValue(discussion.title());\n this.attrs.onSelect(discussion);\n }, this.attrs.ignore));\n\n return items;\n }\n}\n","import type Mithril from 'mithril';\nimport app from 'flarum/forum/app';\nimport highlight from 'flarum/common/helpers/highlight';\nimport Search from \"flarum/forum/components/Search\";\nimport type Discussion from \"flarum/common/models/Discussion\";\nimport Button from \"flarum/common/components/Button\";\n\nexport default class DiscussionSearchSource implements Search {\n protected results = new Map<string, unknown[]>();\n protected onSelect!: (discussion: Discussion) => void;\n protected ignore!: number;\n\n constructor(onSelect: (discussion: Discussion) => void, ignore: number) {\n this.results = new Map();\n\n this.onSelect = onSelect;\n this.ignore = ignore;\n }\n\n search(query: string) {\n query = query.toLowerCase();\n\n this.results.set(query, []);\n\n const params = {\n filter: { q: query },\n page: { limit: 3 },\n };\n\n const id = Number(query);\n\n if (!Number.isNaN(id) && id !== this.ignore) {\n return app.store\n .find('discussions', id)\n .then((d) => {\n this.results.set(query, [d]);\n })\n .catch(() => []);\n }\n\n return app.store.find('discussions', params).then((results) => {\n this.results.set(\n query,\n results.filter((d: Discussion) => d.id() !== this.ignore)\n );\n });\n }\n\n // @ts-ignore\n view(query: string): Mithril.Children {\n query = query.toLowerCase();\n\n return ((this.results.get(query) || []) as Discussion[]).map((discussion: Discussion) => {\n return (\n <li className=\"DiscussionSearchResult\" data-index={'discussions' + discussion.id()}>\n <Button onclick={() => this.onSelect(discussion)}>\n {/* @ts-ignore */}\n <div className=\"DiscussionSearchResult-id\">{discussion.id()}</div>\n <div className=\"DiscussionSearchResult-title\">{highlight(discussion.title(), query)}</div>\n </Button>\n </li>\n );\n }) as Array<Mithril.Vnode>;\n }\n}\n","// Expose compat API\nimport customCompat from './compat';\n// @ts-ignore\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, customCompat);\n","module.exports = flarum.core;","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/helpers/highlight'];","module.exports = flarum.core.compat['common/utils/ItemList'];","module.exports = flarum.core.compat['forum/app'];","module.exports = flarum.core.compat['forum/components/Search'];","module.exports = flarum.core.compat['helpers/icon'];","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","import type StreamType from 'mithril/stream';\nimport Stream from 'flarum/common/utils/Stream';\n\nexport default class DiscussionPageState {\n public selectedPostsToMove: StreamType;\n\n constructor() {\n this.selectedPostsToMove = Stream([]);\n }\n\n push(postId: number): void {\n this.selectedPostsToMove([...this.selectedPostsToMove(), postId]);\n }\n\n remove(postId: number): void {\n this.selectedPostsToMove(this.selectedPostsToMove().filter((id: number) => id !== postId));\n }\n\n has(postId: number): boolean {\n return this.selectedPostsToMove().includes(postId);\n }\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['uikit/forum/DiscussionSearch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/GlobalSearchState'];","import app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport Modal from 'flarum/common/components/Modal';\nimport Switch from 'flarum/common/components/Switch';\nimport DiscussionSearch from 'flarum/uikit/forum/DiscussionSearch';\nimport { ComponentAttrs } from 'flarum/common/Component';\nimport type Discussion from 'flarum/common/models/Discussion';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\n\nexport interface MovePostsModalAttrs extends ComponentAttrs {\n discussion: Discussion;\n postIds: number[];\n}\n\nexport default class MovePostsModal<T extends MovePostsModalAttrs> extends Modal<T> {\n isLoading: string | boolean = false;\n newDiscussion: boolean = false;\n newDiscussionTitle: string = '';\n targetDiscussionId: number | null = null;\n search = new GlobalSearchState();\n\n className() {\n return 'MovePostsModal';\n }\n\n title() {\n return app.translator.trans('sycho-move-posts.forum.modal.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <form className=\"Form\" onsubmit={this.onsubmit.bind(this)}>\n <div className=\"Form-group\">\n <label>{app.translator.trans('sycho-move-posts.forum.modal.selected_posts', { count: this.attrs.postIds.length })}</label>\n <input className=\"FormControl\" readonly value={this.attrs.postIds.join(', ')} />\n </div>\n <div className=\"Form-group\">\n <Switch state={this.newDiscussion} onchange={() => (this.newDiscussion = !this.newDiscussion)}>\n {app.translator.trans('sycho-move-posts.forum.modal.new_discussion')}\n </Switch>\n </div>\n {this.newDiscussion ? (\n <div className=\"Form-group\">\n <label for=\"discussion_name\">{app.translator.trans('sycho-move-posts.forum.modal.discussion_name')}</label>\n <p className=\"helptext\">{app.translator.trans('sycho-move-posts.forum.modal.discussion_help')}</p>\n <input id=\"discussion_name\" className=\"FormControl\" required={true} oninput={(e: any) => (this.newDiscussionTitle = e.target.value)} />\n </div>\n ) : (\n <div className=\"Form-group\">\n <label for=\"destination\">{app.translator.trans('sycho-move-posts.forum.modal.destination')}</label>\n {/*<input\n id=\"destination\"\n className=\"FormControl\"\n type=\"number\"\n required={true}\n onchange={(e: any) => (this.targetDiscussionId = e.target!.value)}\n />*/}\n <DiscussionSearch\n state={this.search}\n ignore={this.attrs.discussion.id()}\n onSelect={(discussion: Discussion) => (this.targetDiscussionId = discussion.id())}\n />\n </div>\n )}\n <div className=\"Form-group Form-controls\">\n <Button\n className=\"Button Button--primary\"\n type=\"submit\"\n loading={this.isLoading === 'submit'}\n disabled={this.isLoading === 'check' || (!this.targetDiscussionId && !this.newDiscussionTitle)}\n >\n {app.translator.trans('sycho-move-posts.forum.modal.submit')}\n </Button>\n <Button\n className=\"Button\"\n onclick={this.emulate.bind(this)}\n loading={this.isLoading === 'check'}\n disabled={this.isLoading === 'submit' || (!this.targetDiscussionId && !this.newDiscussionTitle)}\n >\n {app.translator.trans('sycho-move-posts.forum.modal.check')}\n </Button>\n </div>\n </form>\n </div>\n );\n }\n\n data() {\n const data: Record<string, unknown> = {\n sourceDiscussionId: this.attrs.discussion.id(),\n postIds: this.attrs.postIds,\n };\n\n if (this.newDiscussion) {\n data.newDiscussion = true;\n data.newDiscussionTitle = this.newDiscussionTitle;\n } else {\n data.targetDiscussionId = this.targetDiscussionId;\n }\n\n return data;\n }\n\n emulate() {\n this.onsubmit(null, true).then((response: any) => {\n switch (response.data.attributes.status) {\n case 'old_to_new_move':\n this.alertAttrs = { type: 'error', content: app.translator.trans('sycho-move-posts.forum.modal.status.old_to_new_move') };\n break;\n\n case 'simple_move':\n this.alertAttrs = { type: 'success', content: app.translator.trans('sycho-move-posts.forum.modal.status.simple_move') };\n break;\n\n case 'complex_move':\n this.alertAttrs = { type: 'warning', content: app.translator.trans('sycho-move-posts.forum.modal.status.complex_move') };\n break;\n\n default:\n break;\n }\n\n m.redraw();\n });\n }\n\n onsubmit(e: any, emulate: boolean) {\n if (e) e.preventDefault();\n\n this.isLoading = emulate ? 'check' : 'submit';\n let url = '/api/posts/move';\n\n if (emulate) url += '/check';\n\n return app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('baseUrl')}${url}`,\n body: { data: this.data() },\n errorHandler: (e: any) => {\n const error = e.response.errors[0];\n this.isLoading = false;\n\n if (error.code !== 'move_old_post_to_newer_discussion') {\n throw e;\n }\n\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans('sycho-move-posts.forum.error.move_old_post_to_newer_discussion'),\n };\n\n m.redraw();\n },\n })\n .then((response: any) => {\n this.isLoading = false;\n if (!emulate) {\n m.redraw();\n window.location.reload();\n app.modal.close();\n }\n\n return response;\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import EventPost from 'flarum/forum/components/EventPost';\nimport Link from 'flarum/common/components/Link';\n\nexport default class PostMovedPost extends EventPost {\n icon() {\n return 'fas fa-exchange-alt';\n }\n\n descriptionKey() {\n return 'sycho-move-posts.forum.post_stream.post_moved';\n }\n\n descriptionData() {\n const post = this.attrs.post;\n const data: any = post.content();\n\n return {\n target_discussion: (\n <Link className=\"EventPost-PostMoved-target\" href={app.route('discussion.near', { id: data.targetDiscussionId, near: data.number })}>\n {data.targetDiscussionTitle}\n </Link>\n ),\n count: data.count,\n };\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostMovedNotification extends Notification {\n icon() {\n return 'fas fa-exchange-alt';\n }\n\n href() {\n return app.route('discussion', { id: this.attrs.notification.content().targetDiscussionId });\n }\n\n content() {\n return app.translator.trans('sycho-move-posts.forum.notifications.post_moved_text', {\n targetDiscussionTitle: (\n <span className=\"MovePosts-Notification-targetDiscussion\">{this.attrs.notification.content().targetDiscussionTitle}</span>\n ),\n });\n }\n}\n","import { extend, override } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport Badge from 'flarum/common/components/Badge';\nimport Post from 'flarum/forum/components/Post';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport icon from 'flarum/common/helpers/icon';\nimport Discussion from 'flarum/common/models/Discussion';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Model from 'flarum/common/Model';\n\nimport DiscussionPageState from './states/DiscussionPageState';\nimport MovePostsModal from './components/MovePostsModal';\nimport PostMovedPost from './components/PostMovedPost';\nimport PostMovedNotification from './components/PostMovedNotification';\n\napp.initializers.add('sycho/flarum-move-posts', () => {\n // @ts-ignore\n Discussion.prototype.isFirstMoved = Model.attribute('isFirstMoved');\n\n extend(Discussion.prototype, 'badges', function (badges: ItemList) {\n if (this.isFirstMoved()) {\n badges.add(\n 'firstMoved',\n <Badge type=\"firstPostMoved\" label={app.translator.trans('sycho-move-posts.forum.badge.first_moved_tooltip')} icon=\"fas fa-exchange-alt\" />,\n -20\n );\n }\n });\n\n // @ts-ignore\n app.postComponents.postMoved = PostMovedPost;\n\n // @ts-ignore\n app.notificationComponents.postMoved = PostMovedNotification;\n\n if (!app.data.resources[0].attributes.canMovePosts) {\n return;\n }\n\n const state = new DiscussionPageState();\n\n extend(CommentPost.prototype, 'oninit', function () {\n this.subtree.check(() => state.selectedPostsToMove());\n });\n\n extend(Post.prototype, 'classes', function (classes: string[]) {\n if (this.attrs.post.contentType() === 'comment' && state.has(this.attrs.post.id())) {\n classes.push('Post--moving');\n }\n });\n\n extend(CommentPost.prototype, 'headerItems', function (items) {\n if (state.has(this.attrs.post.id())) {\n items.add(\n 'moving',\n <span className=\"PostMoving\">\n {icon('fas fa-exchange-alt')} {app.translator.trans('sycho-move-posts.forum.post.moving')}\n </span>\n );\n }\n });\n\n extend(DiscussionPage.prototype, 'oncreate', () => {\n state.selectedPostsToMove([]);\n });\n\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n if (state.selectedPostsToMove().length) {\n items.add(\n 'movePosts',\n <Button\n icon=\"fas fa-exchange-alt\"\n className=\"Button\"\n onclick={() =>\n app.modal.show(MovePostsModal, {\n postIds: state.selectedPostsToMove(),\n discussion: this.discussion,\n })\n }\n >\n {app.translator.trans('sycho-move-posts.forum.discussion.move_posts')}\n <span className=\"MovePosts-Button-count\">{state.selectedPostsToMove().length}</span>\n </Button>\n );\n }\n });\n\n extend(PostControls, 'moderationControls', function (items, post) {\n if (post.contentType() !== 'comment') return;\n\n const operation = state.has(post.id()) ? 'unmove' : 'move';\n\n items.add(\n 'movePost',\n <Button\n icon=\"fas fa-arrow-right\"\n onclick={() => {\n if (operation === 'move') {\n state.push(post.id());\n } else {\n state.remove(post.id());\n }\n\n m.redraw();\n }}\n >\n {app.translator.trans(`sycho-move-posts.forum.post.${operation}`)}\n </Button>\n );\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","/*\n * This file is part of rob006/flarum-ext-last-post-avatar.\n *\n * Copyright (c) 2023 Robert Korulczyk <robert@korulczyk.pl>\n *\n * This source file is subject to the MIT license that is bundled\n * with this source code in the file LICENSE.\n */\n\nimport app from 'flarum/common/app';\n\napp.initializers.add('rob006/flarum-ext-last-post-avatar', () => {\n\t// console.log('[rob006/flarum-ext-last-post-avatar] Hello, forum and admin!');\n});\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/TerminalPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","/*\n * This file is part of rob006/flarum-ext-last-post-avatar.\n *\n * Copyright (c) 2023 Robert Korulczyk <robert@korulczyk.pl>\n *\n * This source file is subject to the MIT license that is bundled\n * with this source code in the file LICENSE.\n */\n\nimport app from 'flarum/forum/app';\nimport {extend, override} from 'flarum/common/extend';\nimport TerminalPost from 'flarum/forum/components/TerminalPost';\nimport avatar from 'flarum/common/helpers/avatar';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport icon from 'flarum/common/helpers/icon';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport Link from 'flarum/common/components/Link';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nclass MyTerminalPost extends TerminalPost {\n\n\tview() {\n\t\tconst mode = app.forum.attribute('lastPostAvatarMode');\n\t\tconst discussion = this.attrs.discussion;\n\t\tconst lastPost = this.attrs.lastPost && discussion.replyCount();\n\n\t\tconst user = discussion[lastPost ? 'lastPostedUser' : 'user']();\n\t\tconst time = discussion[lastPost ? 'lastPostedAt' : 'createdAt']();\n\t\tvar showAvatar = (mode === 'all-replies' && lastPost)\n\t\t\t|| (mode === 'always')\n\t\t\t|| (mode === 'non-op-replies' && lastPost && discussion.lastPostedUser() != discussion.user())\n\t\tshowAvatar &&= !app.forum.attribute('lastPostAvatarIgnorePrivateDiscussions') || !discussion.isPrivateDiscussion?.();\n\n\t\treturn (\n\t\t\t<span>\n\t\t\t\t{lastPost ? icon('fas fa-reply') : ''}{' '}\n\t\t\t\t{showAvatar ? avatar(user, {className: 'ComposerBody-lastPostAvatar' + (lastPost ? ' reply-avatar' : '')}) : ''}\n\t\t\t\t{app.translator.trans('core.forum.discussion_list.' + (lastPost ? 'replied' : 'started') + '_text', {\n\t\t\t\t\tuser,\n\t\t\t\t\tago: humanTime(time),\n\t\t\t\t})}\n\t\t\t</span>\n\t\t);\n\t}\n}\n\napp.initializers.add('rob006/flarum-ext-last-post-avatar', () => {\n\n\textend(DiscussionListItem.prototype, 'infoItems', function (items) {\n\t\tif (app.forum.attribute('lastPostAvatarMode') === 'replace-main') {\n\t\t\treturn;\n\t\t}\n\t\titems.replace(\n\t\t\t'terminalPost',\n\t\t\tMyTerminalPost.component({\n\t\t\t\tdiscussion: this.attrs.discussion,\n\t\t\t\tlastPost: !this.showFirstPost(),\n\t\t\t})\n\t\t);\n\t});\n\n\toverride(DiscussionListItem.prototype, 'view', function (vnode) {\n\t\tvar content = vnode();\n\t\tconst discussion = this.attrs.discussion;\n\t\tconst lastPost = !this.showFirstPost() && discussion.replyCount();\n\n\t\tif (\n\t\t\tapp.forum.attribute('lastPostAvatarMode') !== 'replace-main'\n\t\t\t|| (app.forum.attribute('lastPostAvatarIgnorePrivateDiscussions') && discussion.isPrivateDiscussion?.())\n\t\t\t|| !lastPost\n\t\t) {\n\t\t\treturn content;\n\t\t}\n\n\t\tconst user = discussion.lastPostedUser();\n\n\t\tfunction findByClassName(className) {\n\t\t\treturn function (node) {\n\t\t\t\treturn node && node.attrs && node.attrs.className && String(node.attrs.className).split(' ').includes(className);\n\t\t\t};\n\t\t}\n\n\t\tfunction replaceAvatar(node) {\n\t\t\tif (node && node.children && Array.isArray(node.children)) {\n\t\t\t\tconst container = node.children.find(findByClassName('DiscussionListItem-content'));\n\n\t\t\t\tif (container) {\n\t\t\t\t\tconst avatarPosition = container.children.findIndex(function (node) {\n\t\t\t\t\t\treturn node && node.children && Array.isArray(node.children) && node.children.find(findByClassName('DiscussionListItem-author'))\n\t\t\t\t\t});\n\t\t\t\t\tcontainer.children.splice(avatarPosition, 1,\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\ttext={app.translator.trans('core.forum.discussion_list.replied_text', {\n\t\t\t\t\t\t\t\tuser,\n\t\t\t\t\t\t\t\tago: humanTime(discussion.lastPostedAt()),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tposition=\"right\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Link className=\"DiscussionListItem-author reply-avatar\" href={user ? app.route.user(user) : '#'}>\n\t\t\t\t\t\t\t\t{avatar(user || null, {title: ''})}\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tnode.children.forEach(function (child) {\n\t\t\t\t\treplaceAvatar(child);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treplaceAvatar(content);\n\n\t\treturn content;\n\t});\n});\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 11);\n","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['models/User'];","module.exports = flarum.core.compat['components/UserPage'];","module.exports = flarum.core.compat['components/UserCard'];","module.exports = flarum.core.compat['components/FieldSet'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['helpers/avatar'];","module.exports = flarum.core.compat['utils/string'];","module.exports = flarum.core.compat['utils/ItemList'];","module.exports = flarum.core.compat['utils/humanTime'];","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 Model from 'flarum/Model';\r\n\r\nexport default class ProfileView extends Model {\r\n //comes from ProfileViewSerializer (viewer(), viewedUser(), visited_at)\r\n visitedAt = Model.attribute('visited_at', Model.transformDate);\r\n viewer = Model.hasOne('viewer');\r\n viewedUser = Model.hasOne('viewedUser');\r\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import User from 'flarum/models/User';\r\nimport UserPage from 'flarum/components/UserPage';\r\nimport UserCard from 'flarum/components/UserCard';\r\nimport FieldSet from 'flarum/components/FieldSet';\r\nimport icon from 'flarum/helpers/icon';\r\nimport avatar from 'flarum/helpers/avatar';\r\nimport {ucfirst} from 'flarum/utils/string';\r\nimport Model from 'flarum/Model';\r\nimport ItemList from 'flarum/utils/ItemList';\r\nimport { extend } from 'flarum/extend';\r\nimport humanTime from 'flarum/utils/humanTime';\r\nimport ProfileView from '../ProfileView';\r\n\r\napp.initializers.add('michaelbelgium-profile-views', function() {\r\n app.store.models.userprofileview = ProfileView;//\".userprofileview\" = serializer type \"userprofileview\"\r\n User.prototype.profileViews = Model.hasMany('profileViews');//comes from AddUserProfileViewsRelationship::RELATIONSHIP = php model relationship method\r\n User.prototype.latestProfileViews = Model.hasMany('latestProfileViews');\r\n\r\n extend(UserCard.prototype, 'infoItems', function(items) {\r\n const user = this.attrs.user;\r\n\r\n const count = user.profileViews() === false ? 0 : user.profileViews().length;\r\n\r\n items.add('profile-views',(\r\n <span>\r\n {icon('far fa-eye')}\r\n {' '}\r\n {app.translator.trans('michaelbelgium-flarum-profile-views.forum.user.view_count_text', {viewcount: count})}\r\n </span>\r\n ));\r\n });\r\n\r\n extend(UserPage.prototype, 'sidebarItems', function(items) {\r\n const lastViewed = new ItemList();\r\n\r\n let views = this.user.latestProfileViews();\r\n\r\n $.each(views, function(i, pv) {\r\n const userName = pv.viewer() === false ? app.translator.trans('michaelbelgium-flarum-profile-views.forum.user.viewlist.guest') : ucfirst(pv.viewer().username());\r\n\r\n let item = \r\n <div className=\"item-lastUser-content\">\r\n {avatar(pv.viewer() === false ? null : pv.viewer())}\r\n <div>\r\n {userName}\r\n <span className=\"lastUser-visited\" title={pv.visitedAt().toLocaleString()}>{humanTime(pv.visitedAt())}</span>\r\n </div>\r\n </div>;\r\n\r\n if(pv.viewer()) {\r\n item = <a href={app.forum.attribute('baseUrl') + '/u/' + userName}>{item}</a>;\r\n }\r\n\r\n lastViewed.add('lastUser-' + i, item);\r\n });\r\n\r\n items.add('lastViewedUsers', FieldSet.component({\r\n label: app.translator.trans('michaelbelgium-flarum-profile-views.forum.user.viewlist.title'),\r\n className: 'LastUsers'\r\n }, lastViewed.toArray())\r\n );\r\n });\r\n\r\n extend(UserPage.prototype, 'show', function() {\r\n app.request({\r\n method: 'POST',\r\n url: app.forum.attribute('apiUrl') + '/profileview',\r\n body: { \r\n viewer: app.session.user?.id() ?? null,\r\n viewedUser: this.user.id()\r\n }\r\n });\r\n });\r\n});\r\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/DiscussionList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/abbreviateNumber'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Model from 'flarum/Model';\r\n\r\nexport default class DiscussionView extends Model {\r\n //comes from DiscussionViewSerializer (user(), discussion(), visited_at)\r\n visitedAt = Model.attribute('visited_at', Model.transformDate);\r\n user = Model.hasOne('user');\r\n discussion = Model.hasOne('discussion');\r\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Modal'];","import Modal from 'flarum/components/Modal';\r\nimport Button from 'flarum/components/Button';\r\n\r\nexport default class ResetDiscussionViewsModal extends Modal {\r\n oninit(vnode)\r\n {\r\n super.oninit(vnode);\r\n\r\n this.discussion = this.attrs.discussion;\r\n this.currentViewsCount = this.discussion.viewCount();\r\n }\r\n\r\n content()\r\n {\r\n return (\r\n <div className=\"Modal-body\">\r\n <div className=\"Form Form--centered\">\r\n <p>{app.translator.trans('michaelbelgium-discussion-views.forum.modal_resetviews.label', {count: this.currentViewsCount })}</p>\r\n <div className=\"Form-group\">\r\n {Button.component(\r\n {\r\n className: 'Button Button--primary Button--block',\r\n type: 'submit',\r\n loading: this.loading\r\n }, \r\n app.translator.trans('michaelbelgium-discussion-views.forum.modal_resetviews.submit_button')\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n title()\r\n {\r\n return app.translator.trans('michaelbelgium-discussion-views.forum.modal_resetviews.title');\r\n }\r\n\r\n className()\r\n {\r\n return 'Modal--small';\r\n }\r\n\r\n onsubmit(e)\r\n {\r\n e.preventDefault();\r\n this.loading = true;\r\n\r\n this.attrs.discussion\r\n .save({ resetViews: true })\r\n .catch(() => {\r\n this.loaded();\r\n });\r\n\r\n this.hide();\r\n }\r\n}\r\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/punctuateSeries'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import Modal from 'flarum/common/components/Modal';\r\nimport Link from 'flarum/components/Link';\r\nimport username from 'flarum/helpers/username';\r\nimport avatar from 'flarum/helpers/avatar';\r\n\r\nexport default class PostDiscussionViewsModal extends Modal {\r\n className() {\r\n return 'Modal--small';\r\n }\r\n\r\n title() {\r\n return app.translator.trans('michaelbelgium-discussion-views.forum.post.modal_title_text');\r\n }\r\n\r\n content() {\r\n const views = this.attrs.post.discussion().uniqueViews();\r\n\r\n const names = views.map(view => {\r\n const user = view.user();\r\n\r\n return (<li>\r\n <Link href={app.route.user(user)}>\r\n {avatar(user)} {' '}\r\n {username(user)}\r\n </Link>\r\n </li>)\r\n });\r\n\r\n return (\r\n <div className=\"Modal-body\">\r\n <ul className=\"PostLikesModal-list\">\r\n {names}\r\n </ul>\r\n </div>\r\n );\r\n }\r\n}\r\n","import app from 'flarum/app';\r\nimport AddPopularSort from './components/AddPopularSort';\r\nimport AddViewsToModelAndDisplay from './components/AddViewsToModelAndDisplay';\r\nimport AddModerationControl from './components/AddModerationControl';\r\nimport AddLists from './components/AddLists';\r\n\r\napp.initializers.add('michaelbelgium-discussion-views', function () {\r\n AddPopularSort();\r\n AddViewsToModelAndDisplay();\r\n AddModerationControl();\r\n AddLists();\r\n});\r\n","import { extend } from 'flarum/extend';\r\nimport DiscussionListState from 'flarum/states/DiscussionListState'\r\n\r\nexport default function () {\r\n extend(DiscussionListState.prototype, 'sortMap', function (map) {\r\n if(app.forum.attribute('toggleFilter') == 1) {\r\n map.popular = '-view_count';\r\n map.unpopular = 'view_count';\r\n }\r\n });\r\n}\r\n","import { extend } from 'flarum/extend';\r\nimport Model from 'flarum/Model';\r\nimport Discussion from 'flarum/models/Discussion';\r\nimport DiscussionListItem from 'flarum/components/DiscussionListItem';\r\nimport DiscussionList from 'flarum/components/DiscussionList';\r\nimport abbreviateNumber from 'flarum/utils/abbreviateNumber';\r\nimport DiscussionView from '../models/DiscussionView';\r\nimport app from 'flarum/app';\r\n\r\nexport default function () {\r\n app.store.models.discussionviews = DiscussionView; //discussionviews = serializer type\r\n\r\n Discussion.prototype.views = Model.hasMany('latestViews');\r\n Discussion.prototype.uniqueViews = Model.hasMany('uniqueViews');\r\n Discussion.prototype.canReset = Model.attribute('canReset');\r\n Discussion.prototype.canViewNumber = Model.attribute('canViewNumber');\r\n Discussion.prototype.viewCount = Model.attribute('viewCount');\r\n\r\n extend(DiscussionListItem.prototype, 'infoItems', function(items) {\r\n if(this.attrs.discussion.canViewNumber()) {\r\n const views = this.attrs.discussion.viewCount();\r\n\r\n var number = app.forum.attribute('abbrNumber') == 1 ? abbreviateNumber(views) : views;\r\n items.add('discussion-views', <span>{number}</span>); \r\n }\r\n });\r\n\r\n extend(DiscussionList.prototype, 'requestParams', function(params) {\r\n params.include.push('latestViews'); //fixes not loading relationship when navigating back to the discussion list if you directly went to a discussion or another page\r\n })\r\n}\r\n","import { extend } from 'flarum/extend';\r\nimport Button from 'flarum/components/Button';\r\nimport DiscussionControls from 'flarum/utils/DiscussionControls';\r\nimport ResetDiscussionViewsModal from './ResetDiscussionViewsModal';\r\n\r\nexport default function () {\r\n extend(DiscussionControls, 'moderationControls', function(items, discussion) {\r\n if(discussion.canReset() && discussion.viewCount() > 0)\r\n {\r\n items.add(\r\n 'reset',\r\n <Button icon='far fa-eye-slash' onclick={() => app.modal.show(ResetDiscussionViewsModal, { discussion })}>\r\n {app.translator.trans('michaelbelgium-discussion-views.forum.discussion_controls.resetviews_button')}\r\n </Button>\r\n );\r\n }\r\n });\r\n}\r\n","import { extend } from 'flarum/extend';\r\nimport username from 'flarum/helpers/username';\r\nimport icon from 'flarum/helpers/icon';\r\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\r\nimport avatar from 'flarum/helpers/avatar';\r\nimport ItemList from 'flarum/utils/ItemList';\r\nimport humanTime from 'flarum/utils/humanTime';\r\nimport CommentPost from 'flarum/components/CommentPost';\r\nimport Link from 'flarum/components/Link';\r\nimport DiscussionPage from 'flarum/components/DiscussionPage';\r\nimport FieldSet from 'flarum/components/FieldSet';\r\nimport PostDiscussionViewsModal from '../components/PostDiscussionViewsModal';\r\n\r\nexport default function () {\r\n extend(DiscussionPage.prototype, 'sidebarItems', function(items) {\r\n if(app.forum.attribute('showViewList') == 0) return;\r\n \r\n const views = this.discussion.views();\r\n const viewList = new ItemList();\r\n\r\n $.each(views, function(key, view) {\r\n var userName = view.user() === false ? app.translator.trans('michaelbelgium-discussion-views.forum.viewlist.guest') : view.user().username();\r\n\r\n var listitem = \r\n <div className=\"item-lastUser-content\">\r\n {avatar(view.user())}\r\n <div>\r\n {userName}\r\n <span className=\"lastUser-visited\" title={view.visitedAt().toLocaleString()}>{humanTime(view.visitedAt())}</span>\r\n </div>\r\n </div>;\r\n\r\n if(view.user() !== false) {\r\n listitem = <Link href={app.route.user(view.user())}>{listitem}</Link>;\r\n }\r\n\r\n viewList.add('lastUser-' + key, listitem);\r\n });\r\n\r\n items.add(\r\n 'lastDiscussionViewers', \r\n <FieldSet className='LastDiscussionUsers' label={app.translator.trans('michaelbelgium-discussion-views.forum.viewlist.title')}>\r\n {viewList.toArray()}\r\n </FieldSet>\r\n );\r\n });\r\n\r\n extend(CommentPost.prototype, 'footerItems', function(items) {\r\n if(app.forum.attribute('showFooterViewList') == 0) return;\r\n \r\n const post = this.attrs.post;\r\n const discussion = post.discussion();\r\n const views = discussion.uniqueViews();\r\n const firstPost = discussion.posts()[0];\r\n\r\n console.log(firstPost);\r\n\r\n if(firstPost === undefined) return; //if first post isn't loaded\r\n\r\n if(firstPost.id() === post.id()) {\r\n if(views && views.length > 0) {\r\n const limit = 5;\r\n\r\n const names = views.slice(0, limit).map(view => {\r\n return (\r\n <Link href={app.route.user(view.user())}>\r\n {view.user() === app.session.user ? app.translator.trans('michaelbelgium-discussion-views.forum.post.you') : username(view.user())}\r\n </Link>\r\n )\r\n });\r\n\r\n if(views.length > limit)\r\n {\r\n const count = views.length - limit;\r\n\r\n names.push(\r\n <Link href=\"#\" onclick={e => {\r\n e.preventDefault();\r\n app.modal.show(PostDiscussionViewsModal, {post});\r\n }}>\r\n {app.translator.trans('michaelbelgium-discussion-views.forum.post.others_link', {count})}\r\n </Link>\r\n );\r\n }\r\n\r\n if(names.length > 0) {\r\n items.add('viewed', (\r\n <div className=\"Post-Discussion-viewedBy\">\r\n {icon('fas fa-eye')}\r\n {app.translator.trans('michaelbelgium-discussion-views.forum.post.viewed_by', {\r\n users: punctuateSeries(names)\r\n })}\r\n </div>\r\n ));\r\n }\r\n } \r\n }\r\n });\r\n}","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/TextEditor'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/LogInModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/PostStream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ComposerPostPreview'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/BasicEditorDriver'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/styleSelectedText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","import Component from \"flarum/common/Component\";\nimport icon from \"flarum/common/helpers/icon\";\nimport Tooltip from \"flarum/common/components/Tooltip\";\n\nexport default class MarkdownButton extends Component {\n oncreate(vnode) {\n super.oncreate(vnode);\n }\n\n view() {\n const button = (\n <button\n className=\"Button Button--icon Button--link\"\n type=\"button\"\n data-hotkey={this.attrs.hotkey}\n onkeydown={this.keydown.bind(this)}\n onclick={this.attrs.onclick}\n >\n {icon(this.attrs.icon)}\n </button>\n );\n\n if (this.attrs.title) {\n return <Tooltip text={this.attrs.title}>{button}</Tooltip>;\n }\n\n return button;\n }\n\n keydown(event) {\n if (event.key === \" \" || event.key === \"Enter\") {\n event.preventDefault();\n this.element.click();\n }\n }\n}\n","/*\n * This file is part of MathRen.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { extend } from \"flarum/common/extend\";\nimport app from \"flarum/common/app\";\n\nimport Button from \"flarum/common/components/Button\";\nimport Component from \"flarum/common/Component\";\nimport Dropdown from \"flarum/common/components/Dropdown\";\n//import Separator from \"flarum/common/components/Separator\";\nimport ItemList from \"flarum/common/utils/ItemList\";\nimport icon from \"flarum/common/helpers/icon\";\n\nimport CommentPost from \"flarum/forum/components/CommentPost\";\nimport DiscussionPage from \"flarum/forum/components/DiscussionPage\";\nimport DiscussionControls from \"flarum/forum/utils/DiscussionControls\";\nimport LogInModal from \"flarum/forum/components/LogInModal\";\n\nimport PostStream from \"flarum/forum/components/PostStream\";\n//import Separator from \"flarum/components/Separator\";\n\nimport ComposerPostPreview from \"flarum/forum/components/ComposerPostPreview\";\n\n///////////////////\nimport BasicEditorDriver from 'flarum/common/utils/BasicEditorDriver';\n\nimport styleSelectedText from \"flarum/common/utils/styleSelectedText\";\n\nimport MarkdownButton from \"./MarkdownButton\";\n\n///////////////////\n\nexport default class TextEditorButton extends Component {\n view() {\n return Dropdown.component(\n {\n className: \"More-bbcode-buttonsDropdown\",\n buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-th-large\"),\n },\n this.markdownToolbarItems().toArray()\n );\n }\n /**\n * Build an item list for the contents of the dropdown menu.\n * \n */\n markdownToolbarItems(oldFunc) {\n \n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n header: { prefix: '### ' },\n bold: { prefix: '**', suffix: '**', trimFirst: true },\n italic: { prefix: '_', suffix: '_', trimFirst: true },\n strikethrough: { prefix: '~~', suffix: '~~', trimFirst: true },\n quote: { prefix: '> ', multiline: true, surroundWithNewlines: true },\n code: { prefix: '`', suffix: '`', blockPrefix: '```', blockSuffix: '```' },\n link: { prefix: '[', suffix: '](https://)', replaceNext: 'https://', scanFor: 'https?://' },\n image: { prefix: '', replaceNext: 'https://', scanFor: 'https?://' },\n unordered_list: { prefix: '- ', multiline: true, surroundWithNewlines: true },\n ordered_list: { prefix: '1. ', multiline: true, orderedList: true },\n spoiler: { prefix: '>!', suffix: '!<', blockPrefix: '>! ', multiline: true, trimFirst: true },\n\n left: { prefix: '[left] ', suffix: ' [/left]', trimFirst: true },\n center: { prefix: '[center] ', suffix: ' [/center]', trimFirst: true },\n right: { prefix: '[right] ', suffix: ' [/right]', trimFirst: true },\n justify: { prefix: '[justify] ', suffix: ' [/justify]', trimFirst: true },\n dropcap: { prefix: '[dropcap] ', suffix: ' [/dropcap]', trimFirst: true },\n ileft: { prefix: '[Ileft] ', suffix: ' [/Iileft]', trimFirst: true },\n iright: { prefix: '[Iright] ', suffix: ' [/Iright]', trimFirst: true },\n pleft: { prefix: '[pleft] ', suffix: ' [/pleft]', trimFirst: true },\n pright: { prefix: '[pright] ', suffix: ' [/pright]', trimFirst: true },\n details: { prefix: '[details=\"TITLE\"] CONTENT ', suffix: '[/details]', blockPrefix: '[/details]', trimFirst: true },\n like: { prefix: '[like] ', suffix: ' [/like]', trimFirst: true },\n reply: { prefix: '[reply] ', suffix: ' [/reply]', trimFirst: true },\n login: { prefix: '[login] ', suffix: ' [/login]', trimFirst: true },\n cloud: { prefix: '[cloud type=\"other\" title=\"title\" url=\"link\"] Insert Password or Remove Text \"Password\" ', suffix: '[/cloud]', trimFirst: true },\n down: { prefix: '[down link=\"URL\" size=\"2KB\" name=\"file.zip\"]', trimFirst: true },\n audio: { prefix: '[audio mp3=\"URL\"]', trimFirst: true },\n clip: { prefix: '[clip mp4=\"URL\"]', trimFirst: true },\n table: { prefix: '\\n| Column 1 | Column 2 | Column 3 | Column 4 |\\n|---|---|---|---|\\n| row 1 | row 2 | row 3 | row 4 |\\n', trimFirst: true },\n word: { prefix: '[gdoc] ', suffix: ' [/gdoc]', trimFirst: true },\n size: { prefix: '[size=16] ', suffix: ' [/size]', trimFirst: true },\n color: { prefix: '[color=red] ', suffix: ' [/color]', trimFirst: true },\n tab: { prefix: '\\n[tabs]\\n[tab=\"hi\"]Hi[/tab]\\n[tab=\"hello\"]Hello[/tab]\\n[/tabs]\\n', trimFirst: true },\n iframe: { prefix: '<iframe style=\"border:none;\" width=\"100%\" height=\"370px\" class=\"iframe_src\" title=\"Iframe Example\" src=\"Iframe URL\">', suffix: '</iframe>', replaceNext: 'https://', scanFor: 'https?://', trimFirst: true },\n bar: { prefix: '[pbar]Title,ProgressText,BorderColor,ProgressColor,LittleColor,BorderSize,Progress%,BorderRadius,BottomMargin', suffix: ' [/pbar]', trimFirst: true },\n };\n\n extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n items.add('left', makeShortcut('left', 'l', this));\n items.add('center', makeShortcut('center', 'g', this));\n items.add('right', makeShortcut('right', 'r', this));\n items.add('justify', makeShortcut('justify', 'j', this));\n\n items.add('strikethrough', makeShortcut('strikethrough', 'n', this));\n items.add('quote', makeShortcut('quote', 'q', this));\n items.add('spoiler', makeShortcut('spoiler', 's', this));\n items.add('code', makeShortcut('code', 'm', this));\n items.add('link', makeShortcut('link', 'd', this));\n items.add('image', makeShortcut('image', 'h', this));\n items.add('unordered_list', makeShortcut('unordered_list', 'u', this));\n items.add('ordered_list', makeShortcut('ordered_list', 'o', this));\n });\n \n\n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n const items = typeof oldFunc === 'function' ? oldFunc() : new ItemList();\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n //items.add('header', <MarkdownButton title={tooltip('lib.header_tooltip')} icon=\"fas fa-heading\" onclick={makeApplyStyle('header')} />, 20000);\n \n \n items.add(\n \"heading\",\n /*Button.component(\n {\n className: \"More-BBcode-Dropdown\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-th-large\"),\n }\n //this.menu2().toArray()\n ),\n 0*/\n Dropdown.component(\n {\n className: \"More-BBcode-Dropdown item-heading\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-paragraph\"),\n },\n this.heading().toArray()\n ),\n 20000\n );\n items.add('bold', <MarkdownButton title={tooltip('lib.bold_tooltip', 'b')} icon=\"fas fa-bold\" onclick={makeApplyStyle('bold')} />, 19000);\n items.add('italic', <MarkdownButton title={tooltip('lib.italic_tooltip', 'i')} icon=\"fas fa-italic\" onclick={makeApplyStyle('italic')} />, 18000);\n items.add(\n 'strikethrough',\n <MarkdownButton title={tooltip('lib.strikethrough_tooltip', 'n')} icon=\"fas fa-strikethrough\" onclick={makeApplyStyle('strikethrough')} />,\n 17000\n );\n items.add('quote', <MarkdownButton title={tooltip('lib.quote_tooltip', 'q')} icon=\"fas fa-quote-left\" onclick={makeApplyStyle('quote')} />, 16000);\n items.add('spoiler', <MarkdownButton title={tooltip('lib.spoiler_tooltip', 's')} icon=\"fas fa-exclamation-triangle\" onclick={makeApplyStyle('spoiler')} />, 15000);\n items.add('code', <MarkdownButton title={tooltip('lib.code_tooltip', 'm')} icon=\"fas fa-code\" onclick={makeApplyStyle('code')} />, 14000);\n items.add('link', <MarkdownButton title={tooltip('lib.link_tooltip', 'd')} icon=\"fas fa-link\" onclick={makeApplyStyle('link')} />, 13000);\n items.add('image', <MarkdownButton title={tooltip('lib.image_tooltip', 'h')} icon=\"fas fa-image\" onclick={makeApplyStyle('image')} />, 12000);\n items.add(\n \"image_add\",\n Dropdown.component(\n {\n className: \"More-BBcode-Dropdown item-img\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-image\"),\n },\n this.image_add().toArray()\n ),\n 11500\n ); \n items.add(\n 'unordered_list',\n <MarkdownButton title={tooltip('lib.unordered_list_tooltip', 'u')} icon=\"fas fa-list-ul\" onclick={makeApplyStyle('unordered_list')} />,\n 11000\n );\n items.add('ordered_list', <MarkdownButton title={tooltip('lib.ordered_list_tooltip', 'o')} icon=\"fas fa-list-ol\" onclick={makeApplyStyle('ordered_list')} />, 10000);\n\n items.add(\n \"text_add\",\n Dropdown.component(\n {\n className: \"More-BBcode-Dropdown item-text\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-info-circle\"),\n },\n this.text_add().toArray()\n ),\n 9600\n ); \n items.add('left', <MarkdownButton title={tooltip('button_tooltip_left', 'l')} icon=\"fas fa-align-left\" onclick={makeApplyStyle('left')} />, 9500);\n items.add('center', <MarkdownButton title={tooltip('button_tooltip_center', 'g')} icon=\"fas fa-align-center\" onclick={makeApplyStyle('center')} />, 9000);\n items.add('right', <MarkdownButton title={tooltip('button_tooltip_right', 'r')} icon=\"fas fa-align-right\" onclick={makeApplyStyle('right')} />, 8500);\n items.add('justify', <MarkdownButton title={tooltip('button_tooltip_justify', 'j')} icon=\"fas fa-align-justify\" onclick={makeApplyStyle('justify')} />, 8000);\n //items.add('dropcap', <MarkdownButton title={tooltip('button_tooltip_dropcap')} icon=\"fas fa-list-alt\" onclick={makeApplyStyle('dropcap')} />, 7500);\n //items.add('ileft', <MarkdownButton title={tooltip('button_tooltip_img_left')} icon=\"fas fa-fast-backward\" onclick={makeApplyStyle('ileft')} />, 7000);\n //items.add('iright', <MarkdownButton title={tooltip('button_tooltip_img_right')} icon=\"fas fa-fast-forward\" onclick={makeApplyStyle('iright')} />, 6500);\n items.add('pleft', <MarkdownButton title={tooltip('button_tooltip_p_left')} icon=\"fas fa-outdent\" onclick={makeApplyStyle('pleft')} />, 6000);\n items.add('pright', <MarkdownButton title={tooltip('button_tooltip_p_right')} icon=\"fas fa-indent\" onclick={makeApplyStyle('pright')} />, 5500);\n items.add('details', <MarkdownButton title={tooltip('button_tooltip_details')} icon=\"fas fa-eye-slash\" onclick={makeApplyStyle('details')} />, 5000);\n items.add('like', <MarkdownButton title={tooltip('button_tooltip_like')} icon=\"fas fa-thumbs-up\" onclick={makeApplyStyle('like')} />, 4500);\n items.add('reply', <MarkdownButton title={tooltip('button_tooltip_reply')} icon=\"fas fa-reply-all\" onclick={makeApplyStyle('reply')} />, 4000);\n items.add('login', <MarkdownButton title={tooltip('button_tooltip_login')} icon=\"fas fa-sign-in-alt\" onclick={makeApplyStyle('login')} />, 3500);\n items.add('cloud', <MarkdownButton title={tooltip('button_tooltip_cloud')} icon=\"fas fa-cloud\" onclick={makeApplyStyle('cloud')} />, 3000);\n items.add('down', <MarkdownButton title={tooltip('button_tooltip_down')} icon=\"fas fa-download\" onclick={makeApplyStyle('down')} />, 2500);\n items.add('audio', <MarkdownButton title={tooltip('button_tooltip_audio')} icon=\"fas fa-file-audio\" onclick={makeApplyStyle('audio')} />, 2000);\n items.add('clip', <MarkdownButton title={tooltip('button_tooltip_clip')} icon=\"fas fa-file-video\" onclick={makeApplyStyle('clip')} />, 1500);\n items.add('table', <MarkdownButton title={tooltip('button_tooltip_table')} icon=\"fas fa-table\" onclick={makeApplyStyle('table')} />, 1000);\n items.add('word', <MarkdownButton title={tooltip('button_tooltip_word')} icon=\"fas fa-file-word\" onclick={makeApplyStyle('word')} />, 950);\n //items.add('size', <MarkdownButton title={tooltip('button_tooltip_size')} icon=\"fas fa-text-height\" onclick={makeApplyStyle('size')} />, 1000);\n //items.add('color', <MarkdownButton title={tooltip('button_tooltip_color')} icon=\"fas fa-palette\" onclick={makeApplyStyle('color')} />, 1000);\n //items.add('bar', <MarkdownButton title={tooltip('button_tooltip_bar')} icon=\"fas fa-tasks\" onclick={makeApplyStyle('bar')} />, 800);\n \n items.add(\n \"color\",\n Dropdown.component(\n {\n className: \"More-BBcode-Dropdown item-color\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-palette\"),\n },\n this.color().toArray()\n ),\n 900\n ); \n items.add(\n \"size\",\n Dropdown.component(\n {\n className: \"More-BBcode-Dropdown item-size\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-text-height\"),\n },\n this.size().toArray()\n ),\n 850\n );\n items.add(\n \"alert\",\n Dropdown.component(\n {\n className: \"More-BBcode-Dropdown item-alert\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-bell\"),\n },\n this.alert().toArray()\n ),\n 800\n );\n items.add(\n \"bar\",\n Dropdown.component(\n {\n className: \"More-BBcode-Dropdown item-bar\",\n //buttonClassName: \"Button Button--flat\",\n label: icon(\"fas fa-server\"),\n },\n this.bar().toArray()\n ),\n 700\n );\n items.add('iframe', <MarkdownButton title={tooltip('button_tooltip_iframe')} icon=\"fas fa-compress\" onclick={makeApplyStyle('iframe')} />, 100);\n items.add('tab', <MarkdownButton title={tooltip('button_tooltip_tab')} icon=\"fas fa-tasks\" onclick={makeApplyStyle('tab')} />, 0);\n\n return items;\n }\n\n /**\n * Build an item list for the contents of the dropdown menu.\n *\n * @return {ItemList}\n */\n\n size(oldFunc) {\n const items = typeof oldFunc === \"function\" ? oldFunc() : new ItemList();\n\n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n size_18: { prefix: \"[size=18] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_20: { prefix: \"[size=20] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_22: { prefix: \"[size=22] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_24: { prefix: \"[size=24] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_26: { prefix: \"[size=26] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_28: { prefix: \"[size=28] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_30: { prefix: \"[size=30] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_32: { prefix: \"[size=32] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_34: { prefix: \"[size=34] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_36: { prefix: \"[size=36] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_38: { prefix: \"[size=38] Change text\", suffix: \" [/size]\", trimFirst: true },\n size_40: { prefix: \"[size=40] Change text\", suffix: \" [/size]\", trimFirst: true },\n };\n\n //extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n // items.add(\"h2\", makeShortcut(\"h2\", \"2\", this));\n // items.add(\"h3\", makeShortcut(\"h3\", \"3\", this));\n // items.add('h4', makeShortcut('h4', '4', this));\n //});\n\n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n items.add('size_18', <MarkdownButton title={tooltip('size_18')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_18')} />, 2000);\n items.add('size_20', <MarkdownButton title={tooltip('size_20')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_20')} />, 1900);\n items.add('size_22', <MarkdownButton title={tooltip('size_22')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_22')} />, 1800);\n items.add('size_24', <MarkdownButton title={tooltip('size_24')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_24')} />, 1700);\n items.add('size_26', <MarkdownButton title={tooltip('size_26')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_26')} />, 1600);\n items.add('size_28', <MarkdownButton title={tooltip('size_28')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_28')} />, 1500);\n items.add('size_30', <MarkdownButton title={tooltip('size_30')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_30')} />, 1400);\n items.add('size_32', <MarkdownButton title={tooltip('size_32')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_32')} />, 1300);\n items.add('size_34', <MarkdownButton title={tooltip('size_34')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_34')} />, 1200);\n items.add('size_36', <MarkdownButton title={tooltip('size_36')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_36')} />, 1100);\n items.add('size_38', <MarkdownButton title={tooltip('size_38')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_38')} />, 1000);\n items.add('size_40', <MarkdownButton title={tooltip('size_40')} icon=\"fas fa-font\" onclick={makeApplyStyle('size_40')} />, 900);\n \n return items;\n }\n\n color(oldFunc) {\n const items = typeof oldFunc === \"function\" ? oldFunc() : new ItemList();\n\n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n //colorT: { prefix: \"[colort] Change text\", suffix: \" [/colort]\", trimFirst: true },\n //colorG: { prefix: \"[colorg] Change text\", suffix: \" [/colorg]\", trimFirst: true },\n //colorB: { prefix: \"[colorb] Change text\", suffix: \" [/colorb]\", trimFirst: true },\n //colorP: { prefix: \"[colorp] Change text\", suffix: \" [/colorp]\", trimFirst: true },\n //colorY: { prefix: \"[colory] Change text\", suffix: \" [/colory]\", trimFirst: true },\n //colorO: { prefix: \"[coloro] Change text\", suffix: \" [/coloro]\", trimFirst: true },\n //colorR: { prefix: \"[colorr] Change text\", suffix: \" [/colorr]\", trimFirst: true },\n //colorS: { prefix: \"[colors] Change text\", suffix: \" [/colors]\", trimFirst: true },\n \n color_grey: { prefix: \"[color=grey] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_green: { prefix: \"[color=green] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_blue: { prefix: \"[color=blue] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_purple: { prefix: \"[color=purple] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_yellow: { prefix: \"[color=yellow] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_orange: { prefix: \"[color=orange] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_red: { prefix: \"[color=red] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_silver: { prefix: \"[color=silver] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_pink: { prefix: \"[color=pink] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_brown : { prefix: \"[color=brown] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_white : { prefix: \"[color=white] Change text\", suffix: \" [/color]\", trimFirst: true },\n color_black : { prefix: \"[color=black] Change text\", suffix: \" [/color]\", trimFirst: true },\n };\n\n //extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n // items.add(\"h2\", makeShortcut(\"h2\", \"2\", this));\n // items.add(\"h3\", makeShortcut(\"h3\", \"3\", this));\n // items.add('h4', makeShortcut('h4', '4', this));\n //});\n\n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n //items.add('colorT', <MarkdownButton title={tooltip('color_grey')} icon=\"fas fa-color-t\" onclick={makeApplyStyle('colorT')} />, 1000);\n //items.add('colorG', <MarkdownButton title={tooltip('color_green')} icon=\"fas fa-color-g\" onclick={makeApplyStyle('colorG')} />, 1000);\n //items.add('colorB', <MarkdownButton title={tooltip('color_blue')} icon=\"fas fa-color-b\" onclick={makeApplyStyle('colorB')} />, 1000);\n //items.add('colorP', <MarkdownButton title={tooltip('color_purple')} icon=\"fas fa-color-p\" onclick={makeApplyStyle('colorP')} />, 1000);\n //items.add('colorY', <MarkdownButton title={tooltip('color_yellow')} icon=\"fas fa-color-y\" onclick={makeApplyStyle('colorY')} />, 1000);\n //items.add('colorO', <MarkdownButton title={tooltip('color_ogran')} icon=\"fas fa-color-o\" onclick={makeApplyStyle('colorO')} />, 1000);\n //items.add('colorR', <MarkdownButton title={tooltip('color_red')} icon=\"fas fa-color-r\" onclick={makeApplyStyle('colorR')} />, 1000);\n //items.add('colorS', <MarkdownButton title={tooltip('color_silver')} icon=\"fas fa-color-s\" onclick={makeApplyStyle('colorS')} />, 1000);\n\n items.add('color_grey', <MarkdownButton title={tooltip('color_grey')} icon=\"fas fa-color-grey\" onclick={makeApplyStyle('color_grey')} />, 1000);\n items.add('color_green', <MarkdownButton title={tooltip('color_green')} icon=\"fas fa-color-green\" onclick={makeApplyStyle('color_green')} />, 1000);\n items.add('color_blue', <MarkdownButton title={tooltip('color_blue')} icon=\"fas fa-color-blue\" onclick={makeApplyStyle('color_blue')} />, 1000);\n items.add('color_purple', <MarkdownButton title={tooltip('color_purple')} icon=\"fas fa-color-purple\" onclick={makeApplyStyle('color_purple')} />, 1000);\n items.add('color_yellow', <MarkdownButton title={tooltip('color_yellow')} icon=\"fas fa-color-yellow\" onclick={makeApplyStyle('color_yellow')} />, 1000);\n items.add('color_orange', <MarkdownButton title={tooltip('color_orange')} icon=\"fas fa-color-orange\" onclick={makeApplyStyle('color_orange')} />, 1000);\n items.add('color_red', <MarkdownButton title={tooltip('color_red')} icon=\"fas fa-color-red\" onclick={makeApplyStyle('color_red')} />, 1000);\n items.add('color_silver', <MarkdownButton title={tooltip('color_silver')} icon=\"fas fa-color-silver\" onclick={makeApplyStyle('color_silver')} />, 1000);\n items.add('color_pink', <MarkdownButton title={tooltip('color_pink')} icon=\"fas fa-color-pink\" onclick={makeApplyStyle('color_pink')} />, 1000);\n items.add('color_brown', <MarkdownButton title={tooltip('color_brown')} icon=\"fas fa-color-brown\" onclick={makeApplyStyle('color_brown')} />, 1000);\n items.add('color_white ', <MarkdownButton title={tooltip('color_white')} icon=\"fas fa-color-white\" onclick={makeApplyStyle('color_white')} />, 1000);\n items.add('color_black', <MarkdownButton title={tooltip('color_black')} icon=\"fas fa-color-black\" onclick={makeApplyStyle('color_black')} />, 1000);\n\n return items;\n }\n heading(oldFunc) {\n const items = typeof oldFunc === \"function\" ? oldFunc() : new ItemList();\n\n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n h2: { prefix: '## ', suffix: ' ##', trimFirst: true },\n h3: { prefix: '### ', suffix: ' ###', trimFirst: true },\n h4: { prefix: '#### ', suffix: ' ####', trimFirst: true },\n h5: { prefix: '##### ', suffix: ' #####', trimFirst: true },\n h6: { prefix: '###### ', suffix: ' ######', trimFirst: true },\n };\n\n extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n items.add(\"h2\", makeShortcut(\"h2\", \"2\", this));\n items.add(\"h3\", makeShortcut(\"h3\", \"3\", this));\n items.add('h4', makeShortcut('h4', '4', this));\n });\n \n\n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n items.add('h2', <MarkdownButton title={tooltip('h2', '2')} icon=\"fas fa-h2\" onclick={makeApplyStyle('h2')} />, 500);\n items.add('h3', <MarkdownButton title={tooltip('h3', '3')} icon=\"fas fa-h3\" onclick={makeApplyStyle('h3')} />, 400);\n items.add('h4', <MarkdownButton title={tooltip('h4', '4')} icon=\"fas fa-h4\" onclick={makeApplyStyle('h4')} />, 300);\n items.add('h5', <MarkdownButton title={tooltip('h5', '5')} icon=\"fas fa-h5\" onclick={makeApplyStyle('h5')} />, 200);\n items.add('h6', <MarkdownButton title={tooltip('h6', '6')} icon=\"fas fa-h6\" onclick={makeApplyStyle('h6')} />, 100);\n /*items.add(\n \"h2\",\n Button.component(\n {\n icon: \"fas fa-align-right\",\n onclick: () => this.right(),\n },\n app.translator.trans(\"imeepo-more-bbcode.forum.button_tooltip_right\")\n ),\n 50\n );*/\n\n\n return items;\n }\n alert(oldFunc) {\n const items = typeof oldFunc === \"function\" ? oldFunc() : new ItemList();\n\n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n warning: { prefix: '[awarning] this is an awarning message.', suffix: ' [/awarning]', trimFirst: true },\n asuccess: { prefix: '[asuccess] this is an asuccess message.', suffix: ' [/asuccess]', trimFirst: true },\n ainfo: { prefix: '[ainfo] this is an ainfo message.', suffix: ' [/ainfo]', trimFirst: true },\n abasic: { prefix: '[abasic] this is an abasic message.', suffix: ' [/abasic]', trimFirst: true },\n acustom: { prefix: '[acustom]red,black,green,this is an acustom message.', suffix: ' [/acustom]', trimFirst: true },\n bcustom: { prefix: '[bcustom]title=this is a bcustom title font=red bg=black border=green', suffix: '[/bcustom]', trimFirst: true },\n \n bwarning: { prefix: '[bwarning] this is n bwarning message.', suffix: ' [/bwarning]', trimFirst: true },\n bsuccess: { prefix: '[bsuccess] this is an bsuccess message.', suffix: ' [/bsuccess]', trimFirst: true },\n berror: { prefix: '[berror] this is a berror message.', suffix: ' [/berror]', trimFirst: true },\n bnotice: { prefix: '[bnotice] this is an bnotice message.', suffix: ' [/bnotice]', trimFirst: true },\n\n cwarning: { prefix: '[cwarning]darkorange,white,darkorange,THIS IS A CWARNING TITLE,This is a CWARNING message.', suffix: ' [/cwarning]', trimFirst: true },\n cnotice: { prefix: '[cnotice]teal,white,teal,this is a cnotice title,this is a cnotice message.', suffix: ' [/cnotice]', trimFirst: true },\n cerror: { prefix: '[cerror]red,white,red,this is a cerror title,this is a cerror message.', suffix: ' [/cerror]', trimFirst: true },\n csuccess: { prefix: '[csuccess]green,white,green,this is a cerror title,this is a csuccess message.', suffix: ' [/csuccess]', trimFirst: true },\n\n dnotice: { prefix: '[dnotice title=\"this is a dnotice title\" font=\"teal\" bg=\"white\" border=\"teal\"] this is a dnotice message.', suffix: ' [/dnotice]', trimFirst: true },\n derror: { prefix: '[derror title=\"this is a derror title\" font=\"red\" bg=\"white\" border=\"red\"]this is a derror message.', suffix: ' [/derror]', trimFirst: true },\n dwarning: { prefix: '[dwarning title=\"this is a dwarning title\" font=\"darkorange\" bg=\"white\" border=\"darkorange\"]this is a dwarning message.', suffix: ' [/dwarning]', trimFirst: true },\n dsuccess: { prefix: '[dsuccess title=\"this is a dsuccess title\" font=\"green\" bg=\"white\" border=\"green\"]this is a dsuccess message.', suffix: ' [/dsuccess]', trimFirst: true },\n };\n\n //extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n //items.add(\"h2\", makeShortcut(\"h2\", \"2\", this));\n //items.add(\"h3\", makeShortcut(\"h3\", \"3\", this));\n //items.add('h4', makeShortcut('h4', '4', this));\n //});\n\n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n items.add('warning', <MarkdownButton title={tooltip('button_tooltip_notification_warning')} icon=\"fas fa-warning\" onclick={makeApplyStyle('warning')} />, 2000);\n items.add('asuccess', <MarkdownButton title={tooltip('button_tooltip_notification_asuccess')} icon=\"fas fa-asuccess\" onclick={makeApplyStyle('asuccess')} />, 1900);\n items.add('ainfo', <MarkdownButton title={tooltip('button_tooltip_notification_asuccess')} icon=\"fas fa-ainfo\" onclick={makeApplyStyle('ainfo')} />, 1800);\n items.add('abasic', <MarkdownButton title={tooltip('button_tooltip_notification_abasic')} icon=\"fas fa-abasic\" onclick={makeApplyStyle('abasic')} />, 1700);\n items.add('acustom', <MarkdownButton title={tooltip('button_tooltip_notification_acustom')} icon=\"fas fa-acustom\" onclick={makeApplyStyle('acustom')} />, 1600);\n items.add('bcustom', <MarkdownButton title={tooltip('button_tooltip_notification_bcustom')} icon=\"fas fa-bcustom\" onclick={makeApplyStyle('bcustom')} />, 800);\n \n items.add('bwarning', <MarkdownButton title={tooltip('button_tooltip_notification_bwarning')} icon=\"fas fa-bwarning\" onclick={makeApplyStyle('bwarning')} />, 1500);\n items.add('bsuccess', <MarkdownButton title={tooltip('button_tooltip_notification_bsuccess')} icon=\"fas fa-bsuccess\" onclick={makeApplyStyle('bsuccess')} />, 1400);\n items.add('berror', <MarkdownButton title={tooltip('button_tooltip_notification_berror')} icon=\"fas fa-berror\" onclick={makeApplyStyle('berror')} />, 1300);\n items.add('bnotice', <MarkdownButton title={tooltip('button_tooltip_notification_bnotice')} icon=\"fas fa-bnotice\" onclick={makeApplyStyle('bnotice')} />, 1100);\n \n items.add('cwarning', <MarkdownButton title={tooltip('button_tooltip_notification_cwarning')} icon=\"fas fa-cwarning\" onclick={makeApplyStyle('cwarning')} />, 1200);\n items.add('cnotice', <MarkdownButton title={tooltip('button_tooltip_notification_cnotice')} icon=\"fas fa-cnotice\" onclick={makeApplyStyle('cnotice')} />, 1100);\n items.add('cerror', <MarkdownButton title={tooltip('button_tooltip_notification_cerror')} icon=\"fas fa-cerror\" onclick={makeApplyStyle('cerror')} />, 1000);\n items.add('csuccess', <MarkdownButton title={tooltip('button_tooltip_notification_csuccess')} icon=\"fas fa-csuccess\" onclick={makeApplyStyle('csuccess')} />, 900);\n \n items.add('dnotice', <MarkdownButton title={tooltip('button_tooltip_notification_dnotice')} icon=\"fas fa-dnotice\" onclick={makeApplyStyle('dnotice')} />, 700);\n items.add('derror', <MarkdownButton title={tooltip('button_tooltip_notification_derror')} icon=\"fas fa-derror\" onclick={makeApplyStyle('derror')} />, 600);\n items.add('dwarning', <MarkdownButton title={tooltip('button_tooltip_notification_dwarning')} icon=\"fas fa-dwarning\" onclick={makeApplyStyle('dwarning')} />, 500);\n items.add('dsuccess', <MarkdownButton title={tooltip('button_tooltip_notification_dsuccess')} icon=\"fas fa-dsuccess\" onclick={makeApplyStyle('dsuccess')} />, 400);\n\n return items;\n }\n bar(oldFunc) {\n const items = typeof oldFunc === \"function\" ? oldFunc() : new ItemList();\n\n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n black: { prefix: '[pbar]Back-end,40% Complete,black,black,gray,1,40,20,0', suffix: '[/pbar]', trimFirst: true },\n blue: { prefix: '[pbar]Front-end,30% Complete,black,blue,teal,1,30,10,80', suffix: '[/pbar]', trimFirst: true },\n red: { prefix: '[pbar]Total,70% Complete,black,red,pink,1,70,5,40', suffix: '[/pbar]', trimFirst: true },\n };\n\n //extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n //items.add(\"h2\", makeShortcut(\"h2\", \"2\", this));\n //items.add(\"h3\", makeShortcut(\"h3\", \"3\", this));\n //items.add('h4', makeShortcut('h4', '4', this));\n //});\n\n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n items.add('black', <MarkdownButton title={tooltip('button_tooltip_bar_black')} icon=\"fas fa-bar black\" onclick={makeApplyStyle('black')} />);\n items.add('blue', <MarkdownButton title={tooltip('button_tooltip_bar_blue')} icon=\"fas fa-bar blue\" onclick={makeApplyStyle('blue')} />);\n items.add('red', <MarkdownButton title={tooltip('button_tooltip_bar_red')} icon=\"fas fa-bar red\" onclick={makeApplyStyle('red')} />);\n \n return items;\n }\n image_add(oldFunc) {\n const items = typeof oldFunc === \"function\" ? oldFunc() : new ItemList();\n\n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n img: { prefix: '[IMG src=\"URL\" title=\"AddTitle\" alt=\"AddTitle\" height=\"auto\" width=\"auto\"]', trimFirst: true },\n img_left: { prefix: '[Ileft]\\n[IMG src=\"URL\" title=\"AddTitle\" alt=\"AddTitle\" height=\"auto\" width=\"auto\"] Insert Text or Remove\\n[/Ileft]', trimFirst: true },\n img_center: { prefix: '[Icenter]\\n[IMG src=\"URL\" title=\"AddTitle\" alt=\"AddTitle\" height=\"auto\" width=\"auto\"] Insert Text or Remove\\n[/Icenter]', trimFirst: true },\n img_right: { prefix: '[Iright]\\n[IMG src=\"URL\" title=\"AddTitle\" alt=\"AddTitle\" height=\"auto\" width=\"auto\"] Insert Text or Remove\\n[/Iright]', trimFirst: true },\n };\n\n //extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n //items.add(\"img_left\", makeShortcut(\"img_left\", \"2\", this));\n //items.add(\"img_center\", makeShortcut(\"img_center\", \"3\", this));\n //items.add('img_right', makeShortcut('img_right', '4', this));\n //});\n \n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n items.add('img', <MarkdownButton title={tooltip('button_tooltip_img')} icon=\"fas fa-image yellow\" onclick={makeApplyStyle('img')} />);\n items.add('img_left', <MarkdownButton title={tooltip('button_tooltip_img_left')} icon=\"fas fa-align-left blue\" onclick={makeApplyStyle('img_left')} />);\n items.add('img_center', <MarkdownButton title={tooltip('button_tooltip_img_center')} icon=\"fas fa-align-center green\" onclick={makeApplyStyle('img_center')} />);\n items.add('img_right', <MarkdownButton title={tooltip('button_tooltip_img_right')} icon=\"fas fa-align-right red\" onclick={makeApplyStyle('img_right')} />);\n \n return items;\n }\n text_add(oldFunc) {\n const items = typeof oldFunc === \"function\" ? oldFunc() : new ItemList();\n\n const modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\n const styles = {\n ins: { prefix: '[ins] ', suffix: ' [/ins]', trimFirst: true },\n del: { prefix: '[del] ', suffix: ' [/del]', trimFirst: true },\n sup: { prefix: '[sup]', suffix: ' [/sup]', trimFirst: true },\n sub: { prefix: '[sub]', suffix: ' [/sub]', trimFirst: true },\n var: { prefix: '[var]', suffix: ' [/var]', trimFirst: true },\n acronym: { prefix: '[acronym title=\"TITLE\"] TEXT', suffix: ' [/acronym]', trimFirst: true },\n background: { prefix: '[background=\"silver\"] TEXT', suffix: ' [/background]', trimFirst: true },\n hr: { prefix: '[hr]', trimFirst: true },\n float_left: { prefix: '[float=left] ', suffix: ' [/float]', trimFirst: true },\n float_right: { prefix: '[float=right] ', suffix: ' [/float]', trimFirst: true },\n dropcap: { prefix: '[dropcap] ', suffix: ' [/dropcap]', trimFirst: true },\n\n };\n\n //extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n //items.add(\"img_left\", makeShortcut(\"img_left\", \"2\", this));\n //items.add(\"img_center\", makeShortcut(\"img_center\", \"3\", this));\n //items.add('img_right', makeShortcut('img_right', '4', this));\n //});\n \n const applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n };\n\n function makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n }\n\n function tooltip(name, hotkey) {\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n //return app.translator.trans(`imeepo-more-bbcode.forum.${name}`);\n return app.translator.trans(`imeepo-more-bbcode.forum.${name}`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.textEditor);\n };\n\n items.add('ins', <MarkdownButton title={tooltip('button_tooltip_ins')} icon=\"fas fa-underline brown\" onclick={makeApplyStyle('ins')} />);\n //items.add('del', <MarkdownButton title={tooltip('button_tooltip_del')} icon=\"fas fa-strikethrough blue\" onclick={makeApplyStyle('del')} />);\n items.add('sup', <MarkdownButton title={tooltip('button_tooltip_sup')} icon=\"fas fa-superscript green\" onclick={makeApplyStyle('sup')} />);\n items.add('sub', <MarkdownButton title={tooltip('button_tooltip_sub')} icon=\"fas fa-subscript orange\" onclick={makeApplyStyle('sub')} />);\n //items.add('var', <MarkdownButton title={tooltip('button_tooltip_var')} icon=\"fas fa-var grey\" onclick={makeApplyStyle('var')} />);\n items.add('acronym', <MarkdownButton title={tooltip('button_tooltip_acronym')} icon=\"fas fa-acronym purple\" onclick={makeApplyStyle('acronym')} />);\n items.add('background', <MarkdownButton title={tooltip('button_tooltip_background')} icon=\"fas fa-background white\" onclick={makeApplyStyle('background')} />);\n items.add('hr', <MarkdownButton title={tooltip('button_tooltip_hr')} icon=\"fas fa-minus pink\" onclick={makeApplyStyle('hr')} />);\n items.add('float_left', <MarkdownButton title={tooltip('button_tooltip_float_left')} icon=\"fas fa-arrow-left red\" onclick={makeApplyStyle('float_left')} />);\n items.add('float_right', <MarkdownButton title={tooltip('button_tooltip_float_right')} icon=\"fas fa-arrow-right red\" onclick={makeApplyStyle('float_right')} />);\n items.add('dropcap', <MarkdownButton title={tooltip('button_tooltip_dropcap')} icon=\"fas fa-list-alt\" onclick={makeApplyStyle('dropcap')} />);\n\n return items;\n }\n\n\n}\n\napp.initializers.add(\"litalino/more-bbcode\", () => {\n extend(CommentPost.prototype, \"content\", function () {\n if (app.session.user && app.current.matches(DiscussionPage)) {\n $(\".reply2see_reply\")\n .off(\"click\")\n .on(\"click\", () =>\n DiscussionControls.replyAction.call(\n app.current.get(\"discussion\"),\n true,\n false\n )\n );\n $(\".like2see_like\")\n .off(\"click\")\n .on(\"click\", () =>\n DiscussionControls.likesAction.call(\n app.current.get(\"discussion\"),\n true,\n false\n )\n );\n } else {\n $(\".reply2see_reply\")\n .off(\"click\")\n .on(\"click\", () => app.modal.show(LogInModal));\n $(\".login2see_login\")\n .off(\"click\")\n .on(\"click\", () => app.modal.show(LogInModal));\n $(\".like2see_like\")\n .off(\"click\")\n .on(\"click\", () => app.modal.show(LogInModal));\n }\n });\n\n // TODO: Find a better way to trigger this.\n //window.addEventListener('load', function() {\n //\tpopulateGDocs();\n //});\n\n extend(PostStream.prototype, \"oncreate\", function () {\n populateGDocs();\n });\n\n /*extend(TextEditor.prototype, \"toolbarItems\", function (items) {\n \n items.add(\n \"bbextend-google-doc\",\n <TextEditorButton\n onclick={() => {\n this.attrs.composer.editor.insertAtCursor(\"[gdoc][/gdoc]\");\n const range = this.attrs.composer.editor.getSelectionRange();\n this.attrs.composer.editor.moveCursorTo(range[1] - 8);\n }}\n icon=\"fas fa-file-word\"\n >\n {app.translator.trans(\"imeepo-more-bbcode.forum.button_tooltip_word\")}\n </TextEditorButton>\n );\n });*/\n\n //bbcode-tabs\n let id = 0;\n\n\n const createTabs = function () {\n const containers = this.$(\".tabs\");\n\n containers.each((i, container) => {\n const $container = $(container);\n\n if ($container.find('input[type=\"radio\"][name]').length) return;\n\n const $inputs = $container.find('> .tab > input[type=\"radio\"]');\n\n if (!$inputs.length) return;\n\n const $items = $container.find(\".tab\");\n const num = id++;\n\n $inputs.attr(\"name\", `tab-group-${num}`);\n\n if (!$inputs.is(\"[checked]\"))\n $inputs[0].setAttribute(\"checked\", \"checked\");\n\n $items.each((i, item) => {\n const $item = $(item);\n const id = `tab-${num}-${++i}`;\n\n $item.find('input[type=\"radio\"]').attr(\"id\", id);\n $item.find(\"label\").attr(\"for\", id);\n });\n });\n };\n\n extend(CommentPost.prototype, [\"oncreate\", \"onupdate\"], createTabs);\n extend(ComposerPostPreview.prototype, \"oncreate\", function () {\n extend(this.attrs, \"surround\", () => createTabs.call(this));\n });\n\n});\n\n// Extra style attributes that are added to each line.\n// There's a couple things that need manual tweaking.\nvar extraDocStyles = 'margin-bottom: 0;';\n\nfunction populateGDocs() {\n\tvar posts = document.getElementsByClassName('Post-body');\n\tif (posts.length == 0) { return; }\n\n\tfor (var i = 0; i < posts.length; i++) {\n\t\tvar post = posts[i];\n\t\tvar gdocs = post.getElementsByClassName('bbextend-gdoc');\n\t\tfor (var j = 0; j < gdocs.length; j++) {\n\t\t\tvar gdoc = gdocs[j];\n\t\t\tvar url = gdoc.getElementsByTagName('a')[0].getAttribute('href');\n\n\t\t\t// Remove the class from gdoc so we only try to process it once.\n\t\t\tgdoc.classList.remove('bbextend-gdoc');\n\n\t\t\tif (!url.startsWith('https://docs.google.com/document/d/')) {\n\t\t\t\tgdoc.innerHTML = '<i class=\"fas fa-triangle-exclamation\"></i> Invalid Google Doc URL';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tgdoc.innerHTML = '<i class=\"fas fa-ellipsis fa-fade\"></i> Loading Google Doc...';\n\n\t\t\t// remove anything after the last slash of the url.\n\t\t\turl = url.substring(0, url.lastIndexOf('/'));\n\n\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\txhr.open('GET', url + '/pub', true);\n\n\t\t\txhr.responseType = 'document';\n\n\t\t\txhr.onload = function() {\n\t\t\t\tif (this.status == 200) {\n\t\t\t\t\tvar doc = this.responseXML;\n\t\t\t\t\tvar html = doc.getElementsByTagName('body')[0].innerHTML;\n\n\t\t\t\t\tgdoc.innerHTML = html;\n\n\t\t\t\t\t// We get the part of the html we want and get rid of the rest.\n\t\t\t\t\t// Basiclly we just keep the style information and the actual document body.\n\t\t\t\t\tvar contents = gdoc.childNodes[1];\n\n\t\t\t\t\twhile (gdoc.firstChild) {\n\t\t\t\t\t\tgdoc.removeChild(gdoc.firstChild);\n\t\t\t\t\t}\n\n\t\t\t\t\tgdoc.appendChild(contents);\n\n\t\t\t\t\tvar style = gdoc.childNodes[0].childNodes[0].innerHTML;\n\t\t\t\t\tvar div = gdoc.childNodes[0].childNodes[1];\n\n\t\t\t\t\t// Pharse the <style> element from the google doc.\n\t\t\t\t\t// We're reformatting it into strings that can be put directly in the style tag of the elements.\n\t\t\t\t\tvar styles = {};\n\n\t\t\t\t\tstyle.split('}').forEach(function(e) {\n\t\t\t\t\t\tvar parts = e.split('{');\n\n\t\t\t\t\t\tvar element = parts[0];\n\t\t\t\t\t\tvar style = parts[1];\n\n\t\t\t\t\t\tif (!style) { return; }\n\n\t\t\t\t\t\tstyles[element] = style + \";\";\n\n\t\t\t\t\t\t//console.log(element, styles[element]);\n\t\t\t\t\t});\n\n\t\t\t\t\tgdoc.childNodes[0].removeChild(gdoc.childNodes[0].childNodes[0]);\n\n\t\t\t\t\tfunction applyStyle(element) {\n\t\t\t\t\t\tif (element.childNodes.length > 0) {\n\t\t\t\t\t\t\tfor (var i = 0; i < element.childNodes.length; i++) {\n\t\t\t\t\t\t\t\tapplyStyle(element.childNodes[i]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!element.className) { return; }\n\n\t\t\t\t\t\tvar classes = element.className.split(' ');\n\n\t\t\t\t\t\tvar styleString = '';\n\n\t\t\t\t\t\tclasses.forEach(function(e) {\n\t\t\t\t\t\t\tstyleString += styles['.' + e];\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\telement.setAttribute('style', styleString + extraDocStyles);\n\n\t\t\t\t\t\t// Just in case theres anything in Flarum that'll match the class name.\n\t\t\t\t\t\t// This is because we want to follow google doc's style exclusively.\n\t\t\t\t\t\telement.removeAttribute('class');\n\t\t\t\t\t}\n\n\t\t\t\t\tapplyStyle(div);\n\n\t\t\t\t\t// We need to manually override the max-width of the document to fill the post container.\n\t\t\t\t\tvar divStyle = div.getAttribute('style').split(';');\n\n\t\t\t\t\tdivStyle.forEach(function(e, i) {\n\t\t\t\t\t\tif (e.includes('max-width')) {\n\t\t\t\t\t\t\tdivStyle[i] = 'max-width: 100%';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t// Fallback to make sure the text is readable, sometimes it doesn't import with a color set.\n\t\t\t\t\tdiv.setAttribute('style', 'color: #000;' + divStyle.join(';'));\n\n\t\t\t\t\tvar link = document.createElement('a');\n\t\t\t\t\tlink.setAttribute('href', url);\n\t\t\t\t\tlink.setAttribute('target', '_blank');\n\t\t\t\t\tlink.innerHTML = '<i class=\"fas fa-file-word\"></i> View Google Doc';\n\n\t\t\t\t\tgdoc.appendChild(link);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.onerror = function() {\n\t\t\t\tgdoc.innerHTML = '<i class=\"fas fa-triangle-exclamation\"></i> Failed to load Google Doc';\n\t\t\t};\n\n\t\t\txhr.send();\n\t\t}\n\t}\n};","/*\n * This file is part of MathRen.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nimport app from 'flarum/common/app';\nimport addTextEditorButton from './addTextEditorButton';\n\napp.initializers.add(\n 'litalino-more-bbcode',\n () => {\n // Add text editor buttons.\n addTextEditorButton();\n \n },\n -500 // since we're overriding things...\n);\n","import { extend } from \"flarum/extend\";\nimport TextEditor from \"flarum/components/TextEditor\";\nimport TextEditorButton from \"./TextEditorButton\";\n\nexport default function addTextEditorButton() {\n extend(TextEditor.prototype, \"toolbarItems\", function (items) {\n items.add('litalino-more-bbcode', <TextEditorButton textEditor={this.attrs.composer.editor} />);\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","/*\n * This file is part of litalino/adblock.\n *\n * Copyright (c) 2023 Khatvongsong.\n * https://khatvongsong.vn\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n */\n\nimport { extend } from 'flarum/extend';\nimport app from 'flarum/app';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport Alert from \"flarum/common/components/Alert\";\n\napp.initializers.add('litalino/flarum-adblock', () => {\n\n extend(IndexPage.prototype, 'oninit', function () {\n\n var XF = window.XF || {};\n XF.samViewCountMethod = \"impression\";\n XF.samServerTime = Math.floor(Date.now() / 1000);\n XF.samItem = \".samItem\";\n XF.samCodeUnit = \".samCodeUnit\";\n XF.samBannerUnit = \".samBannerUnit\";\n\n document.addEventListener(\"DOMContentLoaded\", function() {\n\n /////////////////////\n const img = app.forum.attribute('baseUrl') + '/assets/extensions/litalino-adblock/banner.png';\n const url = app.forum.attribute('baseUrl');\n const alt = 'Ads';\n\n const adBlock_div = app.forum.attribute('litalino-adblock.adblock-div') ? app.forum.attribute('litalino-adblock.adblock-div') : '#content' ;\n const adBlock_url = app.forum.attribute('litalino-adblock.adblock-url') ? app.forum.attribute('litalino-adblock.adblock-url') : url ;\n const adBlock_img = app.forum.attribute('litalino-adblock.adblock-img') ? app.forum.attribute('litalino-adblock.adblock-img') : img ;\n const adBlock_alt = app.forum.attribute('litalino-adblock.adblock-alt') ? app.forum.attribute('litalino-adblock.adblock-alt') : alt ;\n\n //var my_div = document.getElementById(''+ adBlock_div +'');\n var my_div = document.querySelector(\"\" + adBlock_div + \"\");\n if (my_div) {\n\n var tag_div = document.createElement('div');\n tag_div.innerHTML = '<div class=\"samItem\"> <a href=\"'+ adBlock_url +'\" target=\"_blank\" rel=\"nofollow\"> <img src=\"'+ adBlock_img +'\" title=\"'+ adBlock_alt +'\" alt=\"'+ adBlock_alt +'\"> </a> </div>';\n tag_div.className = 'samBannerUnit samAlignCenter';\n //my_div.parentNode.insertBefore(tag_div, my_div);\n $( tag_div ).insertBefore( my_div );\n\n }\n\n /////////////////////\n var text_notice = 'notice';\n var text_supportUsTitle = 'Please support us';\n var text_supportUsMessage = 'Please support us by disabling AdBlocker on our website.';\n var text_url = '';\n var text_element = \"#content\";\n var text_method = \"alert\";\n const text_content = app.translator.trans('adblock.forum.adblock-notice-content');\n const text_content_sup = app.translator.trans('adblock.forum.adblock-notice-content-sup');\n const adBlock_notice_content_sup = app.forum.attribute('litalino-adblock.adblock-notice-content-sup') ? ' <sup><i>('+ app.forum.attribute('litalino-adblock.adblock-notice-content-sup') +')</i></sup>' : ' <sup><i>('+ text_content_sup +')</i></sup>';\n const adBlock_action = app.forum.attribute('litalino-adblock.adblock-action') ? app.forum.attribute('litalino-adblock.adblock-action') : text_notice ;\n const adBlock_supportUsTitle = app.forum.attribute('litalino-adblock.adblock-supportUsTitle') ? app.forum.attribute('litalino-adblock.adblock-supportUsTitle') : text_supportUsTitle ;\n const adBlock_supportUsMessage = app.forum.attribute('litalino-adblock.adblock-supportUsMessage') ? app.forum.attribute('litalino-adblock.adblock-supportUsMessage') :text_supportUsMessage ;\n const adBlock_supportRedirectUrl = app.forum.attribute('litalino-adblock.adblock-supportRedirectUrl') ? app.forum.attribute('litalino-adblock.adblock-supportRedirectUrl') : text_url ;\n const adBlock_notice_element = app.forum.attribute('litalino-adblock.adblock-notice-element') ? app.forum.attribute('litalino-adblock.adblock-notice-element') : text_element ;\n const adBlock_notice_method = app.forum.attribute('litalino-adblock.adblock-notice-method') ? app.forum.attribute('litalino-adblock.adblock-notice-method') : text_method ;\n const adBlock_notice_content = app.forum.attribute('litalino-adblock.adblock-notice-content') ? app.forum.attribute('litalino-adblock.adblock-notice-content') + adBlock_notice_content_sup : text_content + adBlock_notice_content_sup ;\n\n var adBlockAction = adBlock_action; //\"notice\";\n var supportUsTitle = adBlock_supportUsTitle; //\"Please support us\";\n var supportUsMessage = adBlock_supportUsMessage; //\"Please support us by disabling AdBlocker on our website.\";\n var supportRedirectUrl = adBlock_supportRedirectUrl; //\"\";\n var adBlockNotice = {\n element: adBlock_notice_element, //'#content',\n method: adBlock_notice_method, //'append',\n content: adBlock_notice_content, //\"Hi. Can you please help us?\\n\\nI know the ads sometimes are too annoying and you want to use Adblock. But please support us by adding KhatVongSong to the whitelist. It will help us keep KhatVongSong free to use.\\n\\nThanks for your help! <sup><i>(Press \u00d7 to turn off notifications and show content.)</i></sup>\",\n interval: 1440,\n views: 1\n };\n function hasContentHeight(ad) {\n if (ad.find('[data-xf-init=\"sam-lazy\"]').length) {\n return true;\n }\n var adminActions = ad.find('.samAdminActions');\n var ignoreContent = ad.find('.samIgnoreContent');\n var adsenseUnit = ad.find('ins.adsbygoogle');\n var googleTagUnit = ad.find('[id^=\"div-gpt-ad\"]');\n var ignoredHeight = 0;\n\n if (adminActions.length) {\n ignoredHeight += adminActions.height();\n }\n if (ignoreContent.length) {\n ignoredHeight += ignoreContent.height();\n }\n if (adsenseUnit.length) {\n if (adsenseUnit[0].attributes['data-adsbygoogle-status'] === undefined) {\n return false;\n } else if (adsenseUnit.is(':hidden')) {\n return true;\n }\n } else if (googleTagUnit.length) {\n if (googleTagUnit.css('min-height') == '1px') {\n return false;\n }\n }\n\n return (ad.height() - ignoredHeight) > 0;\n }\n function initDetection() {\n XF.samCoreLoaded = true;\n $('<div class=\"banner_728x90 ad-banner\" />').appendTo('body');\n var adUnits = $(XF.samCodeUnit + ' ' + XF.samItem + ':not(.samLazyLoading)' + ',' + XF.samBannerUnit + ' ' + XF.samItem + ':not(.samLazyLoading)');\n\n //if (adUnits.length && ($('.banner_728x90.ad-banner').is(':hidden') || XF.samCoreLoaded === undefined)) {\n if (adUnits.length && $('.banner_728x90.ad-banner').is(':hidden')) {\n if (adBlockAction == 'backup' || adBlockAction == 'message') {\n adUnits.each(function() {\n if (!hasContentHeight($(this)) && $(this).find('> a img[data-src]').length == 0) {\n if (adBlockAction == 'backup') {\n var backup = $(this).find('.samBackup');\n if (backup.length) {\n backup.find('img').each(function() {\n $(this).attr('src', $(this).data('src'));\n });\n backup.fadeIn();\n }\n } else {\n $('<div class=\"samSupportUs\" />').html(supportUsMessage).prependTo($(this));\n }\n }\n });\n } else {\n var adsBlocked = 0;\n adUnits.each(function() {\n if (!hasContentHeight($(this))) {\n adsBlocked += 1;\n };\n });\n\n var canDisplayNotice = true;\n var pageViewCount = 2;\n\n if (adBlockNotice.views && adBlockNotice.views > pageViewCount) {\n canDisplayNotice = false;\n }\n\n if (! adsBlocked && canDisplayNotice) {\n if (adBlockAction == 'notice') {\n //var dismissCookieTime = adBlockNotice.interval ? XF.Cookie.get('sam_notice_dismiss') : false;\n var dismissCookieTime = adBlockNotice.interval ? read_adblock_Cookie('adblock_sam_notice_dismiss') : false;\n if (dismissCookieTime && (Math.floor(Date.now() / 1000) - dismissCookieTime <= (adBlockNotice.interval * 60)))\n {\n return;\n }\n\n var content = supportUsMessage;\n if (adBlockNotice.content) {\n content = adBlockNotice.content;\n }\n\n var notice = $('<div id=\"samNotice\" />');\n notice.prepend('<a role=\"button\" id=\"samDismiss\">\u00d7</a>');\n notice.append('<span>' + content + '</span>');\n if (adBlockNotice.method == 'prepend') {\n notice.prependTo(adBlockNotice.element);\n\n } else if (adBlockNotice.method == 'append') {\n notice.appendTo(adBlockNotice.element);\n\n } else {\n const notice_text = notice[0].outerText;\n app.alerts.show(Alert, { type: 'error' }, notice_text);\n\n }\n notice.fadeIn('slow');\n //XF.activate(notice);\n $('body').addClass('samAdBlockDetected');\n\n } else {\n var pUrl = window.location.href;\n var rUrl = supportRedirectUrl;\n if (rUrl && pUrl.indexOf(rUrl) === -1) {\n window.location.href = rUrl;\n return;\n }\n var $overlay = XF.getOverlayHtml({\n title: supportUsTitle,\n dismissible: false,\n html: '<div class=\"blockMessage\">' + supportUsMessage + '</div>'\n });\n var overlay = new XF.Overlay($overlay, {\n backdropClose: false,\n keyboard: false,\n escapeClose: false,\n className: 'samSupportUsOverlay'\n });\n overlay.show();\n $('head').append('<style>::-webkit-scrollbar{display: none;}</style>');\n $('.samSupportUsOverlay').css('background-color', 'black').fadeTo('slow', 0.95);\n\n }\n }\n }\n }\n }\n \n $(document).on('click', '.samAdBlockDetected #alerts .Alert-controls', function() {\n //$(this).parent('#samNotice').fadeOut();\n $('body').removeClass('samAdBlockDetected');\n //XF.Cookie.set('sam_notice_dismiss', Math.floor(Date.now() / 1000));\n var value = Math.floor(Date.now() / 1000);\n //create_adblock_Cookie('adblock_sam_notice_dismiss', 'true', '30')\n create_adblock_Cookie('adblock_sam_notice_dismiss', value, null)\n\n });\n $(document).on('click', '#samDismiss', function() {\n $(this).parent('#samNotice').fadeOut();\n $('body').removeClass('samAdBlockDetected');\n //XF.Cookie.set('sam_notice_dismiss', Math.floor(Date.now() / 1000));\n var value = Math.floor(Date.now() / 1000);\n //create_adblock_Cookie('adblock_sam_notice_dismiss', 'true', '30')\n create_adblock_Cookie('adblock_sam_notice_dismiss', value, null)\n\n });\n $(document).on('samInitDetection', function() {\n initDetection();\n });\n\n $(document).trigger('samInitDetection');\n\n function create_adblock_Cookie(name, value, days) {\n if (days) {\n var date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n var expires = \"; expires=\" + date.toGMTString();\n } else {\n var expires = '';\n }\n //var expires = (expires != nul) ? \"; expires=\" + expires : \"\";\n var path = (path != null) ? \"; path=\" + path : \"\";\n //var domain = (domain != null) ? \"; domain=\" + domain : \"\";\n //var secure = (secure != null) ? \"; secure\" : \"\";\n var secure = \"; secure\";\n\n //document.cookie = name + \"=\" + escape(value) + expires + path + domain + secure;\n document.cookie = name + \"=\" + escape(value) + expires + path + secure;\n }\n\n function read_adblock_Cookie(name) {\n var nameEQ = name + \"=\";\n var ca = document.cookie.split(\";\");\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0)\n return c.substring(nameEQ.length, c.length);\n }\n return null;\n }\n\n });\n\n });\n});\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[M\u00f4re om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris R\u00f6ling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n '\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629',\n '\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u062b\u0627\u0646\u064a\u062a\u0627\u0646', '\u062b\u0627\u0646\u064a\u062a\u064a\u0646'],\n '%d \u062b\u0648\u0627\u0646',\n '%d \u062b\u0627\u0646\u064a\u0629',\n '%d \u062b\u0627\u0646\u064a\u0629',\n ],\n m: [\n '\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629',\n '\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u062f\u0642\u064a\u0642\u062a\u0627\u0646', '\u062f\u0642\u064a\u0642\u062a\u064a\u0646'],\n '%d \u062f\u0642\u0627\u0626\u0642',\n '%d \u062f\u0642\u064a\u0642\u0629',\n '%d \u062f\u0642\u064a\u0642\u0629',\n ],\n h: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629',\n '\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u0633\u0627\u0639\u062a\u0627\u0646', '\u0633\u0627\u0639\u062a\u064a\u0646'],\n '%d \u0633\u0627\u0639\u0627\u062a',\n '%d \u0633\u0627\u0639\u0629',\n '%d \u0633\u0627\u0639\u0629',\n ],\n d: [\n '\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645',\n '\u064a\u0648\u0645 \u0648\u0627\u062d\u062f',\n ['\u064a\u0648\u0645\u0627\u0646', '\u064a\u0648\u0645\u064a\u0646'],\n '%d \u0623\u064a\u0627\u0645',\n '%d \u064a\u0648\u0645\u064b\u0627',\n '%d \u064a\u0648\u0645',\n ],\n M: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631',\n '\u0634\u0647\u0631 \u0648\u0627\u062d\u062f',\n ['\u0634\u0647\u0631\u0627\u0646', '\u0634\u0647\u0631\u064a\u0646'],\n '%d \u0623\u0634\u0647\u0631',\n '%d \u0634\u0647\u0631\u0627',\n '%d \u0634\u0647\u0631',\n ],\n y: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645',\n '\u0639\u0627\u0645 \u0648\u0627\u062d\u062f',\n ['\u0639\u0627\u0645\u0627\u0646', '\u0639\u0627\u0645\u064a\u0646'],\n '%d \u0623\u0639\u0648\u0627\u0645',\n '%d \u0639\u0627\u0645\u064b\u0627',\n '%d \u0639\u0627\u0645',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n '\u062c\u0627\u0646\u0641\u064a',\n '\u0641\u064a\u0641\u0631\u064a',\n '\u0645\u0627\u0631\u0633',\n '\u0623\u0641\u0631\u064a\u0644',\n '\u0645\u0627\u064a',\n '\u062c\u0648\u0627\u0646',\n '\u062c\u0648\u064a\u0644\u064a\u0629',\n '\u0623\u0648\u062a',\n '\u0633\u0628\u062a\u0645\u0628\u0631',\n '\u0623\u0643\u062a\u0648\u0628\u0631',\n '\u0646\u0648\u0641\u0645\u0628\u0631',\n '\u062f\u064a\u0633\u0645\u0628\u0631',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: '\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a'.split('_'),\n weekdaysShort: '\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a'.split('_'),\n weekdaysMin: '\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0635|\u0645/,\n isPM: function (input) {\n return '\u0645' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0635';\n } else {\n return '\u0645';\n }\n },\n calendar: {\n sameDay: '[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextDay: '[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextWeek: 'dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastDay: '[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastWeek: 'dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0628\u0639\u062f %s',\n past: '\u0645\u0646\u0630 %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '\u060c');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: '\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631'.split(\n '_'\n ),\n monthsShort:\n '\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631'.split(\n '_'\n ),\n weekdays: '\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a'.split('_'),\n weekdaysShort: '\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a'.split('_'),\n weekdaysMin: '\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextDay: '[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastDay: '[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0641\u064a %s',\n past: '\u0645\u0646\u0630 %s',\n s: '\u062b\u0648\u0627\u0646',\n ss: '%d \u062b\u0627\u0646\u064a\u0629',\n m: '\u062f\u0642\u064a\u0642\u0629',\n mm: '%d \u062f\u0642\u0627\u0626\u0642',\n h: '\u0633\u0627\u0639\u0629',\n hh: '%d \u0633\u0627\u0639\u0627\u062a',\n d: '\u064a\u0648\u0645',\n dd: '%d \u0623\u064a\u0627\u0645',\n M: '\u0634\u0647\u0631',\n MM: '%d \u0623\u0634\u0647\u0631',\n y: '\u0633\u0646\u0629',\n yy: '%d \u0633\u0646\u0648\u0627\u062a',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n '\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629',\n '\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u062b\u0627\u0646\u064a\u062a\u0627\u0646', '\u062b\u0627\u0646\u064a\u062a\u064a\u0646'],\n '%d \u062b\u0648\u0627\u0646',\n '%d \u062b\u0627\u0646\u064a\u0629',\n '%d \u062b\u0627\u0646\u064a\u0629',\n ],\n m: [\n '\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629',\n '\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u062f\u0642\u064a\u0642\u062a\u0627\u0646', '\u062f\u0642\u064a\u0642\u062a\u064a\u0646'],\n '%d \u062f\u0642\u0627\u0626\u0642',\n '%d \u062f\u0642\u064a\u0642\u0629',\n '%d \u062f\u0642\u064a\u0642\u0629',\n ],\n h: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629',\n '\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u0633\u0627\u0639\u062a\u0627\u0646', '\u0633\u0627\u0639\u062a\u064a\u0646'],\n '%d \u0633\u0627\u0639\u0627\u062a',\n '%d \u0633\u0627\u0639\u0629',\n '%d \u0633\u0627\u0639\u0629',\n ],\n d: [\n '\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645',\n '\u064a\u0648\u0645 \u0648\u0627\u062d\u062f',\n ['\u064a\u0648\u0645\u0627\u0646', '\u064a\u0648\u0645\u064a\u0646'],\n '%d \u0623\u064a\u0627\u0645',\n '%d \u064a\u0648\u0645\u064b\u0627',\n '%d \u064a\u0648\u0645',\n ],\n M: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631',\n '\u0634\u0647\u0631 \u0648\u0627\u062d\u062f',\n ['\u0634\u0647\u0631\u0627\u0646', '\u0634\u0647\u0631\u064a\u0646'],\n '%d \u0623\u0634\u0647\u0631',\n '%d \u0634\u0647\u0631\u0627',\n '%d \u0634\u0647\u0631',\n ],\n y: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645',\n '\u0639\u0627\u0645 \u0648\u0627\u062d\u062f',\n ['\u0639\u0627\u0645\u0627\u0646', '\u0639\u0627\u0645\u064a\u0646'],\n '%d \u0623\u0639\u0648\u0627\u0645',\n '%d \u0639\u0627\u0645\u064b\u0627',\n '%d \u0639\u0627\u0645',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n '\u064a\u0646\u0627\u064a\u0631',\n '\u0641\u0628\u0631\u0627\u064a\u0631',\n '\u0645\u0627\u0631\u0633',\n '\u0623\u0628\u0631\u064a\u0644',\n '\u0645\u0627\u064a\u0648',\n '\u064a\u0648\u0646\u064a\u0648',\n '\u064a\u0648\u0644\u064a\u0648',\n '\u0623\u063a\u0633\u0637\u0633',\n '\u0633\u0628\u062a\u0645\u0628\u0631',\n '\u0623\u0643\u062a\u0648\u0628\u0631',\n '\u0646\u0648\u0641\u0645\u0628\u0631',\n '\u062f\u064a\u0633\u0645\u0628\u0631',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: '\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a'.split('_'),\n weekdaysShort: '\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a'.split('_'),\n weekdaysMin: '\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0635|\u0645/,\n isPM: function (input) {\n return '\u0645' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0635';\n } else {\n return '\u0645';\n }\n },\n calendar: {\n sameDay: '[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextDay: '[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextWeek: 'dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastDay: '[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastWeek: 'dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0628\u0639\u062f %s',\n past: '\u0645\u0646\u0630 %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '\u060c');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: '\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631'.split(\n '_'\n ),\n monthsShort:\n '\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631'.split(\n '_'\n ),\n weekdays: '\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a'.split('_'),\n weekdaysShort: '\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a'.split('_'),\n weekdaysMin: '\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextDay: '[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastDay: '[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0641\u064a %s',\n past: '\u0645\u0646\u0630 %s',\n s: '\u062b\u0648\u0627\u0646',\n ss: '%d \u062b\u0627\u0646\u064a\u0629',\n m: '\u062f\u0642\u064a\u0642\u0629',\n mm: '%d \u062f\u0642\u0627\u0626\u0642',\n h: '\u0633\u0627\u0639\u0629',\n hh: '%d \u0633\u0627\u0639\u0627\u062a',\n d: '\u064a\u0648\u0645',\n dd: '%d \u0623\u064a\u0627\u0645',\n M: '\u0634\u0647\u0631',\n MM: '%d \u0623\u0634\u0647\u0631',\n y: '\u0633\u0646\u0629',\n yy: '%d \u0633\u0646\u0648\u0627\u062a',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0661',\n 2: '\u0662',\n 3: '\u0663',\n 4: '\u0664',\n 5: '\u0665',\n 6: '\u0666',\n 7: '\u0667',\n 8: '\u0668',\n 9: '\u0669',\n 0: '\u0660',\n },\n numberMap = {\n '\u0661': '1',\n '\u0662': '2',\n '\u0663': '3',\n '\u0664': '4',\n '\u0665': '5',\n '\u0666': '6',\n '\u0667': '7',\n '\u0668': '8',\n '\u0669': '9',\n '\u0660': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: '\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631'.split(\n '_'\n ),\n monthsShort:\n '\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631'.split(\n '_'\n ),\n weekdays: '\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a'.split('_'),\n weekdaysShort: '\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a'.split('_'),\n weekdaysMin: '\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0635|\u0645/,\n isPM: function (input) {\n return '\u0645' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0635';\n } else {\n return '\u0645';\n }\n },\n calendar: {\n sameDay: '[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextDay: '[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastDay: '[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0641\u064a %s',\n past: '\u0645\u0646\u0630 %s',\n s: '\u062b\u0648\u0627\u0646',\n ss: '%d \u062b\u0627\u0646\u064a\u0629',\n m: '\u062f\u0642\u064a\u0642\u0629',\n mm: '%d \u062f\u0642\u0627\u0626\u0642',\n h: '\u0633\u0627\u0639\u0629',\n hh: '%d \u0633\u0627\u0639\u0627\u062a',\n d: '\u064a\u0648\u0645',\n dd: '%d \u0623\u064a\u0627\u0645',\n M: '\u0634\u0647\u0631',\n MM: '%d \u0623\u0634\u0647\u0631',\n y: '\u0633\u0646\u0629',\n yy: '%d \u0633\u0646\u0648\u0627\u062a',\n },\n preparse: function (string) {\n return string\n .replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g, function (match) {\n return numberMap[match];\n })\n .replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '\u060c');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: '\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631'.split(\n '_'\n ),\n monthsShort:\n '\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631'.split(\n '_'\n ),\n weekdays: '\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a'.split('_'),\n weekdaysShort: '\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a'.split('_'),\n weekdaysMin: '\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextDay: '[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastDay: '[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastWeek: 'dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0641\u064a %s',\n past: '\u0645\u0646\u0630 %s',\n s: '\u062b\u0648\u0627\u0646',\n ss: '%d \u062b\u0627\u0646\u064a\u0629',\n m: '\u062f\u0642\u064a\u0642\u0629',\n mm: '%d \u062f\u0642\u0627\u0626\u0642',\n h: '\u0633\u0627\u0639\u0629',\n hh: '%d \u0633\u0627\u0639\u0627\u062a',\n d: '\u064a\u0648\u0645',\n dd: '%d \u0623\u064a\u0627\u0645',\n M: '\u0634\u0647\u0631',\n MM: '%d \u0623\u0634\u0647\u0631',\n y: '\u0633\u0646\u0629',\n yy: '%d \u0633\u0646\u0648\u0627\u062a',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0661',\n 2: '\u0662',\n 3: '\u0663',\n 4: '\u0664',\n 5: '\u0665',\n 6: '\u0666',\n 7: '\u0667',\n 8: '\u0668',\n 9: '\u0669',\n 0: '\u0660',\n },\n numberMap = {\n '\u0661': '1',\n '\u0662': '2',\n '\u0663': '3',\n '\u0664': '4',\n '\u0665': '5',\n '\u0666': '6',\n '\u0667': '7',\n '\u0668': '8',\n '\u0669': '9',\n '\u0660': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n '\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629',\n '\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u062b\u0627\u0646\u064a\u062a\u0627\u0646', '\u062b\u0627\u0646\u064a\u062a\u064a\u0646'],\n '%d \u062b\u0648\u0627\u0646',\n '%d \u062b\u0627\u0646\u064a\u0629',\n '%d \u062b\u0627\u0646\u064a\u0629',\n ],\n m: [\n '\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629',\n '\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u062f\u0642\u064a\u0642\u062a\u0627\u0646', '\u062f\u0642\u064a\u0642\u062a\u064a\u0646'],\n '%d \u062f\u0642\u0627\u0626\u0642',\n '%d \u062f\u0642\u064a\u0642\u0629',\n '%d \u062f\u0642\u064a\u0642\u0629',\n ],\n h: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629',\n '\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629',\n ['\u0633\u0627\u0639\u062a\u0627\u0646', '\u0633\u0627\u0639\u062a\u064a\u0646'],\n '%d \u0633\u0627\u0639\u0627\u062a',\n '%d \u0633\u0627\u0639\u0629',\n '%d \u0633\u0627\u0639\u0629',\n ],\n d: [\n '\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645',\n '\u064a\u0648\u0645 \u0648\u0627\u062d\u062f',\n ['\u064a\u0648\u0645\u0627\u0646', '\u064a\u0648\u0645\u064a\u0646'],\n '%d \u0623\u064a\u0627\u0645',\n '%d \u064a\u0648\u0645\u064b\u0627',\n '%d \u064a\u0648\u0645',\n ],\n M: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631',\n '\u0634\u0647\u0631 \u0648\u0627\u062d\u062f',\n ['\u0634\u0647\u0631\u0627\u0646', '\u0634\u0647\u0631\u064a\u0646'],\n '%d \u0623\u0634\u0647\u0631',\n '%d \u0634\u0647\u0631\u0627',\n '%d \u0634\u0647\u0631',\n ],\n y: [\n '\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645',\n '\u0639\u0627\u0645 \u0648\u0627\u062d\u062f',\n ['\u0639\u0627\u0645\u0627\u0646', '\u0639\u0627\u0645\u064a\u0646'],\n '%d \u0623\u0639\u0648\u0627\u0645',\n '%d \u0639\u0627\u0645\u064b\u0627',\n '%d \u0639\u0627\u0645',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n '\u064a\u0646\u0627\u064a\u0631',\n '\u0641\u0628\u0631\u0627\u064a\u0631',\n '\u0645\u0627\u0631\u0633',\n '\u0623\u0628\u0631\u064a\u0644',\n '\u0645\u0627\u064a\u0648',\n '\u064a\u0648\u0646\u064a\u0648',\n '\u064a\u0648\u0644\u064a\u0648',\n '\u0623\u063a\u0633\u0637\u0633',\n '\u0633\u0628\u062a\u0645\u0628\u0631',\n '\u0623\u0643\u062a\u0648\u0628\u0631',\n '\u0646\u0648\u0641\u0645\u0628\u0631',\n '\u062f\u064a\u0633\u0645\u0628\u0631',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: '\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a'.split('_'),\n weekdaysShort: '\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a'.split('_'),\n weekdaysMin: '\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0635|\u0645/,\n isPM: function (input) {\n return '\u0645' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0635';\n } else {\n return '\u0645';\n }\n },\n calendar: {\n sameDay: '[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextDay: '[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n nextWeek: 'dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastDay: '[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n lastWeek: 'dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0628\u0639\u062f %s',\n past: '\u0645\u0646\u0630 %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g, function (match) {\n return numberMap[match];\n })\n .replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '\u060c');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-\u00fcnc\u00fc',\n 4: '-\u00fcnc\u00fc',\n 100: '-\u00fcnc\u00fc',\n 6: '-nc\u0131',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-\u0131nc\u0131',\n 90: '-\u0131nc\u0131',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ert\u0259si_\u00c7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\u00c7\u0259r\u015f\u0259nb\u0259_C\u00fcm\u0259 ax\u015fam\u0131_C\u00fcm\u0259_\u015e\u0259nb\u0259'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_\u00c7Ax_\u00c7\u0259r_CAx_C\u00fcm_\u015e\u0259n'.split('_'),\n weekdaysMin: 'Bz_BE_\u00c7A_\u00c7\u0259_CA_C\u00fc_\u015e\u0259'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bug\u00fcn saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT',\n lastDay: '[d\u00fcn\u0259n] LT',\n lastWeek: '[ke\u00e7\u0259n h\u0259ft\u0259] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s \u0259vv\u0259l',\n s: 'bir ne\u00e7\u0259 saniy\u0259',\n ss: '%d saniy\u0259',\n m: 'bir d\u0259qiq\u0259',\n mm: '%d d\u0259qiq\u0259',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir g\u00fcn',\n dd: '%d g\u00fcn',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gec\u0259|s\u0259h\u0259r|g\u00fcnd\u00fcz|ax\u015fam/,\n isPM: function (input) {\n return /^(g\u00fcnd\u00fcz|ax\u015fam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gec\u0259';\n } else if (hour < 12) {\n return 's\u0259h\u0259r';\n } else if (hour < 17) {\n return 'g\u00fcnd\u00fcz';\n } else {\n return 'ax\u015fam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0131nc\u0131|inci|nci|\u00fcnc\u00fc|nc\u0131|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-\u0131nc\u0131';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elens\u00fale : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? '\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434' : '\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434',\n mm: withoutSuffix ? '\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d' : '\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d',\n hh: withoutSuffix ? '\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d' : '\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d',\n dd: '\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d',\n MM: '\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e',\n yy: '\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e',\n };\n if (key === 'm') {\n return withoutSuffix ? '\u0445\u0432\u0456\u043b\u0456\u043d\u0430' : '\u0445\u0432\u0456\u043b\u0456\u043d\u0443';\n } else if (key === 'h') {\n return withoutSuffix ? '\u0433\u0430\u0434\u0437\u0456\u043d\u0430' : '\u0433\u0430\u0434\u0437\u0456\u043d\u0443';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: '\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f'.split(\n '_'\n ),\n standalone:\n '\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c'.split(\n '_'\n ),\n },\n monthsShort:\n '\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436'.split('_'),\n weekdays: {\n format: '\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443'.split(\n '_'\n ),\n standalone:\n '\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430'.split(\n '_'\n ),\n isFormat: /\\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\\] ?dddd/,\n },\n weekdaysShort: '\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431'.split('_'),\n weekdaysMin: '\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY \u0433.',\n LLL: 'D MMMM YYYY \u0433., HH:mm',\n LLLL: 'dddd, D MMMM YYYY \u0433., HH:mm',\n },\n calendar: {\n sameDay: '[\u0421\u0451\u043d\u043d\u044f \u045e] LT',\n nextDay: '[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT',\n lastDay: '[\u0423\u0447\u043e\u0440\u0430 \u045e] LT',\n nextWeek: function () {\n return '[\u0423] dddd [\u045e] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT';\n case 1:\n case 2:\n case 4:\n return '[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u043f\u0440\u0430\u0437 %s',\n past: '%s \u0442\u0430\u043c\u0443',\n s: '\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: '\u0434\u0437\u0435\u043d\u044c',\n dd: relativeTimeWithPlural,\n M: '\u043c\u0435\u0441\u044f\u0446',\n MM: relativeTimeWithPlural,\n y: '\u0433\u043e\u0434',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,\n isPM: function (input) {\n return /^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u043d\u043e\u0447\u044b';\n } else if (hour < 12) {\n return '\u0440\u0430\u043d\u0456\u0446\u044b';\n } else if (hour < 17) {\n return '\u0434\u043d\u044f';\n } else {\n return '\u0432\u0435\u0447\u0430\u0440\u0430';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-\u0456'\n : number + '-\u044b';\n case 'D':\n return number + '-\u0433\u0430';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: '\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438'.split(\n '_'\n ),\n monthsShort: '\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a'.split('_'),\n weekdays: '\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430'.split(\n '_'\n ),\n weekdaysShort: '\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431'.split('_'),\n weekdaysMin: '\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[\u0414\u043d\u0435\u0441 \u0432] LT',\n nextDay: '[\u0423\u0442\u0440\u0435 \u0432] LT',\n nextWeek: 'dddd [\u0432] LT',\n lastDay: '[\u0412\u0447\u0435\u0440\u0430 \u0432] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0441\u043b\u0435\u0434 %s',\n past: '\u043f\u0440\u0435\u0434\u0438 %s',\n s: '\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438',\n ss: '%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438',\n m: '\u043c\u0438\u043d\u0443\u0442\u0430',\n mm: '%d \u043c\u0438\u043d\u0443\u0442\u0438',\n h: '\u0447\u0430\u0441',\n hh: '%d \u0447\u0430\u0441\u0430',\n d: '\u0434\u0435\u043d',\n dd: '%d \u0434\u0435\u043d\u0430',\n w: '\u0441\u0435\u0434\u043c\u0438\u0446\u0430',\n ww: '%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438',\n M: '\u043c\u0435\u0441\u0435\u0446',\n MM: '%d \u043c\u0435\u0441\u0435\u0446\u0430',\n y: '\u0433\u043e\u0434\u0438\u043d\u0430',\n yy: '%d \u0433\u043e\u0434\u0438\u043d\u0438',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-\u0435\u0432';\n } else if (last2Digits === 0) {\n return number + '-\u0435\u043d';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-\u0442\u0438';\n } else if (lastDigit === 1) {\n return number + '-\u0432\u0438';\n } else if (lastDigit === 2) {\n return number + '-\u0440\u0438';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-\u043c\u0438';\n } else {\n return number + '-\u0442\u0438';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des'.split('_'),\n weekdays: 'Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm',\n },\n calendar: {\n sameDay: '[Bi l\u025br\u025b] LT',\n nextDay: '[Sini l\u025br\u025b] LT',\n nextWeek: 'dddd [don l\u025br\u025b] LT',\n lastDay: '[Kunu l\u025br\u025b] LT',\n lastWeek: 'dddd [t\u025bm\u025bnen l\u025br\u025b] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s k\u0254n\u0254',\n past: 'a b\u025b %s b\u0254',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'l\u025br\u025b kelen',\n hh: 'l\u025br\u025b %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u09e7',\n 2: '\u09e8',\n 3: '\u09e9',\n 4: '\u09ea',\n 5: '\u09eb',\n 6: '\u09ec',\n 7: '\u09ed',\n 8: '\u09ee',\n 9: '\u09ef',\n 0: '\u09e6',\n },\n numberMap = {\n '\u09e7': '1',\n '\u09e8': '2',\n '\u09e9': '3',\n '\u09ea': '4',\n '\u09eb': '5',\n '\u09ec': '6',\n '\u09ed': '7',\n '\u09ee': '8',\n '\u09ef': '9',\n '\u09e6': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: '\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0'.split(\n '_'\n ),\n monthsShort:\n '\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7'.split(\n '_'\n ),\n weekdays: '\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0'.split(\n '_'\n ),\n weekdaysShort: '\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf'.split('_'),\n weekdaysMin: '\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf'.split('_'),\n longDateFormat: {\n LT: 'A h:mm \u09b8\u09ae\u09df',\n LTS: 'A h:mm:ss \u09b8\u09ae\u09df',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm \u09b8\u09ae\u09df',\n LLLL: 'dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df',\n },\n calendar: {\n sameDay: '[\u0986\u099c] LT',\n nextDay: '[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0997\u09a4\u0995\u09be\u09b2] LT',\n lastWeek: '[\u0997\u09a4] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u09aa\u09b0\u09c7',\n past: '%s \u0986\u0997\u09c7',\n s: '\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1',\n ss: '%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1',\n m: '\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f',\n mm: '%d \u09ae\u09bf\u09a8\u09bf\u099f',\n h: '\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be',\n hh: '%d \u0998\u09a8\u09cd\u099f\u09be',\n d: '\u098f\u0995 \u09a6\u09bf\u09a8',\n dd: '%d \u09a6\u09bf\u09a8',\n M: '\u098f\u0995 \u09ae\u09be\u09b8',\n MM: '%d \u09ae\u09be\u09b8',\n y: '\u098f\u0995 \u09ac\u099b\u09b0',\n yy: '%d \u09ac\u099b\u09b0',\n },\n preparse: function (string) {\n return string.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u09b0\u09be\u09a4') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u09ad\u09cb\u09b0') {\n return hour;\n } else if (meridiem === '\u09b8\u0995\u09be\u09b2') {\n return hour;\n } else if (meridiem === '\u09a6\u09c1\u09aa\u09c1\u09b0') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === '\u09ac\u09bf\u0995\u09be\u09b2') {\n return hour + 12;\n } else if (meridiem === '\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u09b0\u09be\u09a4';\n } else if (hour < 6) {\n return '\u09ad\u09cb\u09b0';\n } else if (hour < 12) {\n return '\u09b8\u0995\u09be\u09b2';\n } else if (hour < 15) {\n return '\u09a6\u09c1\u09aa\u09c1\u09b0';\n } else if (hour < 18) {\n return '\u09ac\u09bf\u0995\u09be\u09b2';\n } else if (hour < 20) {\n return '\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be';\n } else {\n return '\u09b0\u09be\u09a4';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u09e7',\n 2: '\u09e8',\n 3: '\u09e9',\n 4: '\u09ea',\n 5: '\u09eb',\n 6: '\u09ec',\n 7: '\u09ed',\n 8: '\u09ee',\n 9: '\u09ef',\n 0: '\u09e6',\n },\n numberMap = {\n '\u09e7': '1',\n '\u09e8': '2',\n '\u09e9': '3',\n '\u09ea': '4',\n '\u09eb': '5',\n '\u09ec': '6',\n '\u09ed': '7',\n '\u09ee': '8',\n '\u09ef': '9',\n '\u09e6': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: '\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0'.split(\n '_'\n ),\n monthsShort:\n '\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7'.split(\n '_'\n ),\n weekdays: '\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0'.split(\n '_'\n ),\n weekdaysShort: '\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf'.split('_'),\n weekdaysMin: '\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf'.split('_'),\n longDateFormat: {\n LT: 'A h:mm \u09b8\u09ae\u09df',\n LTS: 'A h:mm:ss \u09b8\u09ae\u09df',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm \u09b8\u09ae\u09df',\n LLLL: 'dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df',\n },\n calendar: {\n sameDay: '[\u0986\u099c] LT',\n nextDay: '[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0997\u09a4\u0995\u09be\u09b2] LT',\n lastWeek: '[\u0997\u09a4] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u09aa\u09b0\u09c7',\n past: '%s \u0986\u0997\u09c7',\n s: '\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1',\n ss: '%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1',\n m: '\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f',\n mm: '%d \u09ae\u09bf\u09a8\u09bf\u099f',\n h: '\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be',\n hh: '%d \u0998\u09a8\u09cd\u099f\u09be',\n d: '\u098f\u0995 \u09a6\u09bf\u09a8',\n dd: '%d \u09a6\u09bf\u09a8',\n M: '\u098f\u0995 \u09ae\u09be\u09b8',\n MM: '%d \u09ae\u09be\u09b8',\n y: '\u098f\u0995 \u09ac\u099b\u09b0',\n yy: '%d \u09ac\u099b\u09b0',\n },\n preparse: function (string) {\n return string.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === '\u09b0\u09be\u09a4' && hour >= 4) ||\n (meridiem === '\u09a6\u09c1\u09aa\u09c1\u09b0' && hour < 5) ||\n meridiem === '\u09ac\u09bf\u0995\u09be\u09b2'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u09b0\u09be\u09a4';\n } else if (hour < 10) {\n return '\u09b8\u0995\u09be\u09b2';\n } else if (hour < 17) {\n return '\u09a6\u09c1\u09aa\u09c1\u09b0';\n } else if (hour < 20) {\n return '\u09ac\u09bf\u0995\u09be\u09b2';\n } else {\n return '\u09b0\u09be\u09a4';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0f21',\n 2: '\u0f22',\n 3: '\u0f23',\n 4: '\u0f24',\n 5: '\u0f25',\n 6: '\u0f26',\n 7: '\u0f27',\n 8: '\u0f28',\n 9: '\u0f29',\n 0: '\u0f20',\n },\n numberMap = {\n '\u0f21': '1',\n '\u0f22': '2',\n '\u0f23': '3',\n '\u0f24': '4',\n '\u0f25': '5',\n '\u0f26': '6',\n '\u0f27': '7',\n '\u0f28': '8',\n '\u0f29': '9',\n '\u0f20': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: '\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54'.split(\n '_'\n ),\n monthsShort:\n '\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12'.split(\n '_'\n ),\n monthsShortRegex: /^(\u0f5f\u0fb3\u0f0b\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n '\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b'.split(\n '_'\n ),\n weekdaysShort: '\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b'.split(\n '_'\n ),\n weekdaysMin: '\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT',\n nextDay: '[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT',\n nextWeek: '[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT',\n lastDay: '[\u0f41\u0f0b\u0f66\u0f44] LT',\n lastWeek: '[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0f63\u0f0b',\n past: '%s \u0f66\u0f94\u0f53\u0f0b\u0f63',\n s: '\u0f63\u0f58\u0f0b\u0f66\u0f44',\n ss: '%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d',\n m: '\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42',\n mm: '%d \u0f66\u0f90\u0f62\u0f0b\u0f58',\n h: '\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42',\n hh: '%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51',\n d: '\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42',\n dd: '%d \u0f49\u0f72\u0f53\u0f0b',\n M: '\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42',\n MM: '%d \u0f5f\u0fb3\u0f0b\u0f56',\n y: '\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42',\n yy: '%d \u0f63\u0f7c',\n },\n preparse: function (string) {\n return string.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === '\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c' && hour >= 4) ||\n (meridiem === '\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44' && hour < 5) ||\n meridiem === '\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c';\n } else if (hour < 10) {\n return '\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66';\n } else if (hour < 17) {\n return '\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44';\n } else if (hour < 20) {\n return '\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42';\n } else {\n return '\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[\u02bc\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[\u02bc\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[\u02bc\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[\u02bc\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[\u02bc\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warc\u02bchoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Dec\u02bch da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s \u02bczo',\n s: 'un nebeud segondenno\u00f9',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(a\u00f1|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'a\u00f1' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Markovi\u0107\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._\u010det._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_\u010de_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[ju\u010der u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[pro\u0161lu] dddd [u] LT';\n case 6:\n return '[pro\u0161le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[pro\u0161li] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_mar\u00e7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de mar\u00e7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._mar\u00e7_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[dem\u00e0 a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aqu\u00ed %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|\u00e8|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : '\u00e8';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n format: 'leden_\u00fanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\u00e1\u0159\u00ed_\u0159\u00edjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_\u00fanora_b\u0159ezna_dubna_kv\u011btna_\u010dervna_\u010dervence_srpna_z\u00e1\u0159\u00ed_\u0159\u00edjna_listopadu_prosince'.split(\n '_'\n ),\n },\n monthsShort = 'led_\u00fano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\u00e1\u0159_\u0159\u00edj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^\u00fano/i,\n /^b\u0159e/i,\n /^dub/i,\n /^kv\u011b/i,\n /^(\u010dvn|\u010derven$|\u010dervna)/i,\n /^(\u010dvc|\u010dervenec|\u010dervence)/i,\n /^srp/i,\n /^z\u00e1\u0159/i,\n /^\u0159\u00edj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: '\u010derven' is substring of '\u010dervenec'; therefore '\u010dervenec' must precede '\u010derven' in the regex to be fully matched.\n // Otherwise parser matches '1. \u010dervenec' as '1. \u010derven' + 'ec'.\n monthsRegex =\n /^(leden|\u00fanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\u00e1\u0159\u00ed|\u0159\u00edjen|listopad|prosinec|led|\u00fano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\u00e1\u0159|\u0159\u00edj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'p\u00e1r sekund' : 'p\u00e1r sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dn\u00ed');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'm\u011bs\u00edc' : 'm\u011bs\u00edcem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'm\u011bs\u00edce' : 'm\u011bs\u00edc\u016f');\n } else {\n return result + 'm\u011bs\u00edci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: '\u010derven' is substring of '\u010dervenec'; therefore '\u010dervenec' must precede '\u010derven' in the regex to be fully matched.\n // Otherwise parser matches '1. \u010dervenec' as '1. \u010derven' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|\u00fanora|\u00fanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\u00e1\u0159\u00ed|\u0159\u00edjen|\u0159\u00edjna|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|\u00fano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\u00e1\u0159|\u0159\u00edj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'ned\u011ble_pond\u011bl\u00ed_\u00fater\u00fd_st\u0159eda_\u010dtvrtek_p\u00e1tek_sobota'.split('_'),\n weekdaysShort: 'ne_po_\u00fat_st_\u010dt_p\u00e1_so'.split('_'),\n weekdaysMin: 'ne_po_\u00fat_st_\u010dt_p\u00e1_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[z\u00edtra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v ned\u011bli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve st\u0159edu v] LT';\n case 4:\n return '[ve \u010dtvrtek v] LT';\n case 5:\n return '[v p\u00e1tek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[v\u010dera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou ned\u011bli v] LT';\n case 1:\n case 2:\n return '[minul\u00e9] dddd [v] LT';\n case 3:\n return '[minulou st\u0159edu v] LT';\n case 4:\n case 5:\n return '[minul\u00fd] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'p\u0159ed %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: '\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432'.split(\n '_'\n ),\n monthsShort: '\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448'.split('_'),\n weekdays:\n '\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d'.split(\n '_'\n ),\n weekdaysShort: '\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c'.split('_'),\n weekdaysMin: '\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]',\n LLL: 'YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm',\n LLLL: 'dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm',\n },\n calendar: {\n sameDay: '[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]',\n nextDay: '[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]',\n lastDay: '[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]',\n nextWeek: '[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]',\n lastWeek: '[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /\u0441\u0435\u0445\u0435\u0442$/i.exec(output)\n ? '\u0440\u0435\u043d'\n : /\u04ab\u0443\u043b$/i.exec(output)\n ? '\u0442\u0430\u043d'\n : '\u0440\u0430\u043d';\n return output + affix;\n },\n past: '%s \u043a\u0430\u044f\u043b\u043b\u0430',\n s: '\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442',\n ss: '%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442',\n m: '\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442',\n mm: '%d \u043c\u0438\u043d\u0443\u0442',\n h: '\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442',\n hh: '%d \u0441\u0435\u0445\u0435\u0442',\n d: '\u043f\u04d7\u0440 \u043a\u0443\u043d',\n dd: '%d \u043a\u0443\u043d',\n M: '\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445',\n MM: '%d \u0443\u0439\u04d1\u0445',\n y: '\u043f\u04d7\u0440 \u04ab\u0443\u043b',\n yy: '%d \u04ab\u0443\u043b',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-\u043c\u04d7\u0448/,\n ordinal: '%d-\u043c\u04d7\u0448',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn \u00f4l',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 's\u00f8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\u00f8rdag'.split('_'),\n weekdaysShort: 's\u00f8n_man_tir_ons_tor_fre_l\u00f8r'.split('_'),\n weekdaysMin: 's\u00f8_ma_ti_on_to_fr_l\u00f8'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'p\u00e5 dddd [kl.] LT',\n lastDay: '[i g\u00e5r kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'f\u00e5 sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en m\u00e5ned',\n MM: '%d m\u00e5neder',\n y: 'et \u00e5r',\n yy: '%d \u00e5r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elens\u00fale: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'J\u00e4nner_Februar_M\u00e4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'J\u00e4n._Feb._M\u00e4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_M\u00e4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._M\u00e4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elens\u00fale: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_M\u00e4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._M\u00e4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n '\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9',\n '\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9',\n '\u0789\u07a7\u0783\u07a8\u0797\u07aa',\n '\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa',\n '\u0789\u07ad',\n '\u0796\u07ab\u0782\u07b0',\n '\u0796\u07aa\u078d\u07a6\u0787\u07a8',\n '\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa',\n '\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa',\n '\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa',\n '\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa',\n '\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa',\n ],\n weekdays = [\n '\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6',\n '\u0780\u07af\u0789\u07a6',\n '\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6',\n '\u0784\u07aa\u078b\u07a6',\n '\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8',\n '\u0780\u07aa\u0786\u07aa\u0783\u07aa',\n '\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: '\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0789\u0786|\u0789\u078a/,\n isPM: function (input) {\n return '\u0789\u078a' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0789\u0786';\n } else {\n return '\u0789\u078a';\n }\n },\n calendar: {\n sameDay: '[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT',\n nextDay: '[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT',\n nextWeek: 'dddd LT',\n lastDay: '[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT',\n lastWeek: '[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s',\n past: '\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s',\n s: '\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0',\n ss: 'd% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa',\n m: '\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0',\n mm: '\u0789\u07a8\u0782\u07a8\u0793\u07aa %d',\n h: '\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0',\n hh: '\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d',\n d: '\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0',\n dd: '\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d',\n M: '\u0789\u07a6\u0780\u07ac\u0787\u07b0',\n MM: '\u0789\u07a6\u0790\u07b0 %d',\n y: '\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0',\n yy: '\u0787\u07a6\u0780\u07a6\u0783\u07aa %d',\n },\n preparse: function (string) {\n return string.replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '\u060c');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n '\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2'.split(\n '_'\n ),\n monthsGenitiveEl:\n '\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: '\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba'.split('_'),\n weekdays: '\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf'.split(\n '_'\n ),\n weekdaysShort: '\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2'.split('_'),\n weekdaysMin: '\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? '\u03bc\u03bc' : '\u039c\u039c';\n } else {\n return isLower ? '\u03c0\u03bc' : '\u03a0\u039c';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === '\u03bc';\n },\n meridiemParse: /[\u03a0\u039c]\\.?\u039c?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT',\n nextDay: '[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[\u03a7\u03b8\u03b5\u03c2 {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT';\n default:\n return '[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? '\u03c3\u03c4\u03b7' : '\u03c3\u03c4\u03b9\u03c2');\n },\n relativeTime: {\n future: '\u03c3\u03b5 %s',\n past: '%s \u03c0\u03c1\u03b9\u03bd',\n s: '\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1',\n ss: '%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1',\n m: '\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc',\n mm: '%d \u03bb\u03b5\u03c0\u03c4\u03ac',\n h: '\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1',\n hh: '%d \u03ce\u03c1\u03b5\u03c2',\n d: '\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1',\n dd: '%d \u03bc\u03ad\u03c1\u03b5\u03c2',\n M: '\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2',\n MM: '%d \u03bc\u03ae\u03bd\u03b5\u03c2',\n y: '\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2',\n yy: '%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u03b7/,\n ordinal: '%d\u03b7',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec'.split('_'),\n weekdays: 'diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_\u0135a\u016d_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_\u0135a_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodia\u016d je] LT',\n nextDay: '[Morga\u016d je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hiera\u016d je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'anta\u016d %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', \u0109ar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_mi\u00e9rcoles_jueves_viernes_s\u00e1bado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mi\u00e9._jue._vie._s\u00e1b.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_s\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[ma\u00f1ana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un d\u00eda',\n dd: '%d d\u00edas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un a\u00f1o',\n yy: '%d a\u00f1os',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_mi\u00e9rcoles_jueves_viernes_s\u00e1bado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mi\u00e9._jue._vie._s\u00e1b.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_s\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[ma\u00f1ana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un d\u00eda',\n dd: '%d d\u00edas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un a\u00f1o',\n yy: '%d a\u00f1os',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inv\u00e1lida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_mi\u00e9rcoles_jueves_viernes_s\u00e1bado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mi\u00e9._jue._vie._s\u00e1b.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_s\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[ma\u00f1ana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un d\u00eda',\n dd: '%d d\u00edas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un a\u00f1o',\n yy: '%d a\u00f1os',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napur\u00ed : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_mi\u00e9rcoles_jueves_viernes_s\u00e1bado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mi\u00e9._jue._vie._s\u00e1b.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_s\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[ma\u00f1ana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un d\u00eda',\n dd: '%d d\u00edas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un a\u00f1o',\n yy: '%d a\u00f1os',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inv\u00e1lida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['m\u00f5ne sekundi', 'm\u00f5ni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['\u00fche minuti', '\u00fcks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['\u00fche tunni', 'tund aega', '\u00fcks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['\u00fche p\u00e4eva', '\u00fcks p\u00e4ev'],\n M: ['kuu aja', 'kuu aega', '\u00fcks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['\u00fche aasta', 'aasta', '\u00fcks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_m\u00e4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_m\u00e4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'p\u00fchap\u00e4ev_esmasp\u00e4ev_teisip\u00e4ev_kolmap\u00e4ev_neljap\u00e4ev_reede_laup\u00e4ev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[T\u00e4na,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[J\u00e4rgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s p\u00e4rast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d p\u00e4eva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u06f1',\n 2: '\u06f2',\n 3: '\u06f3',\n 4: '\u06f4',\n 5: '\u06f5',\n 6: '\u06f6',\n 7: '\u06f7',\n 8: '\u06f8',\n 9: '\u06f9',\n 0: '\u06f0',\n },\n numberMap = {\n '\u06f1': '1',\n '\u06f2': '2',\n '\u06f3': '3',\n '\u06f4': '4',\n '\u06f5': '5',\n '\u06f6': '6',\n '\u06f7': '7',\n '\u06f8': '8',\n '\u06f9': '9',\n '\u06f0': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: '\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631'.split(\n '_'\n ),\n monthsShort:\n '\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631'.split(\n '_'\n ),\n weekdays:\n '\u06cc\u06a9\\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647'.split(\n '_'\n ),\n weekdaysShort:\n '\u06cc\u06a9\\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647'.split(\n '_'\n ),\n weekdaysMin: '\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,\n isPM: function (input) {\n return /\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631';\n } else {\n return '\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631';\n }\n },\n calendar: {\n sameDay: '[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT',\n nextDay: '[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT',\n nextWeek: 'dddd [\u0633\u0627\u0639\u062a] LT',\n lastDay: '[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT',\n lastWeek: 'dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u062f\u0631 %s',\n past: '%s \u067e\u06cc\u0634',\n s: '\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647',\n ss: '%d \u062b\u0627\u0646\u06cc\u0647',\n m: '\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647',\n mm: '%d \u062f\u0642\u06cc\u0642\u0647',\n h: '\u06cc\u06a9 \u0633\u0627\u0639\u062a',\n hh: '%d \u0633\u0627\u0639\u062a',\n d: '\u06cc\u06a9 \u0631\u0648\u0632',\n dd: '%d \u0631\u0648\u0632',\n M: '\u06cc\u06a9 \u0645\u0627\u0647',\n MM: '%d \u0645\u0627\u0647',\n y: '\u06cc\u06a9 \u0633\u0627\u0644',\n yy: '%d \u0633\u0627\u0644',\n },\n preparse: function (string) {\n return string\n .replace(/[\u06f0-\u06f9]/g, function (match) {\n return numberMap[match];\n })\n .replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '\u060c');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u0645/,\n ordinal: '%d\u0645',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme nelj\u00e4 viisi kuusi seitsem\u00e4n kahdeksan yhdeks\u00e4n'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'nelj\u00e4n',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'p\u00e4iv\u00e4n' : 'p\u00e4iv\u00e4';\n case 'dd':\n result = isFuture ? 'p\u00e4iv\u00e4n' : 'p\u00e4iv\u00e4\u00e4';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\u00e4kuu_hein\u00e4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kes\u00e4_hein\u00e4_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[t\u00e4n\u00e4\u00e4n] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s p\u00e4\u00e4st\u00e4',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apr\u00edl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_m\u00e1nadagur_t\u00fdsdagur_mikudagur_h\u00f3sdagur_fr\u00edggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_m\u00e1n_t\u00fds_mik_h\u00f3s_fr\u00ed_ley'.split('_'),\n weekdaysMin: 'su_m\u00e1_t\u00fd_mi_h\u00f3_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u00cd dag kl.] LT',\n nextDay: '[\u00cd morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[\u00cd gj\u00e1r kl.] LT',\n lastWeek: '[s\u00ed\u00f0stu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s s\u00ed\u00f0ani',\n s: 'f\u00e1 sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein t\u00edmi',\n hh: '%d t\u00edmar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein m\u00e1na\u00f0ur',\n MM: '%d m\u00e1na\u00f0ir',\n y: 'eitt \u00e1r',\n yy: '%d \u00e1r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_f\u00e9vrier_mars_avril_mai_juin_juillet_ao\u00fbt_septembre_octobre_novembre_d\u00e9cembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._f\u00e9vr._mars_avr._mai_juin_juil._ao\u00fbt_sept._oct._nov._d\u00e9c.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd\u2019hui \u00e0] LT',\n nextDay: '[Demain \u00e0] LT',\n nextWeek: 'dddd [\u00e0] LT',\n lastDay: '[Hier \u00e0] LT',\n lastWeek: 'dddd [dernier \u00e0] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_f\u00e9vrier_mars_avril_mai_juin_juillet_ao\u00fbt_septembre_octobre_novembre_d\u00e9cembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._f\u00e9vr._mars_avr._mai_juin_juil._ao\u00fbt_sept._oct._nov._d\u00e9c.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd\u2019hui \u00e0] LT',\n nextDay: '[Demain \u00e0] LT',\n nextWeek: 'dddd [\u00e0] LT',\n lastDay: '[Hier \u00e0] LT',\n lastWeek: 'dddd [dernier \u00e0] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|f\u00e9vrier|mars|avril|mai|juin|juillet|ao\u00fbt|septembre|octobre|novembre|d\u00e9cembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|f\u00e9vr\\.?|mars|avr\\.?|mai|juin|juil\\.?|ao\u00fbt|sept\\.?|oct\\.?|nov\\.?|d\u00e9c\\.?)/i,\n monthsRegex =\n /(janv\\.?|f\u00e9vr\\.?|mars|avr\\.?|mai|juin|juil\\.?|ao\u00fbt|sept\\.?|oct\\.?|nov\\.?|d\u00e9c\\.?|janvier|f\u00e9vrier|mars|avril|mai|juin|juillet|ao\u00fbt|septembre|octobre|novembre|d\u00e9cembre)/i,\n monthsParse = [\n /^janv/i,\n /^f\u00e9vr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^ao\u00fbt/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^d\u00e9c/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_f\u00e9vrier_mars_avril_mai_juin_juillet_ao\u00fbt_septembre_octobre_novembre_d\u00e9cembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._f\u00e9vr._mars_avr._mai_juin_juil._ao\u00fbt_sept._oct._nov._d\u00e9c.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd\u2019hui \u00e0] LT',\n nextDay: '[Demain \u00e0] LT',\n nextWeek: 'dddd [\u00e0] LT',\n lastDay: '[Hier \u00e0] LT',\n lastWeek: 'dddd [dernier \u00e0] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[\u00f4fr\u00fbne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien min\u00fat',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : Andr\u00e9 Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Ean\u00e1ir',\n 'Feabhra',\n 'M\u00e1rta',\n 'Aibre\u00e1n',\n 'Bealtaine',\n 'Meitheamh',\n 'I\u00fail',\n 'L\u00fanasa',\n 'Me\u00e1n F\u00f3mhair',\n 'Deireadh F\u00f3mhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'M\u00e1rt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'I\u00fail',\n 'L\u00fan',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'D\u00e9 Domhnaigh',\n 'D\u00e9 Luain',\n 'D\u00e9 M\u00e1irt',\n 'D\u00e9 C\u00e9adaoin',\n 'D\u00e9ardaoin',\n 'D\u00e9 hAoine',\n 'D\u00e9 Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'M\u00e1irt', 'C\u00e9ad', 'D\u00e9ar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'M\u00e1', 'C\u00e9', 'D\u00e9', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Am\u00e1rach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inn\u00e9 ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s \u00f3 shin',\n s: 'c\u00fapla soicind',\n ss: '%d soicind',\n m: 'n\u00f3im\u00e9ad',\n mm: '%d n\u00f3im\u00e9ad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'l\u00e1',\n dd: '%d l\u00e1',\n M: 'm\u00ed',\n MM: '%d m\u00edonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am M\u00e0rt',\n 'An Giblean',\n 'An C\u00e8itean',\n 'An t-\u00d2gmhios',\n 'An t-Iuchar',\n 'An L\u00f9nastal',\n 'An t-Sultain',\n 'An D\u00e0mhair',\n 'An t-Samhain',\n 'An D\u00f9bhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'M\u00e0rt',\n 'Gibl',\n 'C\u00e8it',\n '\u00d2gmh',\n 'Iuch',\n 'L\u00f9n',\n 'Sult',\n 'D\u00e0mh',\n 'Samh',\n 'D\u00f9bh',\n ],\n weekdays = [\n 'Did\u00f2mhnaich',\n 'Diluain',\n 'Dim\u00e0irt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['D\u00f2', 'Lu', 'M\u00e0', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-m\u00e0ireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-d\u00e8 aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'm\u00ecos',\n MM: '%d m\u00ecosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xu\u00f1o_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xu\u00f1._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_m\u00e9rcores_xoves_venres_s\u00e1bado'.split('_'),\n weekdaysShort: 'dom._lun._mar._m\u00e9r._xov._ven._s\u00e1b.'.split('_'),\n weekdaysMin: 'do_lu_ma_m\u00e9_xo_ve_s\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? '\u00e1s' : '\u00e1') + '] LT';\n },\n nextDay: function () {\n return '[ma\u00f1\u00e1 ' + (this.hours() !== 1 ? '\u00e1s' : '\u00e1') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? '\u00e1s' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? '\u00e1' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? '\u00e1s' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un d\u00eda',\n dd: '%d d\u00edas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940', '\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921'],\n ss: [number + ' \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940', number + ' \u0938\u0945\u0915\u0902\u0921'],\n m: ['\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928', '\u090f\u0915 \u092e\u093f\u0928\u0942\u091f'],\n mm: [number + ' \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940', number + ' \u092e\u093f\u0923\u091f\u093e\u0902'],\n h: ['\u090f\u0915\u093e \u0935\u0930\u093e\u0928', '\u090f\u0915 \u0935\u0930'],\n hh: [number + ' \u0935\u0930\u093e\u0902\u0928\u0940', number + ' \u0935\u0930\u093e\u0902'],\n d: ['\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928', '\u090f\u0915 \u0926\u0940\u0938'],\n dd: [number + ' \u0926\u093f\u0938\u093e\u0902\u0928\u0940', number + ' \u0926\u0940\u0938'],\n M: ['\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928', '\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b'],\n MM: [number + ' \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940', number + ' \u092e\u094d\u0939\u092f\u0928\u0947'],\n y: ['\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928', '\u090f\u0915 \u0935\u0930\u094d\u0938'],\n yy: [number + ' \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940', number + ' \u0935\u0930\u094d\u0938\u093e\u0902'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n '\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930'.split(\n '_'\n ),\n format: '\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n '\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: '\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930'.split('_'),\n weekdaysShort: '\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.'.split('_'),\n weekdaysMin: '\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]',\n LTS: 'A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]',\n llll: 'ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]',\n },\n calendar: {\n sameDay: '[\u0906\u092f\u091c] LT',\n nextDay: '[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT',\n nextWeek: '[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT',\n lastDay: '[\u0915\u093e\u0932] LT',\n lastWeek: '[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s \u0906\u0926\u0940\u0902',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\u0935\u0947\u0930)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal '\u0935\u0947\u0930' only applies to day of the month\n case 'D':\n return number + '\u0935\u0947\u0930';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0930\u093e\u0924\u0940') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u0938\u0915\u093e\u0933\u0940\u0902') {\n return hour;\n } else if (meridiem === '\u0926\u0928\u092a\u093e\u0930\u093e\u0902') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === '\u0938\u093e\u0902\u091c\u0947') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0930\u093e\u0924\u0940';\n } else if (hour < 12) {\n return '\u0938\u0915\u093e\u0933\u0940\u0902';\n } else if (hour < 16) {\n return '\u0926\u0928\u092a\u093e\u0930\u093e\u0902';\n } else if (hour < 20) {\n return '\u0938\u093e\u0902\u091c\u0947';\n } else {\n return '\u0930\u093e\u0924\u0940';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0ae7',\n 2: '\u0ae8',\n 3: '\u0ae9',\n 4: '\u0aea',\n 5: '\u0aeb',\n 6: '\u0aec',\n 7: '\u0aed',\n 8: '\u0aee',\n 9: '\u0aef',\n 0: '\u0ae6',\n },\n numberMap = {\n '\u0ae7': '1',\n '\u0ae8': '2',\n '\u0ae9': '3',\n '\u0aea': '4',\n '\u0aeb': '5',\n '\u0aec': '6',\n '\u0aed': '7',\n '\u0aee': '8',\n '\u0aef': '9',\n '\u0ae6': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: '\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0'.split(\n '_'\n ),\n monthsShort:\n '\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: '\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0'.split(\n '_'\n ),\n weekdaysShort: '\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf'.split('_'),\n weekdaysMin: '\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6'.split('_'),\n longDateFormat: {\n LT: 'A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7',\n LTS: 'A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7',\n LLLL: 'dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7',\n },\n calendar: {\n sameDay: '[\u0a86\u0a9c] LT',\n nextDay: '[\u0a95\u0abe\u0ab2\u0ac7] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT',\n lastWeek: '[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0aae\u0abe',\n past: '%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe',\n s: '\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb',\n ss: '%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1',\n m: '\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f',\n mm: '%d \u0aae\u0abf\u0aa8\u0abf\u0a9f',\n h: '\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95',\n hh: '%d \u0a95\u0ab2\u0abe\u0a95',\n d: '\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8',\n dd: '%d \u0aa6\u0abf\u0ab5\u0ab8',\n M: '\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb',\n MM: '%d \u0aae\u0ab9\u0abf\u0aa8\u0acb',\n y: '\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7',\n yy: '%d \u0ab5\u0ab0\u0acd\u0ab7',\n },\n preparse: function (string) {\n return string.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0ab0\u0abe\u0aa4') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u0ab8\u0ab5\u0abe\u0ab0') {\n return hour;\n } else if (meridiem === '\u0aac\u0aaa\u0acb\u0ab0') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === '\u0ab8\u0abe\u0a82\u0a9c') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0ab0\u0abe\u0aa4';\n } else if (hour < 10) {\n return '\u0ab8\u0ab5\u0abe\u0ab0';\n } else if (hour < 17) {\n return '\u0aac\u0aaa\u0acb\u0ab0';\n } else if (hour < 20) {\n return '\u0ab8\u0abe\u0a82\u0a9c';\n } else {\n return '\u0ab0\u0abe\u0aa4';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: '\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8'.split(\n '_'\n ),\n monthsShort:\n '\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3'.split('_'),\n weekdays: '\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea'.split('_'),\n weekdaysShort: '\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3'.split('_'),\n weekdaysMin: '\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [\u05d1]MMMM YYYY',\n LLL: 'D [\u05d1]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [\u05d1]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT',\n nextDay: '[\u05de\u05d7\u05e8 \u05d1\u05be]LT',\n nextWeek: 'dddd [\u05d1\u05e9\u05e2\u05d4] LT',\n lastDay: '[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT',\n lastWeek: '[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u05d1\u05e2\u05d5\u05d3 %s',\n past: '\u05dc\u05e4\u05e0\u05d9 %s',\n s: '\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea',\n ss: '%d \u05e9\u05e0\u05d9\u05d5\u05ea',\n m: '\u05d3\u05e7\u05d4',\n mm: '%d \u05d3\u05e7\u05d5\u05ea',\n h: '\u05e9\u05e2\u05d4',\n hh: function (number) {\n if (number === 2) {\n return '\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd';\n }\n return number + ' \u05e9\u05e2\u05d5\u05ea';\n },\n d: '\u05d9\u05d5\u05dd',\n dd: function (number) {\n if (number === 2) {\n return '\u05d9\u05d5\u05de\u05d9\u05d9\u05dd';\n }\n return number + ' \u05d9\u05de\u05d9\u05dd';\n },\n M: '\u05d7\u05d5\u05d3\u05e9',\n MM: function (number) {\n if (number === 2) {\n return '\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd';\n }\n return number + ' \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd';\n },\n y: '\u05e9\u05e0\u05d4',\n yy: function (number) {\n if (number === 2) {\n return '\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' \u05e9\u05e0\u05d4';\n }\n return number + ' \u05e9\u05e0\u05d9\u05dd';\n },\n },\n meridiemParse:\n /\u05d0\u05d7\u05d4\"\u05e6|\u05dc\u05e4\u05e0\u05d4\"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,\n isPM: function (input) {\n return /^(\u05d0\u05d7\u05d4\"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return '\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8';\n } else if (hour < 10) {\n return '\u05d1\u05d1\u05d5\u05e7\u05e8';\n } else if (hour < 12) {\n return isLower ? '\u05dc\u05e4\u05e0\u05d4\"\u05e6' : '\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd';\n } else if (hour < 18) {\n return isLower ? '\u05d0\u05d7\u05d4\"\u05e6' : '\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd';\n } else {\n return '\u05d1\u05e2\u05e8\u05d1';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0967',\n 2: '\u0968',\n 3: '\u0969',\n 4: '\u096a',\n 5: '\u096b',\n 6: '\u096c',\n 7: '\u096d',\n 8: '\u096e',\n 9: '\u096f',\n 0: '\u0966',\n },\n numberMap = {\n '\u0967': '1',\n '\u0968': '2',\n '\u0969': '3',\n '\u096a': '4',\n '\u096b': '5',\n '\u096c': '6',\n '\u096d': '7',\n '\u096e': '8',\n '\u096f': '9',\n '\u0966': '0',\n },\n monthsParse = [\n /^\u091c\u0928/i,\n /^\u092b\u093c\u0930|\u092b\u0930/i,\n /^\u092e\u093e\u0930\u094d\u091a/i,\n /^\u0905\u092a\u094d\u0930\u0948/i,\n /^\u092e\u0908/i,\n /^\u091c\u0942\u0928/i,\n /^\u091c\u0941\u0932/i,\n /^\u0905\u0917/i,\n /^\u0938\u093f\u0924\u0902|\u0938\u093f\u0924/i,\n /^\u0905\u0915\u094d\u091f\u0942/i,\n /^\u0928\u0935|\u0928\u0935\u0902/i,\n /^\u0926\u093f\u0938\u0902|\u0926\u093f\u0938/i,\n ],\n shortMonthsParse = [\n /^\u091c\u0928/i,\n /^\u092b\u093c\u0930/i,\n /^\u092e\u093e\u0930\u094d\u091a/i,\n /^\u0905\u092a\u094d\u0930\u0948/i,\n /^\u092e\u0908/i,\n /^\u091c\u0942\u0928/i,\n /^\u091c\u0941\u0932/i,\n /^\u0905\u0917/i,\n /^\u0938\u093f\u0924/i,\n /^\u0905\u0915\u094d\u091f\u0942/i,\n /^\u0928\u0935/i,\n /^\u0926\u093f\u0938/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: '\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930'.split(\n '_'\n ),\n standalone:\n '\u091c\u0928\u0935\u0930\u0940_\u092b\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u0902\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u0902\u092c\u0930_\u0926\u093f\u0938\u0902\u092c\u0930'.split(\n '_'\n ),\n },\n monthsShort:\n '\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.'.split('_'),\n weekdays: '\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930'.split('_'),\n weekdaysShort: '\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f'.split('_'),\n weekdaysMin: '\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936'.split('_'),\n longDateFormat: {\n LT: 'A h:mm \u092c\u091c\u0947',\n LTS: 'A h:mm:ss \u092c\u091c\u0947',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm \u092c\u091c\u0947',\n LLLL: 'dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\\.?)/i,\n\n monthsShortRegex:\n /^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\\.?)/i,\n\n monthsStrictRegex:\n /^(\u091c\u0928\u0935\u0930\u0940?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908?|\u0905\u0917\u0938\u094d\u0924?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924?\\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930?)/i,\n\n monthsShortStrictRegex:\n /^(\u091c\u0928\\.?|\u092b\u093c\u0930\\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\\.?|\u0905\u0917\\.?|\u0938\u093f\u0924\\.?|\u0905\u0915\u094d\u091f\u0942\\.?|\u0928\u0935\\.?|\u0926\u093f\u0938\\.?)/i,\n\n calendar: {\n sameDay: '[\u0906\u091c] LT',\n nextDay: '[\u0915\u0932] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0915\u0932] LT',\n lastWeek: '[\u092a\u093f\u091b\u0932\u0947] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u092e\u0947\u0902',\n past: '%s \u092a\u0939\u0932\u0947',\n s: '\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923',\n ss: '%d \u0938\u0947\u0915\u0902\u0921',\n m: '\u090f\u0915 \u092e\u093f\u0928\u091f',\n mm: '%d \u092e\u093f\u0928\u091f',\n h: '\u090f\u0915 \u0918\u0902\u091f\u093e',\n hh: '%d \u0918\u0902\u091f\u0947',\n d: '\u090f\u0915 \u0926\u093f\u0928',\n dd: '%d \u0926\u093f\u0928',\n M: '\u090f\u0915 \u092e\u0939\u0940\u0928\u0947',\n MM: '%d \u092e\u0939\u0940\u0928\u0947',\n y: '\u090f\u0915 \u0935\u0930\u094d\u0937',\n yy: '%d \u0935\u0930\u094d\u0937',\n },\n preparse: function (string) {\n return string.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0930\u093e\u0924') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u0938\u0941\u092c\u0939') {\n return hour;\n } else if (meridiem === '\u0926\u094b\u092a\u0939\u0930') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === '\u0936\u093e\u092e') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0930\u093e\u0924';\n } else if (hour < 10) {\n return '\u0938\u0941\u092c\u0939';\n } else if (hour < 17) {\n return '\u0926\u094b\u092a\u0939\u0930';\n } else if (hour < 20) {\n return '\u0936\u093e\u092e';\n } else {\n return '\u0930\u093e\u0924';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Markovi\u0107 : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._\u010det._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_\u010de_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[ju\u010der u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[pro\u0161lu] [nedjelju] [u] LT';\n case 3:\n return '[pro\u0161lu] [srijedu] [u] LT';\n case 6:\n return '[pro\u0161le] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[pro\u0161li] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vas\u00e1rnap h\u00e9tf\u0151n kedden szerd\u00e1n cs\u00fct\u00f6rt\u00f6k\u00f6n p\u00e9nteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'n\u00e9h\u00e1ny m\u00e1sodperc'\n : 'n\u00e9h\u00e1ny m\u00e1sodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' m\u00e1sodperc'\n : ' m\u00e1sodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' \u00f3ra' : ' \u00f3r\u00e1ja');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' \u00f3ra' : ' \u00f3r\u00e1ja');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' h\u00f3nap' : ' h\u00f3napja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' h\u00f3nap' : ' h\u00f3napja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' \u00e9v' : ' \u00e9ve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' \u00e9v' : ' \u00e9ve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[m\u00falt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'janu\u00e1r_febru\u00e1r_m\u00e1rcius_\u00e1prilis_m\u00e1jus_j\u00fanius_j\u00falius_augusztus_szeptember_okt\u00f3ber_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._m\u00e1rc._\u00e1pr._m\u00e1j._j\u00fan._j\u00fal._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vas\u00e1rnap_h\u00e9tf\u0151_kedd_szerda_cs\u00fct\u00f6rt\u00f6k_p\u00e9ntek_szombat'.split('_'),\n weekdaysShort: 'vas_h\u00e9t_kedd_sze_cs\u00fct_p\u00e9n_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s m\u00falva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: '\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b'.split(\n '_'\n ),\n standalone:\n '\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580'.split(\n '_'\n ),\n },\n monthsShort: '\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f'.split('_'),\n weekdays:\n '\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569'.split(\n '_'\n ),\n weekdaysShort: '\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569'.split('_'),\n weekdaysMin: '\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY \u0569.',\n LLL: 'D MMMM YYYY \u0569., HH:mm',\n LLLL: 'dddd, D MMMM YYYY \u0569., HH:mm',\n },\n calendar: {\n sameDay: '[\u0561\u0575\u057d\u0585\u0580] LT',\n nextDay: '[\u057e\u0561\u0572\u0568] LT',\n lastDay: '[\u0565\u0580\u0565\u056f] LT',\n nextWeek: function () {\n return 'dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT';\n },\n lastWeek: function () {\n return '[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0570\u0565\u057f\u0578',\n past: '%s \u0561\u057c\u0561\u057b',\n s: '\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576',\n ss: '%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576',\n m: '\u0580\u0578\u057a\u0565',\n mm: '%d \u0580\u0578\u057a\u0565',\n h: '\u056a\u0561\u0574',\n hh: '%d \u056a\u0561\u0574',\n d: '\u0585\u0580',\n dd: '%d \u0585\u0580',\n M: '\u0561\u0574\u056b\u057d',\n MM: '%d \u0561\u0574\u056b\u057d',\n y: '\u057f\u0561\u0580\u056b',\n yy: '%d \u057f\u0561\u0580\u056b',\n },\n meridiemParse: /\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,\n isPM: function (input) {\n return /^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return '\u0563\u056b\u0577\u0565\u0580\u057e\u0561';\n } else if (hour < 12) {\n return '\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561';\n } else if (hour < 17) {\n return '\u0581\u0565\u0580\u0565\u056f\u057e\u0561';\n } else {\n return '\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(\u056b\u0576|\u0580\u0564)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-\u056b\u0576';\n }\n return number + '-\u0580\u0564';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik \u00d6rn Sigur\u00f0sson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sek\u00fandur'\n : 'nokkrum sek\u00fandum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sek\u00fandur' : 'sek\u00fandum')\n );\n }\n return result + 'sek\u00fanda';\n case 'm':\n return withoutSuffix ? 'm\u00edn\u00fata' : 'm\u00edn\u00fatu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'm\u00edn\u00fatur' : 'm\u00edn\u00fatum')\n );\n } else if (withoutSuffix) {\n return result + 'm\u00edn\u00fata';\n }\n return result + 'm\u00edn\u00fatu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'd\u00f6gum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'm\u00e1nu\u00f0ur';\n }\n return isFuture ? 'm\u00e1nu\u00f0' : 'm\u00e1nu\u00f0i';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'm\u00e1nu\u00f0ir';\n }\n return result + (isFuture ? 'm\u00e1nu\u00f0i' : 'm\u00e1nu\u00f0um');\n } else if (withoutSuffix) {\n return result + 'm\u00e1nu\u00f0ur';\n }\n return result + (isFuture ? 'm\u00e1nu\u00f0' : 'm\u00e1nu\u00f0i');\n case 'y':\n return withoutSuffix || isFuture ? '\u00e1r' : '\u00e1ri';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? '\u00e1r' : '\u00e1rum');\n }\n return result + (withoutSuffix || isFuture ? '\u00e1r' : '\u00e1ri');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'jan\u00faar_febr\u00faar_mars_apr\u00edl_ma\u00ed_j\u00fan\u00ed_j\u00fal\u00ed_\u00e1g\u00fast_september_okt\u00f3ber_n\u00f3vember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_ma\u00ed_j\u00fan_j\u00fal_\u00e1g\u00fa_sep_okt_n\u00f3v_des'.split('_'),\n weekdays:\n 'sunnudagur_m\u00e1nudagur_\u00feri\u00f0judagur_mi\u00f0vikudagur_fimmtudagur_f\u00f6studagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_m\u00e1n_\u00feri_mi\u00f0_fim_f\u00f6s_lau'.split('_'),\n weekdaysMin: 'Su_M\u00e1_\u00der_Mi_Fi_F\u00f6_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[\u00ed dag kl.] LT',\n nextDay: '[\u00e1 morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[\u00ed g\u00e6r kl.] LT',\n lastWeek: '[s\u00ed\u00f0asta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s s\u00ed\u00f0an',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_luned\u00ec_marted\u00ec_mercoled\u00ec_gioved\u00ec_venerd\u00ec_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_luned\u00ec_marted\u00ec_mercoled\u00ec_gioved\u00ec_venerd\u00ec_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '\u4ee4\u548c',\n narrow: '\u32ff',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '\u5e73\u6210',\n narrow: '\u337b',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '\u662d\u548c',\n narrow: '\u337c',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '\u5927\u6b63',\n narrow: '\u337d',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '\u660e\u6cbb',\n narrow: '\u337e',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '\u897f\u66a6',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '\u7d00\u5143\u524d',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(\u5143|\\d+)\u5e74/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '\u5143' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708'.split('_'),\n monthsShort: '1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708'.split(\n '_'\n ),\n weekdays: '\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5'.split('_'),\n weekdaysShort: '\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f'.split('_'),\n weekdaysMin: '\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY\u5e74M\u6708D\u65e5',\n LLL: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n LLLL: 'YYYY\u5e74M\u6708D\u65e5 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY\u5e74M\u6708D\u65e5',\n lll: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n llll: 'YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm',\n },\n meridiemParse: /\u5348\u524d|\u5348\u5f8c/i,\n isPM: function (input) {\n return input === '\u5348\u5f8c';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u5348\u524d';\n } else {\n return '\u5348\u5f8c';\n }\n },\n calendar: {\n sameDay: '[\u4eca\u65e5] LT',\n nextDay: '[\u660e\u65e5] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[\u6765\u9031]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[\u6628\u65e5] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[\u5148\u9031]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u65e5/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '\u5143\u5e74' : number + '\u5e74';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '\u65e5';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s\u5f8c',\n past: '%s\u524d',\n s: '\u6570\u79d2',\n ss: '%d\u79d2',\n m: '1\u5206',\n mm: '%d\u5206',\n h: '1\u6642\u9593',\n hh: '%d\u6642\u9593',\n d: '1\u65e5',\n dd: '%d\u65e5',\n M: '1\u30f6\u6708',\n MM: '%d\u30f6\u6708',\n y: '1\u5e74',\n yy: '%d\u5e74',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: '\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8'.split(\n '_'\n ),\n monthsShort: '\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9'.split('_'),\n weekdays: {\n standalone:\n '\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8'.split(\n '_'\n ),\n format: '\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1'.split(\n '_'\n ),\n isFormat: /(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/,\n },\n weekdaysShort: '\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1'.split('_'),\n weekdaysMin: '\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]',\n nextDay: '[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]',\n lastDay: '[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]',\n nextWeek: '[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]',\n lastWeek: '[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,\n function ($0, $1, $2) {\n return $2 === '\u10d8' ? $1 + '\u10e8\u10d8' : $1 + $2 + '\u10e8\u10d8';\n }\n );\n },\n past: function (s) {\n if (/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(s)) {\n return s.replace(/(\u10d8|\u10d4)$/, '\u10d8\u10e1 \u10ec\u10d8\u10dc');\n }\n if (/\u10ec\u10d4\u10da\u10d8/.test(s)) {\n return s.replace(/\u10ec\u10d4\u10da\u10d8$/, '\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc');\n }\n return s;\n },\n s: '\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8',\n ss: '%d \u10ec\u10d0\u10db\u10d8',\n m: '\u10ec\u10e3\u10d7\u10d8',\n mm: '%d \u10ec\u10e3\u10d7\u10d8',\n h: '\u10e1\u10d0\u10d0\u10d7\u10d8',\n hh: '%d \u10e1\u10d0\u10d0\u10d7\u10d8',\n d: '\u10d3\u10e6\u10d4',\n dd: '%d \u10d3\u10e6\u10d4',\n M: '\u10d7\u10d5\u10d4',\n MM: '%d \u10d7\u10d5\u10d4',\n y: '\u10ec\u10d4\u10da\u10d8',\n yy: '%d \u10ec\u10d4\u10da\u10d8',\n },\n dayOfMonthOrdinalParse: /0|1-\u10da\u10d8|\u10db\u10d4-\\d{1,2}|\\d{1,2}-\u10d4/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-\u10da\u10d8';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return '\u10db\u10d4-' + number;\n }\n return number + '-\u10d4';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-\u0448\u0456',\n 1: '-\u0448\u0456',\n 2: '-\u0448\u0456',\n 3: '-\u0448\u0456',\n 4: '-\u0448\u0456',\n 5: '-\u0448\u0456',\n 6: '-\u0448\u044b',\n 7: '-\u0448\u0456',\n 8: '-\u0448\u0456',\n 9: '-\u0448\u044b',\n 10: '-\u0448\u044b',\n 20: '-\u0448\u044b',\n 30: '-\u0448\u044b',\n 40: '-\u0448\u044b',\n 50: '-\u0448\u0456',\n 60: '-\u0448\u044b',\n 70: '-\u0448\u0456',\n 80: '-\u0448\u0456',\n 90: '-\u0448\u044b',\n 100: '-\u0448\u0456',\n };\n\n var kk = moment.defineLocale('kk', {\n months: '\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d'.split(\n '_'\n ),\n monthsShort: '\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b'.split('_'),\n weekdays: '\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456'.split(\n '_'\n ),\n weekdaysShort: '\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d'.split('_'),\n weekdaysMin: '\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT',\n nextDay: '[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT',\n nextWeek: 'dddd [\u0441\u0430\u0493\u0430\u0442] LT',\n lastDay: '[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT',\n lastWeek: '[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0456\u0448\u0456\u043d\u0434\u0435',\n past: '%s \u0431\u04b1\u0440\u044b\u043d',\n s: '\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434',\n ss: '%d \u0441\u0435\u043a\u0443\u043d\u0434',\n m: '\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442',\n mm: '%d \u043c\u0438\u043d\u0443\u0442',\n h: '\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442',\n hh: '%d \u0441\u0430\u0493\u0430\u0442',\n d: '\u0431\u0456\u0440 \u043a\u04af\u043d',\n dd: '%d \u043a\u04af\u043d',\n M: '\u0431\u0456\u0440 \u0430\u0439',\n MM: '%d \u0430\u0439',\n y: '\u0431\u0456\u0440 \u0436\u044b\u043b',\n yy: '%d \u0436\u044b\u043b',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0448\u0456|\u0448\u044b)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u17e1',\n 2: '\u17e2',\n 3: '\u17e3',\n 4: '\u17e4',\n 5: '\u17e5',\n 6: '\u17e6',\n 7: '\u17e7',\n 8: '\u17e8',\n 9: '\u17e9',\n 0: '\u17e0',\n },\n numberMap = {\n '\u17e1': '1',\n '\u17e2': '2',\n '\u17e3': '3',\n '\u17e4': '4',\n '\u17e5': '5',\n '\u17e6': '6',\n '\u17e7': '7',\n '\u17e8': '8',\n '\u17e9': '9',\n '\u17e0': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: '\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc'.split(\n '_'\n ),\n monthsShort:\n '\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc'.split(\n '_'\n ),\n weekdays: '\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd'.split('_'),\n weekdaysShort: '\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f'.split('_'),\n weekdaysMin: '\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,\n isPM: function (input) {\n return input === '\u179b\u17d2\u1784\u17b6\u1785';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u1796\u17d2\u179a\u17b9\u1780';\n } else {\n return '\u179b\u17d2\u1784\u17b6\u1785';\n }\n },\n calendar: {\n sameDay: '[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT',\n nextDay: '[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT',\n nextWeek: 'dddd [\u1798\u17c9\u17c4\u1784] LT',\n lastDay: '[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT',\n lastWeek: 'dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s\u1791\u17c0\u178f',\n past: '%s\u1798\u17bb\u1793',\n s: '\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8',\n ss: '%d \u179c\u17b7\u1793\u17b6\u1791\u17b8',\n m: '\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8',\n mm: '%d \u1793\u17b6\u1791\u17b8',\n h: '\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784',\n hh: '%d \u1798\u17c9\u17c4\u1784',\n d: '\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3',\n dd: '%d \u1790\u17d2\u1784\u17c3',\n M: '\u1798\u17bd\u1799\u1781\u17c2',\n MM: '%d \u1781\u17c2',\n y: '\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6',\n yy: '%d \u1786\u17d2\u1793\u17b6\u17c6',\n },\n dayOfMonthOrdinalParse: /\u1791\u17b8\\d{1,2}/,\n ordinal: '\u1791\u17b8%d',\n preparse: function (string) {\n return string.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0ce7',\n 2: '\u0ce8',\n 3: '\u0ce9',\n 4: '\u0cea',\n 5: '\u0ceb',\n 6: '\u0cec',\n 7: '\u0ced',\n 8: '\u0cee',\n 9: '\u0cef',\n 0: '\u0ce6',\n },\n numberMap = {\n '\u0ce7': '1',\n '\u0ce8': '2',\n '\u0ce9': '3',\n '\u0cea': '4',\n '\u0ceb': '5',\n '\u0cec': '6',\n '\u0ced': '7',\n '\u0cee': '8',\n '\u0cef': '9',\n '\u0ce6': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: '\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd'.split(\n '_'\n ),\n monthsShort:\n '\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: '\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0'.split(\n '_'\n ),\n weekdaysShort: '\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf'.split('_'),\n weekdaysMin: '\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[\u0c87\u0c82\u0ca6\u0cc1] LT',\n nextDay: '[\u0ca8\u0cbe\u0cb3\u0cc6] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT',\n lastWeek: '[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0ca8\u0c82\u0ca4\u0cb0',\n past: '%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6',\n s: '\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1',\n ss: '%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1',\n m: '\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7',\n mm: '%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7',\n h: '\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6',\n hh: '%d \u0c97\u0c82\u0c9f\u0cc6',\n d: '\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8',\n dd: '%d \u0ca6\u0cbf\u0ca8',\n M: '\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1',\n MM: '%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1',\n y: '\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7',\n yy: '%d \u0cb5\u0cb0\u0ccd\u0cb7',\n },\n preparse: function (string) {\n return string.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6') {\n return hour;\n } else if (meridiem === '\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === '\u0cb8\u0c82\u0c9c\u0cc6') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf';\n } else if (hour < 10) {\n return '\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6';\n } else if (hour < 17) {\n return '\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8';\n } else if (hour < 20) {\n return '\u0cb8\u0c82\u0c9c\u0cc6';\n } else {\n return '\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\u0ca8\u0cc6\u0cd5)/,\n ordinal: function (number) {\n return number + '\u0ca8\u0cc6\u0cd5';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4'.split('_'),\n monthsShort: '1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4'.split(\n '_'\n ),\n weekdays: '\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c'.split('_'),\n weekdaysShort: '\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0'.split('_'),\n weekdaysMin: '\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY\ub144 MMMM D\uc77c',\n LLL: 'YYYY\ub144 MMMM D\uc77c A h:mm',\n LLLL: 'YYYY\ub144 MMMM D\uc77c dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY\ub144 MMMM D\uc77c',\n lll: 'YYYY\ub144 MMMM D\uc77c A h:mm',\n llll: 'YYYY\ub144 MMMM D\uc77c dddd A h:mm',\n },\n calendar: {\n sameDay: '\uc624\ub298 LT',\n nextDay: '\ub0b4\uc77c LT',\n nextWeek: 'dddd LT',\n lastDay: '\uc5b4\uc81c LT',\n lastWeek: '\uc9c0\ub09c\uc8fc dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \ud6c4',\n past: '%s \uc804',\n s: '\uba87 \ucd08',\n ss: '%d\ucd08',\n m: '1\ubd84',\n mm: '%d\ubd84',\n h: '\ud55c \uc2dc\uac04',\n hh: '%d\uc2dc\uac04',\n d: '\ud558\ub8e8',\n dd: '%d\uc77c',\n M: '\ud55c \ub2ec',\n MM: '%d\ub2ec',\n y: '\uc77c \ub144',\n yy: '%d\ub144',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '\uc77c';\n case 'M':\n return number + '\uc6d4';\n case 'w':\n case 'W':\n return number + '\uc8fc';\n default:\n return number;\n }\n },\n meridiemParse: /\uc624\uc804|\uc624\ud6c4/,\n isPM: function (token) {\n return token === '\uc624\ud6c4';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '\uc624\uc804' : '\uc624\ud6c4';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0661',\n 2: '\u0662',\n 3: '\u0663',\n 4: '\u0664',\n 5: '\u0665',\n 6: '\u0666',\n 7: '\u0667',\n 8: '\u0668',\n 9: '\u0669',\n 0: '\u0660',\n },\n numberMap = {\n '\u0661': '1',\n '\u0662': '2',\n '\u0663': '3',\n '\u0664': '4',\n '\u0665': '5',\n '\u0666': '6',\n '\u0667': '7',\n '\u0668': '8',\n '\u0669': '9',\n '\u0660': '0',\n },\n months = [\n '\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645',\n '\u0634\u0648\u0628\u0627\u062a',\n '\u0626\u0627\u0632\u0627\u0631',\n '\u0646\u06cc\u0633\u0627\u0646',\n '\u0626\u0627\u06cc\u0627\u0631',\n '\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646',\n '\u062a\u06d5\u0645\u0645\u0648\u0632',\n '\u0626\u0627\u0628',\n '\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644',\n '\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645',\n '\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645',\n '\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n '\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c'.split(\n '_'\n ),\n weekdaysShort:\n '\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c'.split('_'),\n weekdaysMin: '\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,\n isPM: function (input) {\n return /\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc';\n } else {\n return '\u0626\u06ce\u0648\u0627\u0631\u0647\u200c';\n }\n },\n calendar: {\n sameDay: '[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT',\n nextDay: '[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT',\n nextWeek: 'dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT',\n lastDay: '[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT',\n lastWeek: 'dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0644\u0647\u200c %s',\n past: '%s',\n s: '\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643',\n ss: '\u0686\u0631\u0643\u0647\u200c %d',\n m: '\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643',\n mm: '%d \u062e\u0648\u0644\u0647\u200c\u0643',\n h: '\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631',\n hh: '%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631',\n d: '\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698',\n dd: '%d \u0695\u06c6\u0698',\n M: '\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af',\n MM: '%d \u0645\u0627\u0646\u06af',\n y: '\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5',\n yy: '%d \u0633\u0627\u06b5',\n },\n preparse: function (string) {\n return string\n .replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g, function (match) {\n return numberMap[match];\n })\n .replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '\u060c');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-\u0447\u04af',\n 1: '-\u0447\u0438',\n 2: '-\u0447\u0438',\n 3: '-\u0447\u04af',\n 4: '-\u0447\u04af',\n 5: '-\u0447\u0438',\n 6: '-\u0447\u044b',\n 7: '-\u0447\u0438',\n 8: '-\u0447\u0438',\n 9: '-\u0447\u0443',\n 10: '-\u0447\u0443',\n 20: '-\u0447\u044b',\n 30: '-\u0447\u0443',\n 40: '-\u0447\u044b',\n 50: '-\u0447\u04af',\n 60: '-\u0447\u044b',\n 70: '-\u0447\u0438',\n 80: '-\u0447\u0438',\n 90: '-\u0447\u0443',\n 100: '-\u0447\u04af',\n };\n\n var ky = moment.defineLocale('ky', {\n months: '\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c'.split(\n '_'\n ),\n monthsShort: '\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a'.split(\n '_'\n ),\n weekdays: '\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438'.split(\n '_'\n ),\n weekdaysShort: '\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435'.split('_'),\n weekdaysMin: '\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT',\n nextDay: '[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT',\n nextWeek: 'dddd [\u0441\u0430\u0430\u0442] LT',\n lastDay: '[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT',\n lastWeek: '[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0438\u0447\u0438\u043d\u0434\u0435',\n past: '%s \u043c\u0443\u0440\u0443\u043d',\n s: '\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434',\n ss: '%d \u0441\u0435\u043a\u0443\u043d\u0434',\n m: '\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442',\n mm: '%d \u043c\u04af\u043d\u04e9\u0442',\n h: '\u0431\u0438\u0440 \u0441\u0430\u0430\u0442',\n hh: '%d \u0441\u0430\u0430\u0442',\n d: '\u0431\u0438\u0440 \u043a\u04af\u043d',\n dd: '%d \u043a\u04af\u043d',\n M: '\u0431\u0438\u0440 \u0430\u0439',\n MM: '%d \u0430\u0439',\n y: '\u0431\u0438\u0440 \u0436\u044b\u043b',\n yy: '%d \u0436\u044b\u043b',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_M\u00e4erz_Abr\u00ebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_M\u00e9indeg_D\u00ebnschdeg_M\u00ebttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._M\u00e9._D\u00eb._M\u00eb._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_M\u00e9_D\u00eb_M\u00eb_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[G\u00ebschter um] LT',\n lastWeek: function () {\n // Different date string for 'D\u00ebnschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d M\u00e9int',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: '\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2'.split(\n '_'\n ),\n monthsShort:\n '\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2'.split(\n '_'\n ),\n weekdays: '\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2'.split('_'),\n weekdaysShort: '\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2'.split('_'),\n weekdaysMin: '\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: '\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,\n isPM: function (input) {\n return input === '\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2';\n } else {\n return '\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87';\n }\n },\n calendar: {\n sameDay: '[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT',\n nextDay: '[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT',\n nextWeek: '[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT',\n lastDay: '[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT',\n lastWeek: '[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0ead\u0eb5\u0e81 %s',\n past: '%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2',\n s: '\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5',\n ss: '%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5',\n m: '1 \u0e99\u0eb2\u0e97\u0eb5',\n mm: '%d \u0e99\u0eb2\u0e97\u0eb5',\n h: '1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87',\n hh: '%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87',\n d: '1 \u0ea1\u0eb7\u0ec9',\n dd: '%d \u0ea1\u0eb7\u0ec9',\n M: '1 \u0ec0\u0e94\u0eb7\u0ead\u0e99',\n MM: '%d \u0ec0\u0e94\u0eb7\u0ead\u0e99',\n y: '1 \u0e9b\u0eb5',\n yy: '%d \u0e9b\u0eb5',\n },\n dayOfMonthOrdinalParse: /(\u0e97\u0eb5\u0ec8)\\d{1,2}/,\n ordinal: function (number) {\n return '\u0e97\u0eb5\u0ec8' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Moz\u016bras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekund\u0117_sekund\u017ei\u0173_sekundes',\n m: 'minut\u0117_minut\u0117s_minut\u0119',\n mm: 'minut\u0117s_minu\u010di\u0173_minutes',\n h: 'valanda_valandos_valand\u0105',\n hh: 'valandos_valand\u0173_valandas',\n d: 'diena_dienos_dien\u0105',\n dd: 'dienos_dien\u0173_dienas',\n M: 'm\u0117nuo_m\u0117nesio_m\u0117nes\u012f',\n MM: 'm\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius',\n y: 'metai_met\u0173_metus',\n yy: 'metai_met\u0173_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekund\u0117s';\n } else {\n return isFuture ? 'keli\u0173 sekund\u017ei\u0173' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_\u0160'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[\u0160iandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Pra\u0117jus\u012f] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prie\u0161 %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : J\u0101nis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekund\u0113m_sekunde_sekundes'.split('_'),\n m: 'min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes'.split('_'),\n mm: 'min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes'.split('_'),\n h: 'stundas_stund\u0101m_stunda_stundas'.split('_'),\n hh: 'stundas_stund\u0101m_stunda_stundas'.split('_'),\n d: 'dienas_dien\u0101m_diena_dienas'.split('_'),\n dd: 'dienas_dien\u0101m_diena_dienas'.split('_'),\n M: 'm\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i'.split('_'),\n MM: 'm\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 min\u016bte\", \"3 min\u016btes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 min\u016btes\" as in \"p\u0113c 21 min\u016btes\".\n // E.g. \"3 min\u016bt\u0113m\" as in \"p\u0113c 3 min\u016bt\u0113m\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'da\u017eas sekundes' : 'da\u017e\u0101m sekund\u0113m';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[\u0160odien pulksten] LT',\n nextDay: '[R\u012bt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'p\u0113c %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nika\u010d <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._\u010det._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_\u010de_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[ju\u010de u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[pro\u0161le] [nedjelje] [u] LT',\n '[pro\u0161log] [ponedjeljka] [u] LT',\n '[pro\u0161log] [utorka] [u] LT',\n '[pro\u0161le] [srijede] [u] LT',\n '[pro\u0161log] [\u010detvrtka] [u] LT',\n '[pro\u0161log] [petka] [u] LT',\n '[pro\u0161le] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei'.split('_'),\n weekdaysShort: 'Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101'.split('_'),\n weekdaysMin: 'Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te h\u0113kona ruarua',\n ss: '%d h\u0113kona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: '\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438'.split(\n '_'\n ),\n monthsShort: '\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a'.split('_'),\n weekdays: '\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430'.split(\n '_'\n ),\n weekdaysShort: '\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431'.split('_'),\n weekdaysMin: '\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT',\n nextDay: '[\u0423\u0442\u0440\u0435 \u0432\u043e] LT',\n nextWeek: '[\u0412\u043e] dddd [\u0432\u043e] LT',\n lastDay: '[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0437\u0430 %s',\n past: '\u043f\u0440\u0435\u0434 %s',\n s: '\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438',\n ss: '%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438',\n m: '\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430',\n mm: '%d \u043c\u0438\u043d\u0443\u0442\u0438',\n h: '\u0435\u0434\u0435\u043d \u0447\u0430\u0441',\n hh: '%d \u0447\u0430\u0441\u0430',\n d: '\u0435\u0434\u0435\u043d \u0434\u0435\u043d',\n dd: '%d \u0434\u0435\u043d\u0430',\n M: '\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446',\n MM: '%d \u043c\u0435\u0441\u0435\u0446\u0438',\n y: '\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430',\n yy: '%d \u0433\u043e\u0434\u0438\u043d\u0438',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-\u0435\u0432';\n } else if (last2Digits === 0) {\n return number + '-\u0435\u043d';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-\u0442\u0438';\n } else if (lastDigit === 1) {\n return number + '-\u0432\u0438';\n } else if (lastDigit === 2) {\n return number + '-\u0440\u0438';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-\u043c\u0438';\n } else {\n return number + '-\u0442\u0438';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: '\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c'.split(\n '_'\n ),\n monthsShort:\n '\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n '\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a'.split(\n '_'\n ),\n weekdaysShort: '\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f'.split('_'),\n weekdaysMin: '\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -\u0d28\u0d41',\n LTS: 'A h:mm:ss -\u0d28\u0d41',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -\u0d28\u0d41',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41',\n },\n calendar: {\n sameDay: '[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT',\n nextDay: '[\u0d28\u0d3e\u0d33\u0d46] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT',\n lastWeek: '[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d',\n past: '%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d',\n s: '\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e',\n ss: '%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d',\n m: '\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d',\n mm: '%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d',\n h: '\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c',\n hh: '%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c',\n d: '\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02',\n dd: '%d \u0d26\u0d3f\u0d35\u0d38\u0d02',\n M: '\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02',\n MM: '%d \u0d2e\u0d3e\u0d38\u0d02',\n y: '\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02',\n yy: '%d \u0d35\u0d7c\u0d37\u0d02',\n },\n meridiemParse: /\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === '\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f' && hour >= 4) ||\n meridiem === '\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d' ||\n meridiem === '\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f';\n } else if (hour < 12) {\n return '\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46';\n } else if (hour < 17) {\n return '\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d';\n } else if (hour < 20) {\n return '\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02';\n } else {\n return '\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? '\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434' : '\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d';\n case 'ss':\n return number + (withoutSuffix ? ' \u0441\u0435\u043a\u0443\u043d\u0434' : ' \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' \u043c\u0438\u043d\u0443\u0442' : ' \u043c\u0438\u043d\u0443\u0442\u044b\u043d');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' \u0446\u0430\u0433' : ' \u0446\u0430\u0433\u0438\u0439\u043d');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' \u04e9\u0434\u04e9\u0440' : ' \u04e9\u0434\u0440\u0438\u0439\u043d');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' \u0441\u0430\u0440' : ' \u0441\u0430\u0440\u044b\u043d');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' \u0436\u0438\u043b' : ' \u0436\u0438\u043b\u0438\u0439\u043d');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: '\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440'.split(\n '_'\n ),\n monthsShort:\n '1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: '\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430'.split('_'),\n weekdaysShort: '\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c'.split('_'),\n weekdaysMin: '\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY \u043e\u043d\u044b MMMM\u044b\u043d D',\n LLL: 'YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm',\n LLLL: 'dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm',\n },\n meridiemParse: /\u04ae\u04e8|\u04ae\u0425/i,\n isPM: function (input) {\n return input === '\u04ae\u0425';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u04ae\u04e8';\n } else {\n return '\u04ae\u0425';\n }\n },\n calendar: {\n sameDay: '[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT',\n nextDay: '[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT',\n nextWeek: '[\u0418\u0440\u044d\u0445] dddd LT',\n lastDay: '[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT',\n lastWeek: '[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0434\u0430\u0440\u0430\u0430',\n past: '%s \u04e9\u043c\u043d\u04e9',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} \u04e9\u0434\u04e9\u0440/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' \u04e9\u0434\u04e9\u0440';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0967',\n 2: '\u0968',\n 3: '\u0969',\n 4: '\u096a',\n 5: '\u096b',\n 6: '\u096c',\n 7: '\u096d',\n 8: '\u096e',\n 9: '\u096f',\n 0: '\u0966',\n },\n numberMap = {\n '\u0967': '1',\n '\u0968': '2',\n '\u0969': '3',\n '\u096a': '4',\n '\u096b': '5',\n '\u096c': '6',\n '\u096d': '7',\n '\u096e': '8',\n '\u096f': '9',\n '\u0966': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = '\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926';\n break;\n case 'ss':\n output = '%d \u0938\u0947\u0915\u0902\u0926';\n break;\n case 'm':\n output = '\u090f\u0915 \u092e\u093f\u0928\u093f\u091f';\n break;\n case 'mm':\n output = '%d \u092e\u093f\u0928\u093f\u091f\u0947';\n break;\n case 'h':\n output = '\u090f\u0915 \u0924\u093e\u0938';\n break;\n case 'hh':\n output = '%d \u0924\u093e\u0938';\n break;\n case 'd':\n output = '\u090f\u0915 \u0926\u093f\u0935\u0938';\n break;\n case 'dd':\n output = '%d \u0926\u093f\u0935\u0938';\n break;\n case 'M':\n output = '\u090f\u0915 \u092e\u0939\u093f\u0928\u093e';\n break;\n case 'MM':\n output = '%d \u092e\u0939\u093f\u0928\u0947';\n break;\n case 'y':\n output = '\u090f\u0915 \u0935\u0930\u094d\u0937';\n break;\n case 'yy':\n output = '%d \u0935\u0930\u094d\u0937\u0947';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = '\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902';\n break;\n case 'ss':\n output = '%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902';\n break;\n case 'm':\n output = '\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e';\n break;\n case 'mm':\n output = '%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902';\n break;\n case 'h':\n output = '\u090f\u0915\u093e \u0924\u093e\u0938\u093e';\n break;\n case 'hh':\n output = '%d \u0924\u093e\u0938\u093e\u0902';\n break;\n case 'd':\n output = '\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e';\n break;\n case 'dd':\n output = '%d \u0926\u093f\u0935\u0938\u093e\u0902';\n break;\n case 'M':\n output = '\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e';\n break;\n case 'MM':\n output = '%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902';\n break;\n case 'y':\n output = '\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e';\n break;\n case 'yy':\n output = '%d \u0935\u0930\u094d\u0937\u093e\u0902';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: '\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930'.split(\n '_'\n ),\n monthsShort:\n '\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: '\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930'.split('_'),\n weekdaysShort: '\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f'.split('_'),\n weekdaysMin: '\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936'.split('_'),\n longDateFormat: {\n LT: 'A h:mm \u0935\u093e\u091c\u0924\u093e',\n LTS: 'A h:mm:ss \u0935\u093e\u091c\u0924\u093e',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e',\n LLLL: 'dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e',\n },\n calendar: {\n sameDay: '[\u0906\u091c] LT',\n nextDay: '[\u0909\u0926\u094d\u092f\u093e] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0915\u093e\u0932] LT',\n lastWeek: '[\u092e\u093e\u0917\u0940\u0932] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s\u092e\u0927\u094d\u092f\u0947',\n past: '%s\u092a\u0942\u0930\u094d\u0935\u0940',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u092a\u0939\u093e\u091f\u0947' || meridiem === '\u0938\u0915\u093e\u0933\u0940') {\n return hour;\n } else if (\n meridiem === '\u0926\u0941\u092a\u093e\u0930\u0940' ||\n meridiem === '\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940' ||\n meridiem === '\u0930\u093e\u0924\u094d\u0930\u0940'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return '\u092a\u0939\u093e\u091f\u0947';\n } else if (hour < 12) {\n return '\u0938\u0915\u093e\u0933\u0940';\n } else if (hour < 17) {\n return '\u0926\u0941\u092a\u093e\u0930\u0940';\n } else if (hour < 20) {\n return '\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940';\n } else {\n return '\u0930\u093e\u0924\u094d\u0930\u0940';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b'.split('_'),\n weekdays:\n 'Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: '\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib'.split('_'),\n weekdaysMin: '\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[G\u0127ada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-biera\u0127 fil-]LT',\n lastWeek: 'dddd [li g\u0127adda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f\u2019 %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'sieg\u0127a',\n hh: '%d sieg\u0127at',\n d: '\u0121urnata',\n dd: '%d \u0121ranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u1041',\n 2: '\u1042',\n 3: '\u1043',\n 4: '\u1044',\n 5: '\u1045',\n 6: '\u1046',\n 7: '\u1047',\n 8: '\u1048',\n 9: '\u1049',\n 0: '\u1040',\n },\n numberMap = {\n '\u1041': '1',\n '\u1042': '2',\n '\u1043': '3',\n '\u1044': '4',\n '\u1045': '5',\n '\u1046': '6',\n '\u1047': '7',\n '\u1048': '8',\n '\u1049': '9',\n '\u1040': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: '\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c'.split(\n '_'\n ),\n monthsShort: '\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e'.split('_'),\n weekdays: '\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031'.split(\n '_'\n ),\n weekdaysShort: '\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031'.split('_'),\n weekdaysMin: '\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]',\n nextDay: '[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]',\n nextWeek: 'dddd LT [\u1019\u103e\u102c]',\n lastDay: '[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]',\n lastWeek: '[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c',\n past: '\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000',\n s: '\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a',\n ss: '%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a',\n m: '\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a',\n mm: '%d \u1019\u102d\u1014\u1005\u103a',\n h: '\u1010\u1005\u103a\u1014\u102c\u101b\u102e',\n hh: '%d \u1014\u102c\u101b\u102e',\n d: '\u1010\u1005\u103a\u101b\u1000\u103a',\n dd: '%d \u101b\u1000\u103a',\n M: '\u1010\u1005\u103a\u101c',\n MM: '%d \u101c',\n y: '\u1010\u1005\u103a\u1014\u103e\u1005\u103a',\n yy: '%d \u1014\u103e\u1005\u103a',\n },\n preparse: function (string) {\n return string.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokm\u00e5l [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 's\u00f8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\u00f8rdag'.split('_'),\n weekdaysShort: 's\u00f8._ma._ti._on._to._fr._l\u00f8.'.split('_'),\n weekdaysMin: 's\u00f8_ma_ti_on_to_fr_l\u00f8'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i g\u00e5r kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en m\u00e5ned',\n MM: '%d m\u00e5neder',\n y: 'ett \u00e5r',\n yy: '%d \u00e5r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0967',\n 2: '\u0968',\n 3: '\u0969',\n 4: '\u096a',\n 5: '\u096b',\n 6: '\u096c',\n 7: '\u096d',\n 8: '\u096e',\n 9: '\u096f',\n 0: '\u0966',\n },\n numberMap = {\n '\u0967': '1',\n '\u0968': '2',\n '\u0969': '3',\n '\u096a': '4',\n '\u096b': '5',\n '\u096c': '6',\n '\u096d': '7',\n '\u096e': '8',\n '\u096f': '9',\n '\u0966': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: '\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930'.split(\n '_'\n ),\n monthsShort:\n '\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: '\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930'.split(\n '_'\n ),\n weekdaysShort: '\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.'.split('_'),\n weekdaysMin: '\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A\u0915\u094b h:mm \u092c\u091c\u0947',\n LTS: 'A\u0915\u094b h:mm:ss \u092c\u091c\u0947',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947',\n LLLL: 'dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947',\n },\n preparse: function (string) {\n return string.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0930\u093e\u0924\u093f') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u092c\u093f\u0939\u093e\u0928') {\n return hour;\n } else if (meridiem === '\u0926\u093f\u0909\u0901\u0938\u094b') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === '\u0938\u093e\u0901\u091d') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return '\u0930\u093e\u0924\u093f';\n } else if (hour < 12) {\n return '\u092c\u093f\u0939\u093e\u0928';\n } else if (hour < 16) {\n return '\u0926\u093f\u0909\u0901\u0938\u094b';\n } else if (hour < 20) {\n return '\u0938\u093e\u0901\u091d';\n } else {\n return '\u0930\u093e\u0924\u093f';\n }\n },\n calendar: {\n sameDay: '[\u0906\u091c] LT',\n nextDay: '[\u092d\u094b\u0932\u093f] LT',\n nextWeek: '[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT',\n lastDay: '[\u0939\u093f\u091c\u094b] LT',\n lastWeek: '[\u0917\u090f\u0915\u094b] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s\u092e\u093e',\n past: '%s \u0905\u0917\u093e\u0921\u093f',\n s: '\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923',\n ss: '%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921',\n m: '\u090f\u0915 \u092e\u093f\u0928\u0947\u091f',\n mm: '%d \u092e\u093f\u0928\u0947\u091f',\n h: '\u090f\u0915 \u0918\u0923\u094d\u091f\u093e',\n hh: '%d \u0918\u0923\u094d\u091f\u093e',\n d: '\u090f\u0915 \u0926\u093f\u0928',\n dd: '%d \u0926\u093f\u0928',\n M: '\u090f\u0915 \u092e\u0939\u093f\u0928\u093e',\n MM: '%d \u092e\u0939\u093f\u0928\u093e',\n y: '\u090f\u0915 \u092c\u0930\u094d\u0937',\n yy: '%d \u092c\u0930\u094d\u0937',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris R\u00f6ling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: '\u00e9\u00e9n minuut',\n mm: '%d minuten',\n h: '\u00e9\u00e9n uur',\n hh: '%d uur',\n d: '\u00e9\u00e9n dag',\n dd: '%d dagen',\n M: '\u00e9\u00e9n maand',\n MM: '%d maanden',\n y: '\u00e9\u00e9n jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris R\u00f6ling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: '\u00e9\u00e9n minuut',\n mm: '%d minuten',\n h: '\u00e9\u00e9n uur',\n hh: '%d uur',\n d: '\u00e9\u00e9n dag',\n dd: '%d dagen',\n w: '\u00e9\u00e9n week',\n ww: '%d weken',\n M: '\u00e9\u00e9n maand',\n MM: '%d maanden',\n y: '\u00e9\u00e9n jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_m\u00e5ndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._m\u00e5._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_m\u00e5_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I g\u00e5r klokka] LT',\n lastWeek: '[F\u00f8reg\u00e5ande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein m\u00e5nad',\n MM: '%d m\u00e5nader',\n y: 'eit \u00e5r',\n yy: '%d \u00e5r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAG\u00c8S : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'geni\u00e8r_febri\u00e8r_mar\u00e7_abril_mai_junh_julhet_agost_setembre_oct\u00f2bre_novembre_decembre'.split(\n '_'\n ),\n format: \"de geni\u00e8r_de febri\u00e8r_de mar\u00e7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\u00f2bre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._mar\u00e7_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dim\u00e8cres_dij\u00f2us_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[u\u00e8i a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[i\u00e8r a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aqu\u00ed %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|\u00e8|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : '\u00e8';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0a67',\n 2: '\u0a68',\n 3: '\u0a69',\n 4: '\u0a6a',\n 5: '\u0a6b',\n 6: '\u0a6c',\n 7: '\u0a6d',\n 8: '\u0a6e',\n 9: '\u0a6f',\n 0: '\u0a66',\n },\n numberMap = {\n '\u0a67': '1',\n '\u0a68': '2',\n '\u0a69': '3',\n '\u0a6a': '4',\n '\u0a6b': '5',\n '\u0a6c': '6',\n '\u0a6d': '7',\n '\u0a6e': '8',\n '\u0a6f': '9',\n '\u0a66': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: '\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30'.split(\n '_'\n ),\n monthsShort:\n '\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30'.split(\n '_'\n ),\n weekdays: '\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30'.split(\n '_'\n ),\n weekdaysShort: '\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40'.split('_'),\n weekdaysMin: '\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40'.split('_'),\n longDateFormat: {\n LT: 'A h:mm \u0a35\u0a1c\u0a47',\n LTS: 'A h:mm:ss \u0a35\u0a1c\u0a47',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47',\n LLLL: 'dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47',\n },\n calendar: {\n sameDay: '[\u0a05\u0a1c] LT',\n nextDay: '[\u0a15\u0a32] LT',\n nextWeek: '[\u0a05\u0a17\u0a32\u0a3e] dddd, LT',\n lastDay: '[\u0a15\u0a32] LT',\n lastWeek: '[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0a35\u0a3f\u0a71\u0a1a',\n past: '%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47',\n s: '\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f',\n ss: '%d \u0a38\u0a15\u0a3f\u0a70\u0a1f',\n m: '\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f',\n mm: '%d \u0a2e\u0a3f\u0a70\u0a1f',\n h: '\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e',\n hh: '%d \u0a18\u0a70\u0a1f\u0a47',\n d: '\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28',\n dd: '%d \u0a26\u0a3f\u0a28',\n M: '\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e',\n MM: '%d \u0a2e\u0a39\u0a40\u0a28\u0a47',\n y: '\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32',\n yy: '%d \u0a38\u0a3e\u0a32',\n },\n preparse: function (string) {\n return string.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0a30\u0a3e\u0a24') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u0a38\u0a35\u0a47\u0a30') {\n return hour;\n } else if (meridiem === '\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === '\u0a38\u0a3c\u0a3e\u0a2e') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0a30\u0a3e\u0a24';\n } else if (hour < 10) {\n return '\u0a38\u0a35\u0a47\u0a30';\n } else if (hour < 17) {\n return '\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30';\n } else if (hour < 20) {\n return '\u0a38\u0a3c\u0a3e\u0a2e';\n } else {\n return '\u0a30\u0a3e\u0a24';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^pa\u017a/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minut\u0119';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzin\u0119';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesi\u0105ce' : 'miesi\u0119cy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_\u015br_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_\u015ar_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dzi\u015b o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedziel\u0119 o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W \u015brod\u0119 o] LT';\n\n case 6:\n return '[W sobot\u0119 o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zesz\u0142\u0105 niedziel\u0119 o] LT';\n case 3:\n return '[W zesz\u0142\u0105 \u015brod\u0119 o] LT';\n case 6:\n return '[W zesz\u0142\u0105 sobot\u0119 o] LT';\n default:\n return '[W zesz\u0142y] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzie\u0144',\n dd: '%d dni',\n w: 'tydzie\u0144',\n ww: translate,\n M: 'miesi\u0105c',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_mar\u00e7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_ter\u00e7a-feira_quarta-feira_quinta-feira_sexta-feira_s\u00e1bado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_s\u00e1b'.split('_'),\n weekdaysMin: 'do_2\u00aa_3\u00aa_4\u00aa_5\u00aa_6\u00aa_s\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [\u00e0s] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [\u00e0s] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje \u00e0s] LT',\n nextDay: '[Amanh\u00e3 \u00e0s] LT',\n nextWeek: 'dddd [\u00e0s] LT',\n lastDay: '[Ontem \u00e0s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[\u00daltimo] dddd [\u00e0s] LT' // Saturday + Sunday\n : '[\u00daltima] dddd [\u00e0s] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'h\u00e1 %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um m\u00eas',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n invalidDate: 'Data inv\u00e1lida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_mar\u00e7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Ter\u00e7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\u00e1bado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_S\u00e1b'.split('_'),\n weekdaysMin: 'Do_2\u00aa_3\u00aa_4\u00aa_5\u00aa_6\u00aa_S\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje \u00e0s] LT',\n nextDay: '[Amanh\u00e3 \u00e0s] LT',\n nextWeek: 'dddd [\u00e0s] LT',\n lastDay: '[Ontem \u00e0s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[\u00daltimo] dddd [\u00e0s] LT' // Saturday + Sunday\n : '[\u00daltima] dddd [\u00e0s] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'h\u00e1 %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um m\u00eas',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u00ba/,\n ordinal: '%d\u00ba',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 's\u0103pt\u0103m\u00e2ni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\u00e2mb\u0103t\u0103'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_S\u00e2m'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_S\u00e2'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[m\u00e2ine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s \u00een urm\u0103',\n s: 'c\u00e2teva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o or\u0103',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o s\u0103pt\u0103m\u00e2n\u0103',\n ww: relativeTimeWithPlural,\n M: 'o lun\u0103',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elens\u00fale : https://github.com/Oire\n//! author : \u041a\u043e\u0440\u0435\u043d\u0431\u0435\u0440\u0433 \u041c\u0430\u0440\u043a : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? '\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434' : '\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434',\n mm: withoutSuffix ? '\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442' : '\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442',\n hh: '\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432',\n dd: '\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439',\n ww: '\u043d\u0435\u0434\u0435\u043b\u044f_\u043d\u0435\u0434\u0435\u043b\u0438_\u043d\u0435\u0434\u0435\u043b\u044c',\n MM: '\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432',\n yy: '\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442',\n };\n if (key === 'm') {\n return withoutSuffix ? '\u043c\u0438\u043d\u0443\u0442\u0430' : '\u043c\u0438\u043d\u0443\u0442\u0443';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^\u044f\u043d\u0432/i,\n /^\u0444\u0435\u0432/i,\n /^\u043c\u0430\u0440/i,\n /^\u0430\u043f\u0440/i,\n /^\u043c\u0430[\u0439\u044f]/i,\n /^\u0438\u044e\u043d/i,\n /^\u0438\u044e\u043b/i,\n /^\u0430\u0432\u0433/i,\n /^\u0441\u0435\u043d/i,\n /^\u043e\u043a\u0442/i,\n /^\u043d\u043e\u044f/i,\n /^\u0434\u0435\u043a/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : \u00a7 103\n // \u0421\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043c\u0435\u0441\u044f\u0446\u0435\u0432: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: '\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f'.split(\n '_'\n ),\n standalone:\n '\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c'.split(\n '_'\n ),\n },\n monthsShort: {\n // \u043f\u043e CLDR \u0438\u043c\u0435\u043d\u043d\u043e \"\u0438\u044e\u043b.\" \u0438 \"\u0438\u044e\u043d.\", \u043d\u043e \u043a\u0430\u043a\u043e\u0439 \u0441\u043c\u044b\u0441\u043b \u043c\u0435\u043d\u044f\u0442\u044c \u0431\u0443\u043a\u0432\u0443 \u043d\u0430 \u0442\u043e\u0447\u043a\u0443?\n format: '\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.'.split(\n '_'\n ),\n standalone:\n '\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n '\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430'.split(\n '_'\n ),\n format: '\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443'.split(\n '_'\n ),\n isFormat: /\\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/,\n },\n weekdaysShort: '\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431'.split('_'),\n weekdaysMin: '\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // \u043f\u043e\u043b\u043d\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u0430\u0434\u0435\u0436\u0430\u043c\u0438, \u043f\u043e \u0442\u0440\u0438 \u0431\u0443\u043a\u0432\u044b, \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u043f\u043e 4 \u0431\u0443\u043a\u0432\u044b, \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0441 \u0442\u043e\u0447\u043a\u043e\u0439 \u0438 \u0431\u0435\u0437 \u0442\u043e\u0447\u043a\u0438\n monthsRegex:\n /^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\\.?)/i,\n\n // \u043a\u043e\u043f\u0438\u044f \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e\n monthsShortRegex:\n /^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\\.?)/i,\n\n // \u043f\u043e\u043b\u043d\u044b\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u0430\u0434\u0435\u0436\u0430\u043c\u0438\n monthsStrictRegex:\n /^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,\n\n // \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0451\u043d\u043d\u044b\u043c \u0444\u043e\u0440\u043c\u0430\u043c\n monthsShortStrictRegex:\n /^(\u044f\u043d\u0432\\.|\u0444\u0435\u0432\u0440?\\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\\.|\u0441\u0435\u043d\u0442?\\.|\u043e\u043a\u0442\\.|\u043d\u043e\u044f\u0431?\\.|\u0434\u0435\u043a\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY \u0433.',\n LLL: 'D MMMM YYYY \u0433., H:mm',\n LLLL: 'dddd, D MMMM YYYY \u0433., H:mm',\n },\n calendar: {\n sameDay: '[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT',\n nextDay: '[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT',\n lastDay: '[\u0412\u0447\u0435\u0440\u0430, \u0432] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT';\n case 1:\n case 2:\n case 4:\n return '[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT';\n case 3:\n case 5:\n case 6:\n return '[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[\u0412\u043e] dddd, [\u0432] LT';\n } else {\n return '[\u0412] dddd, [\u0432] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT';\n case 1:\n case 2:\n case 4:\n return '[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT';\n case 3:\n case 5:\n case 6:\n return '[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[\u0412\u043e] dddd, [\u0432] LT';\n } else {\n return '[\u0412] dddd, [\u0432] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0447\u0435\u0440\u0435\u0437 %s',\n past: '%s \u043d\u0430\u0437\u0430\u0434',\n s: '\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: '\u0447\u0430\u0441',\n hh: relativeTimeWithPlural,\n d: '\u0434\u0435\u043d\u044c',\n dd: relativeTimeWithPlural,\n w: '\u043d\u0435\u0434\u0435\u043b\u044f',\n ww: relativeTimeWithPlural,\n M: '\u043c\u0435\u0441\u044f\u0446',\n MM: relativeTimeWithPlural,\n y: '\u0433\u043e\u0434',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,\n isPM: function (input) {\n return /^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u043d\u043e\u0447\u0438';\n } else if (hour < 12) {\n return '\u0443\u0442\u0440\u0430';\n } else if (hour < 17) {\n return '\u0434\u043d\u044f';\n } else {\n return '\u0432\u0435\u0447\u0435\u0440\u0430';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-\u0439';\n case 'D':\n return number + '-\u0433\u043e';\n case 'w':\n case 'W':\n return number + '-\u044f';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n '\u062c\u0646\u0648\u0631\u064a',\n '\u0641\u064a\u0628\u0631\u0648\u0631\u064a',\n '\u0645\u0627\u0631\u0686',\n '\u0627\u067e\u0631\u064a\u0644',\n '\u0645\u0626\u064a',\n '\u062c\u0648\u0646',\n '\u062c\u0648\u0644\u0627\u0621\u0650',\n '\u0622\u06af\u0633\u067d',\n '\u0633\u064a\u067e\u067d\u0645\u0628\u0631',\n '\u0622\u06aa\u067d\u0648\u0628\u0631',\n '\u0646\u0648\u0645\u0628\u0631',\n '\u068a\u0633\u0645\u0628\u0631',\n ],\n days = ['\u0622\u0686\u0631', '\u0633\u0648\u0645\u0631', '\u0627\u06b1\u0627\u0631\u0648', '\u0627\u0631\u0628\u0639', '\u062e\u0645\u064a\u0633', '\u062c\u0645\u0639', '\u0687\u0646\u0687\u0631'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd\u060c D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0635\u0628\u062d|\u0634\u0627\u0645/,\n isPM: function (input) {\n return '\u0634\u0627\u0645' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0635\u0628\u062d';\n }\n return '\u0634\u0627\u0645';\n },\n calendar: {\n sameDay: '[\u0627\u0684] LT',\n nextDay: '[\u0633\u0680\u0627\u06bb\u064a] LT',\n nextWeek: 'dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT',\n lastDay: '[\u06aa\u0627\u0644\u0647\u0647] LT',\n lastWeek: '[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u067e\u0648\u0621',\n past: '%s \u0627\u06b3',\n s: '\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a',\n ss: '%d \u0633\u064a\u06aa\u0646\u068a',\n m: '\u0647\u06aa \u0645\u0646\u067d',\n mm: '%d \u0645\u0646\u067d',\n h: '\u0647\u06aa \u06aa\u0644\u0627\u06aa',\n hh: '%d \u06aa\u0644\u0627\u06aa',\n d: '\u0647\u06aa \u068f\u064a\u0646\u0647\u0646',\n dd: '%d \u068f\u064a\u0646\u0647\u0646',\n M: '\u0647\u06aa \u0645\u0647\u064a\u0646\u0648',\n MM: '%d \u0645\u0647\u064a\u0646\u0627',\n y: '\u0647\u06aa \u0633\u0627\u0644',\n yy: '%d \u0633\u0627\u0644',\n },\n preparse: function (string) {\n return string.replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '\u060c');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : B\u00e5rd Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'o\u0111\u0111ajagem\u00e1nnu_guovvam\u00e1nnu_njuk\u010dam\u00e1nnu_cuo\u014bom\u00e1nnu_miessem\u00e1nnu_geassem\u00e1nnu_suoidnem\u00e1nnu_borgem\u00e1nnu_\u010dak\u010dam\u00e1nnu_golggotm\u00e1nnu_sk\u00e1bmam\u00e1nnu_juovlam\u00e1nnu'.split(\n '_'\n ),\n monthsShort:\n 'o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\u00e1b_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuoss\u00e1rga_ma\u014b\u014beb\u00e1rga_gaskavahkku_duorastat_bearjadat_l\u00e1vvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_ma\u014b_gask_duor_bear_l\u00e1v'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s gea\u017ees',\n past: 'ma\u014bit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta m\u00e1nnu',\n MM: '%d m\u00e1nut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: '\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca'.split(\n '_'\n ),\n monthsShort: '\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0'.split(\n '_'\n ),\n weekdays:\n '\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf'.split(\n '_'\n ),\n weekdaysShort: '\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1'.split('_'),\n weekdaysMin: '\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[\u0d85\u0daf] LT[\u0da7]',\n nextDay: '[\u0dc4\u0dd9\u0da7] LT[\u0da7]',\n nextWeek: 'dddd LT[\u0da7]',\n lastDay: '[\u0d8a\u0dba\u0dda] LT[\u0da7]',\n lastWeek: '[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s\u0d9a\u0dd2\u0db1\u0dca',\n past: '%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb',\n s: '\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba',\n ss: '\u0dad\u0dad\u0dca\u0db4\u0dbb %d',\n m: '\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0',\n mm: '\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d',\n h: '\u0db4\u0dd0\u0dba',\n hh: '\u0db4\u0dd0\u0dba %d',\n d: '\u0daf\u0dd2\u0db1\u0dba',\n dd: '\u0daf\u0dd2\u0db1 %d',\n M: '\u0db8\u0dcf\u0dc3\u0dba',\n MM: '\u0db8\u0dcf\u0dc3 %d',\n y: '\u0dc0\u0dc3\u0dbb',\n yy: '\u0dc0\u0dc3\u0dbb %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,\n ordinal: function (number) {\n return number + ' \u0dc0\u0dd0\u0db1\u0dd2';\n },\n meridiemParse: /\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,\n isPM: function (input) {\n return input === '\u0db4.\u0dc0.' || input === '\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? '\u0db4.\u0dc0.' : '\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4';\n } else {\n return isLower ? '\u0db4\u0dd9.\u0dc0.' : '\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'janu\u00e1r_febru\u00e1r_marec_apr\u00edl_m\u00e1j_j\u00fan_j\u00fal_august_september_okt\u00f3ber_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_m\u00e1j_j\u00fan_j\u00fal_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'p\u00e1r sek\u00fand' : 'p\u00e1r sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sek\u00fand');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'min\u00fata' : isFuture ? 'min\u00fatu' : 'min\u00fatou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'min\u00faty' : 'min\u00fat');\n } else {\n return result + 'min\u00fatami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hod\u00edn');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'de\u0148' : 'd\u0148om';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dn\u00ed');\n } else {\n return result + 'd\u0148ami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_\u0161t_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_\u0161t_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nede\u013eu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo \u0161tvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[v\u010dera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minul\u00fa nede\u013eu o] LT';\n case 1:\n case 2:\n return '[minul\u00fd] dddd [o] LT';\n case 3:\n return '[minul\u00fa stredu o] LT';\n case 4:\n case 5:\n return '[minul\u00fd] dddd [o] LT';\n case 6:\n return '[minul\u00fa sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedov\u0161ek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._\u010det._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_\u010de_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[v\u010deraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prej\u0161njo] [nedeljo] [ob] LT';\n case 3:\n return '[prej\u0161njo] [sredo] [ob] LT';\n case 6:\n return '[prej\u0161njo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prej\u0161nji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u010dez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flak\u00ebrim Ismani : https://github.com/flakerimi\n//! author : Menelion Elens\u00fale : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\u00ebntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\u00ebn_Dhj'.split('_'),\n weekdays: 'E Diel_E H\u00ebn\u00eb_E Mart\u00eb_E M\u00ebrkur\u00eb_E Enjte_E Premte_E Shtun\u00eb'.split(\n '_'\n ),\n weekdaysShort: 'Die_H\u00ebn_Mar_M\u00ebr_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_M\u00eb_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot n\u00eb] LT',\n nextDay: '[Nes\u00ebr n\u00eb] LT',\n nextWeek: 'dddd [n\u00eb] LT',\n lastDay: '[Dje n\u00eb] LT',\n lastWeek: 'dddd [e kaluar n\u00eb] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'n\u00eb %s',\n past: '%s m\u00eb par\u00eb',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'nj\u00eb minut\u00eb',\n mm: '%d minuta',\n h: 'nj\u00eb or\u00eb',\n hh: '%d or\u00eb',\n d: 'nj\u00eb dit\u00eb',\n dd: '%d dit\u00eb',\n M: 'nj\u00eb muaj',\n MM: '%d muaj',\n y: 'nj\u00eb vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Jana\u010dkovi\u0107<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjakovi\u0107 <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['\u0441\u0435\u043a\u0443\u043d\u0434\u0430', '\u0441\u0435\u043a\u0443\u043d\u0434\u0435', '\u0441\u0435\u043a\u0443\u043d\u0434\u0438'],\n m: ['\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442', '\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0438\u043d\u0443\u0442\u0430'],\n mm: ['\u043c\u0438\u043d\u0443\u0442', '\u043c\u0438\u043d\u0443\u0442\u0430', '\u043c\u0438\u043d\u0443\u0442\u0430'],\n h: ['\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442', '\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430'],\n hh: ['\u0441\u0430\u0442', '\u0441\u0430\u0442\u0430', '\u0441\u0430\u0442\u0438'],\n d: ['\u0458\u0435\u0434\u0430\u043d \u0434\u0430\u043d', '\u0458\u0435\u0434\u043d\u043e\u0433 \u0434\u0430\u043d\u0430'],\n dd: ['\u0434\u0430\u043d', '\u0434\u0430\u043d\u0430', '\u0434\u0430\u043d\u0430'],\n M: ['\u0458\u0435\u0434\u0430\u043d \u043c\u0435\u0441\u0435\u0446', '\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0435\u0441\u0435\u0446\u0430'],\n MM: ['\u043c\u0435\u0441\u0435\u0446', '\u043c\u0435\u0441\u0435\u0446\u0430', '\u043c\u0435\u0441\u0435\u0446\u0438'],\n y: ['\u0458\u0435\u0434\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443', '\u0458\u0435\u0434\u043d\u0435 \u0433\u043e\u0434\u0438\u043d\u0435'],\n yy: ['\u0433\u043e\u0434\u0438\u043d\u0443', '\u0433\u043e\u0434\u0438\u043d\u0435', '\u0433\u043e\u0434\u0438\u043d\u0430'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return '\u0458\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === '\u0433\u043e\u0434\u0438\u043d\u0443') {\n return number + ' \u0433\u043e\u0434\u0438\u043d\u0430';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: '\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440'.split(\n '_'\n ),\n monthsShort:\n '\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.'.split('_'),\n monthsParseExact: true,\n weekdays: '\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430'.split('_'),\n weekdaysShort: '\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.'.split('_'),\n weekdaysMin: '\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[\u0434\u0430\u043d\u0430\u0441 \u0443] LT',\n nextDay: '[\u0441\u0443\u0442\u0440\u0430 \u0443] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT';\n case 3:\n return '[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT';\n case 6:\n return '[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[\u0443] dddd [\u0443] LT';\n }\n },\n lastDay: '[\u0458\u0443\u0447\u0435 \u0443] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT',\n '[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT',\n '[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT',\n '[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT',\n '[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT',\n '[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT',\n '[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0437\u0430 %s',\n past: '\u043f\u0440\u0435 %s',\n s: '\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Jana\u010dkovi\u0107<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjakovi\u0107 <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._\u010det._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_\u010de_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[ju\u010de u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[pro\u0161le] [nedelje] [u] LT',\n '[pro\u0161log] [ponedeljka] [u] LT',\n '[pro\u0161log] [utorka] [u] LT',\n '[pro\u0161le] [srede] [u] LT',\n '[pro\u0161log] [\u010detvrtka] [u] LT',\n '[pro\u0161log] [petka] [u] LT',\n '[pro\u0161le] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 's\u00f6ndag_m\u00e5ndag_tisdag_onsdag_torsdag_fredag_l\u00f6rdag'.split('_'),\n weekdaysShort: 's\u00f6n_m\u00e5n_tis_ons_tor_fre_l\u00f6r'.split('_'),\n weekdaysMin: 's\u00f6_m\u00e5_ti_on_to_fr_l\u00f6'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Ig\u00e5r] LT',\n nextWeek: '[P\u00e5] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'f\u00f6r %s sedan',\n s: 'n\u00e5gra sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en m\u00e5nad',\n MM: '%d m\u00e5nader',\n y: 'ett \u00e5r',\n yy: '%d \u00e5r',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '\u0be7',\n 2: '\u0be8',\n 3: '\u0be9',\n 4: '\u0bea',\n 5: '\u0beb',\n 6: '\u0bec',\n 7: '\u0bed',\n 8: '\u0bee',\n 9: '\u0bef',\n 0: '\u0be6',\n },\n numberMap = {\n '\u0be7': '1',\n '\u0be8': '2',\n '\u0be9': '3',\n '\u0bea': '4',\n '\u0beb': '5',\n '\u0bec': '6',\n '\u0bed': '7',\n '\u0bee': '8',\n '\u0bef': '9',\n '\u0be6': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: '\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd'.split(\n '_'\n ),\n monthsShort:\n '\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd'.split(\n '_'\n ),\n weekdays:\n '\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8'.split(\n '_'\n ),\n weekdaysShort: '\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf'.split(\n '_'\n ),\n weekdaysMin: '\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT',\n nextDay: '[\u0ba8\u0bbe\u0bb3\u0bc8] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT',\n lastWeek: '[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0b87\u0bb2\u0bcd',\n past: '%s \u0bae\u0bc1\u0ba9\u0bcd',\n s: '\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd',\n ss: '%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd',\n m: '\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd',\n mm: '%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd',\n h: '\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd',\n hh: '%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd',\n d: '\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd',\n dd: '%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd',\n M: '\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd',\n MM: '%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd',\n y: '\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd',\n yy: '%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u0bb5\u0ba4\u0bc1/,\n ordinal: function (number) {\n return number + '\u0bb5\u0ba4\u0bc1';\n },\n preparse: function (string) {\n return string.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' \u0baf\u0bbe\u0bae\u0bae\u0bcd';\n } else if (hour < 6) {\n return ' \u0bb5\u0bc8\u0b95\u0bb1\u0bc8'; // \u0bb5\u0bc8\u0b95\u0bb1\u0bc8\n } else if (hour < 10) {\n return ' \u0b95\u0bbe\u0bb2\u0bc8'; // \u0b95\u0bbe\u0bb2\u0bc8\n } else if (hour < 14) {\n return ' \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd'; // \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd\n } else if (hour < 18) {\n return ' \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1'; // \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1\n } else if (hour < 22) {\n return ' \u0bae\u0bbe\u0bb2\u0bc8'; // \u0bae\u0bbe\u0bb2\u0bc8\n } else {\n return ' \u0baf\u0bbe\u0bae\u0bae\u0bcd';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0baf\u0bbe\u0bae\u0bae\u0bcd') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === '\u0bb5\u0bc8\u0b95\u0bb1\u0bc8' || meridiem === '\u0b95\u0bbe\u0bb2\u0bc8') {\n return hour;\n } else if (meridiem === '\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: '\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d'.split(\n '_'\n ),\n monthsShort:\n '\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n '\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02'.split(\n '_'\n ),\n weekdaysShort: '\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f'.split('_'),\n weekdaysMin: '\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[\u0c28\u0c47\u0c21\u0c41] LT',\n nextDay: '[\u0c30\u0c47\u0c2a\u0c41] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT',\n lastWeek: '[\u0c17\u0c24] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0c32\u0c4b',\n past: '%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02',\n s: '\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41',\n ss: '%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41',\n m: '\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02',\n mm: '%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41',\n h: '\u0c12\u0c15 \u0c17\u0c02\u0c1f',\n hh: '%d \u0c17\u0c02\u0c1f\u0c32\u0c41',\n d: '\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41',\n dd: '%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41',\n M: '\u0c12\u0c15 \u0c28\u0c46\u0c32',\n MM: '%d \u0c28\u0c46\u0c32\u0c32\u0c41',\n y: '\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02',\n yy: '%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\u0c35/,\n ordinal: '%d\u0c35',\n meridiemParse: /\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u0c09\u0c26\u0c2f\u0c02') {\n return hour;\n } else if (meridiem === '\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === '\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f';\n } else if (hour < 10) {\n return '\u0c09\u0c26\u0c2f\u0c02';\n } else if (hour < 17) {\n return '\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02';\n } else if (hour < 20) {\n return '\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02';\n } else {\n return '\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\u00f1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-\u0443\u043c',\n 1: '-\u0443\u043c',\n 2: '-\u044e\u043c',\n 3: '-\u044e\u043c',\n 4: '-\u0443\u043c',\n 5: '-\u0443\u043c',\n 6: '-\u0443\u043c',\n 7: '-\u0443\u043c',\n 8: '-\u0443\u043c',\n 9: '-\u0443\u043c',\n 10: '-\u0443\u043c',\n 12: '-\u0443\u043c',\n 13: '-\u0443\u043c',\n 20: '-\u0443\u043c',\n 30: '-\u044e\u043c',\n 40: '-\u0443\u043c',\n 50: '-\u0443\u043c',\n 60: '-\u0443\u043c',\n 70: '-\u0443\u043c',\n 80: '-\u0443\u043c',\n 90: '-\u0443\u043c',\n 100: '-\u0443\u043c',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: '\u044f\u043d\u0432\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0430\u043b\u0438_\u043c\u0430\u0440\u0442\u0438_\u0430\u043f\u0440\u0435\u043b\u0438_\u043c\u0430\u0439\u0438_\u0438\u044e\u043d\u0438_\u0438\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442\u0438_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0438_\u043e\u043a\u0442\u044f\u0431\u0440\u0438_\u043d\u043e\u044f\u0431\u0440\u0438_\u0434\u0435\u043a\u0430\u0431\u0440\u0438'.split(\n '_'\n ),\n standalone:\n '\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440'.split(\n '_'\n ),\n },\n monthsShort: '\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a'.split('_'),\n weekdays: '\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435'.split(\n '_'\n ),\n weekdaysShort: '\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431'.split('_'),\n weekdaysMin: '\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT',\n nextDay: '[\u0424\u0430\u0440\u0434\u043e \u0441\u043e\u0430\u0442\u0438] LT',\n lastDay: '[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT',\n nextWeek: 'dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT',\n lastWeek: 'dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0431\u0430\u044a\u0434\u0438 %s',\n past: '%s \u043f\u0435\u0448',\n s: '\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f',\n m: '\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430',\n mm: '%d \u0434\u0430\u049b\u0438\u049b\u0430',\n h: '\u044f\u043a \u0441\u043e\u0430\u0442',\n hh: '%d \u0441\u043e\u0430\u0442',\n d: '\u044f\u043a \u0440\u04ef\u0437',\n dd: '%d \u0440\u04ef\u0437',\n M: '\u044f\u043a \u043c\u043e\u04b3',\n MM: '%d \u043c\u043e\u04b3',\n y: '\u044f\u043a \u0441\u043e\u043b',\n yy: '%d \u0441\u043e\u043b',\n },\n meridiemParse: /\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u0448\u0430\u0431') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === '\u0441\u0443\u0431\u04b3') {\n return hour;\n } else if (meridiem === '\u0440\u04ef\u0437') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '\u0431\u0435\u0433\u043e\u04b3') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u0448\u0430\u0431';\n } else if (hour < 11) {\n return '\u0441\u0443\u0431\u04b3';\n } else if (hour < 16) {\n return '\u0440\u04ef\u0437';\n } else if (hour < 19) {\n return '\u0431\u0435\u0433\u043e\u04b3';\n } else {\n return '\u0448\u0430\u0431';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0443\u043c|\u044e\u043c)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: '\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21'.split(\n '_'\n ),\n monthsShort:\n '\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: '\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c'.split('_'),\n weekdaysShort: '\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c'.split('_'), // yes, three characters difference\n weekdaysMin: '\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm',\n LLLL: '\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm',\n },\n meridiemParse: /\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,\n isPM: function (input) {\n return input === '\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07';\n } else {\n return '\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07';\n }\n },\n calendar: {\n sameDay: '[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT',\n nextDay: '[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT',\n nextWeek: 'dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT',\n lastDay: '[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT',\n lastWeek: '[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0e2d\u0e35\u0e01 %s',\n past: '%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27',\n s: '\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35',\n ss: '%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35',\n m: '1 \u0e19\u0e32\u0e17\u0e35',\n mm: '%d \u0e19\u0e32\u0e17\u0e35',\n h: '1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07',\n hh: '%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07',\n d: '1 \u0e27\u0e31\u0e19',\n dd: '%d \u0e27\u0e31\u0e19',\n w: '1 \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c',\n ww: '%d \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c',\n M: '1 \u0e40\u0e14\u0e37\u0e2d\u0e19',\n MM: '%d \u0e40\u0e14\u0e37\u0e2d\u0e19',\n y: '1 \u0e1b\u0e35',\n yy: '%d \u0e1b\u0e35',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'\u00fcnji\",\n 4: \"'\u00fcnji\",\n 100: \"'\u00fcnji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: '\u00ddanwar_Fewral_Mart_Aprel_Ma\u00fd_I\u00fdun_I\u00fdul_Awgust_Sent\u00fdabr_Okt\u00fdabr_No\u00fdabr_Dekabr'.split(\n '_'\n ),\n monthsShort: '\u00ddan_Few_Mar_Apr_Ma\u00fd_I\u00fdn_I\u00fdl_Awg_Sen_Okt_No\u00fd_Dek'.split('_'),\n weekdays: '\u00ddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\u00c7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe'.split(\n '_'\n ),\n weekdaysShort: '\u00ddek_Du\u015f_Si\u015f_\u00c7ar_Pen_Ann_\u015een'.split('_'),\n weekdaysMin: '\u00ddk_D\u015f_S\u015f_\u00c7r_Pn_An_\u015en'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bug\u00fcn sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[d\u00fc\u00fdn] LT',\n lastWeek: '[ge\u00e7en] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s so\u0148',\n past: '%s \u00f6\u0148',\n s: 'birn\u00e4\u00e7e sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir g\u00fcn',\n dd: '%d g\u00fcn',\n M: 'bir a\u00fd',\n MM: '%d a\u00fd',\n y: 'bir \u00fdyl',\n yy: '%d \u00fdyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu\u2019'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019'.split(\n '_'\n ),\n monthsShort:\n 'jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa\u2019leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa\u2019Hu\u2019] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa\u2019 tup',\n mm: translate,\n h: 'wa\u2019 rep',\n hh: translate,\n d: 'wa\u2019 jaj',\n dd: translate,\n M: 'wa\u2019 jar',\n MM: translate,\n y: 'wa\u2019 DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yi\u011fit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'\u00fcnc\u00fc\",\n 4: \"'\u00fcnc\u00fc\",\n 100: \"'\u00fcnc\u00fc\",\n 6: \"'nc\u0131\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'\u0131nc\u0131\",\n 90: \"'\u0131nc\u0131\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\u00fcl_Ekim_Kas\u0131m_Aral\u0131k'.split(\n '_'\n ),\n monthsShort: 'Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Sal\u0131_\u00c7ar\u015famba_Per\u015fembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_\u00c7ar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_\u00c7a_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? '\u00f6\u00f6' : '\u00d6\u00d6';\n } else {\n return isLower ? '\u00f6s' : '\u00d6S';\n }\n },\n meridiemParse: /\u00f6\u00f6|\u00d6\u00d6|\u00f6s|\u00d6S/,\n isPM: function (input) {\n return input === '\u00f6s' || input === '\u00d6S';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bug\u00fcn saat] LT',\n nextDay: '[yar\u0131n saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[d\u00fcn] LT',\n lastWeek: '[ge\u00e7en] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s \u00f6nce',\n s: 'birka\u00e7 saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir g\u00fcn',\n dd: '%d g\u00fcn',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir y\u0131l',\n yy: '%d y\u0131l',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'\u0131nc\u0131\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iust\u00ec Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Mar\u00e7_Avr\u00efu_Mai_G\u00fcn_Julia_Guscht_Setemvar_Listop\u00e4ts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_G\u00fcn_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'S\u00faladi_L\u00fane\u00e7i_Maitzi_M\u00e1rcuri_Xh\u00faadi_Vi\u00e9ner\u00e7i_S\u00e1turi'.split('_'),\n weekdaysShort: 'S\u00fal_L\u00fan_Mai_M\u00e1r_Xh\u00fa_Vi\u00e9_S\u00e1t'.split('_'),\n weekdaysMin: 'S\u00fa_L\u00fa_Ma_M\u00e1_Xh_Vi_S\u00e1'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi \u00e0] LT',\n nextDay: '[dem\u00e0 \u00e0] LT',\n nextWeek: 'dddd [\u00e0] LT',\n lastDay: '[ieiri \u00e0] LT',\n lastWeek: '[s\u00fcr el] dddd [lasteu \u00e0] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n m\u00edut\", \"'iens m\u00edut\"],\n mm: [number + ' m\u00eduts', '' + number + ' m\u00eduts'],\n h: [\"'n \u00feora\", \"'iensa \u00feora\"],\n hh: [number + ' \u00feoras', '' + number + ' \u00feoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minu\u1e0d',\n mm: '%d minu\u1e0d',\n h: 'sa\u025ba',\n hh: '%d tassa\u025bin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: '\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54'.split(\n '_'\n ),\n monthsShort:\n '\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54'.split(\n '_'\n ),\n weekdays: '\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59'.split('_'),\n weekdaysShort: '\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59'.split('_'),\n weekdaysMin: '\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT',\n nextDay: '[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT',\n nextWeek: 'dddd [\u2d34] LT',\n lastDay: '[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT',\n lastWeek: 'dddd [\u2d34] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s',\n past: '\u2d62\u2d30\u2d4f %s',\n s: '\u2d49\u2d4e\u2d49\u2d3d',\n ss: '%d \u2d49\u2d4e\u2d49\u2d3d',\n m: '\u2d4e\u2d49\u2d4f\u2d53\u2d3a',\n mm: '%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a',\n h: '\u2d59\u2d30\u2d44\u2d30',\n hh: '%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f',\n d: '\u2d30\u2d59\u2d59',\n dd: '%d o\u2d59\u2d59\u2d30\u2d4f',\n M: '\u2d30\u2d62o\u2d53\u2d54',\n MM: '%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f',\n y: '\u2d30\u2d59\u2d33\u2d30\u2d59',\n yy: '%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: '\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631'.split(\n '_'\n ),\n monthsShort:\n '\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631'.split(\n '_'\n ),\n weekdays: '\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5'.split(\n '_'\n ),\n weekdaysShort: '\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5'.split('_'),\n weekdaysMin: '\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649',\n LLL: 'YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm',\n LLLL: 'dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm',\n },\n meridiemParse: /\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === '\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5' ||\n meridiem === '\u0633\u06d5\u06be\u06d5\u0631' ||\n meridiem === '\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646'\n ) {\n return hour;\n } else if (meridiem === '\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646' || meridiem === '\u0643\u06d5\u0686') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5';\n } else if (hm < 900) {\n return '\u0633\u06d5\u06be\u06d5\u0631';\n } else if (hm < 1130) {\n return '\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646';\n } else if (hm < 1230) {\n return '\u0686\u06c8\u0634';\n } else if (hm < 1800) {\n return '\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646';\n } else {\n return '\u0643\u06d5\u0686';\n }\n },\n calendar: {\n sameDay: '[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT',\n nextDay: '[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT',\n nextWeek: '[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT',\n lastDay: '[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT',\n lastWeek: '[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0643\u06d0\u064a\u0649\u0646',\n past: '%s \u0628\u06c7\u0631\u06c7\u0646',\n s: '\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a',\n ss: '%d \u0633\u06d0\u0643\u0648\u0646\u062a',\n m: '\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a',\n mm: '%d \u0645\u0649\u0646\u06c7\u062a',\n h: '\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a',\n hh: '%d \u0633\u0627\u0626\u06d5\u062a',\n d: '\u0628\u0649\u0631 \u0643\u06c8\u0646',\n dd: '%d \u0643\u06c8\u0646',\n M: '\u0628\u0649\u0631 \u0626\u0627\u064a',\n MM: '%d \u0626\u0627\u064a',\n y: '\u0628\u0649\u0631 \u064a\u0649\u0644',\n yy: '%d \u064a\u0649\u0644',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-\u0643\u06c8\u0646\u0649';\n case 'w':\n case 'W':\n return number + '-\u06be\u06d5\u067e\u062a\u06d5';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '\u060c');\n },\n week: {\n // GB/T 7408-1994\u300a\u6570\u636e\u5143\u548c\u4ea4\u6362\u683c\u5f0f\u00b7\u4fe1\u606f\u4ea4\u6362\u00b7\u65e5\u671f\u548c\u65f6\u95f4\u8868\u793a\u6cd5\u300b\u4e0eISO 8601:1988\u7b49\u6548\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elens\u00fale : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? '\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434' : '\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434',\n mm: withoutSuffix ? '\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d' : '\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d',\n hh: withoutSuffix ? '\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d' : '\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d',\n dd: '\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432',\n MM: '\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432',\n yy: '\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432',\n };\n if (key === 'm') {\n return withoutSuffix ? '\u0445\u0432\u0438\u043b\u0438\u043d\u0430' : '\u0445\u0432\u0438\u043b\u0438\u043d\u0443';\n } else if (key === 'h') {\n return withoutSuffix ? '\u0433\u043e\u0434\u0438\u043d\u0430' : '\u0433\u043e\u0434\u0438\u043d\u0443';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n '\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430'.split(\n '_'\n ),\n accusative:\n '\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443'.split(\n '_'\n ),\n genitive:\n '\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[\u0412\u0432\u0423\u0443]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + '\u043e' + (this.hours() === 11 ? '\u0431' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: '\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f'.split(\n '_'\n ),\n standalone:\n '\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c'.split(\n '_'\n ),\n },\n monthsShort: '\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: '\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431'.split('_'),\n weekdaysMin: '\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY \u0440.',\n LLL: 'D MMMM YYYY \u0440., HH:mm',\n LLLL: 'dddd, D MMMM YYYY \u0440., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 '),\n nextDay: processHoursFunction('[\u0417\u0430\u0432\u0442\u0440\u0430 '),\n lastDay: processHoursFunction('[\u0412\u0447\u043e\u0440\u0430 '),\n nextWeek: processHoursFunction('[\u0423] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u0437\u0430 %s',\n past: '%s \u0442\u043e\u043c\u0443',\n s: '\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: '\u0433\u043e\u0434\u0438\u043d\u0443',\n hh: relativeTimeWithPlural,\n d: '\u0434\u0435\u043d\u044c',\n dd: relativeTimeWithPlural,\n M: '\u043c\u0456\u0441\u044f\u0446\u044c',\n MM: relativeTimeWithPlural,\n y: '\u0440\u0456\u043a',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,\n isPM: function (input) {\n return /^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return '\u043d\u043e\u0447\u0456';\n } else if (hour < 12) {\n return '\u0440\u0430\u043d\u043a\u0443';\n } else if (hour < 17) {\n return '\u0434\u043d\u044f';\n } else {\n return '\u0432\u0435\u0447\u043e\u0440\u0430';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(\u0439|\u0433\u043e)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-\u0439';\n case 'D':\n return number + '-\u0433\u043e';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n '\u062c\u0646\u0648\u0631\u06cc',\n '\u0641\u0631\u0648\u0631\u06cc',\n '\u0645\u0627\u0631\u0686',\n '\u0627\u067e\u0631\u06cc\u0644',\n '\u0645\u0626\u06cc',\n '\u062c\u0648\u0646',\n '\u062c\u0648\u0644\u0627\u0626\u06cc',\n '\u0627\u06af\u0633\u062a',\n '\u0633\u062a\u0645\u0628\u0631',\n '\u0627\u06a9\u062a\u0648\u0628\u0631',\n '\u0646\u0648\u0645\u0628\u0631',\n '\u062f\u0633\u0645\u0628\u0631',\n ],\n days = ['\u0627\u062a\u0648\u0627\u0631', '\u067e\u06cc\u0631', '\u0645\u0646\u06af\u0644', '\u0628\u062f\u06be', '\u062c\u0645\u0639\u0631\u0627\u062a', '\u062c\u0645\u0639\u06c1', '\u06c1\u0641\u062a\u06c1'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd\u060c D MMMM YYYY HH:mm',\n },\n meridiemParse: /\u0635\u0628\u062d|\u0634\u0627\u0645/,\n isPM: function (input) {\n return '\u0634\u0627\u0645' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '\u0635\u0628\u062d';\n }\n return '\u0634\u0627\u0645';\n },\n calendar: {\n sameDay: '[\u0622\u062c \u0628\u0648\u0642\u062a] LT',\n nextDay: '[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT',\n nextWeek: 'dddd [\u0628\u0648\u0642\u062a] LT',\n lastDay: '[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT',\n lastWeek: '[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s \u0628\u0639\u062f',\n past: '%s \u0642\u0628\u0644',\n s: '\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688',\n ss: '%d \u0633\u06cc\u06a9\u0646\u0688',\n m: '\u0627\u06cc\u06a9 \u0645\u0646\u0679',\n mm: '%d \u0645\u0646\u0679',\n h: '\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1',\n hh: '%d \u06af\u06be\u0646\u0679\u06d2',\n d: '\u0627\u06cc\u06a9 \u062f\u0646',\n dd: '%d \u062f\u0646',\n M: '\u0627\u06cc\u06a9 \u0645\u0627\u06c1',\n MM: '%d \u0645\u0627\u06c1',\n y: '\u0627\u06cc\u06a9 \u0633\u0627\u0644',\n yy: '%d \u0633\u0627\u0644',\n },\n preparse: function (string) {\n return string.replace(/\u060c/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '\u060c');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: '\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440'.split(\n '_'\n ),\n monthsShort: '\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a'.split('_'),\n weekdays: '\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430'.split('_'),\n weekdaysShort: '\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d'.split('_'),\n weekdaysMin: '\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]',\n nextDay: '[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]',\n nextWeek: 'dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]',\n lastDay: '[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]',\n lastWeek: '[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430',\n past: '\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d',\n s: '\u0444\u0443\u0440\u0441\u0430\u0442',\n ss: '%d \u0444\u0443\u0440\u0441\u0430\u0442',\n m: '\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430',\n mm: '%d \u0434\u0430\u043a\u0438\u043a\u0430',\n h: '\u0431\u0438\u0440 \u0441\u043e\u0430\u0442',\n hh: '%d \u0441\u043e\u0430\u0442',\n d: '\u0431\u0438\u0440 \u043a\u0443\u043d',\n dd: '%d \u043a\u0443\u043d',\n M: '\u0431\u0438\u0440 \u043e\u0439',\n MM: '%d \u043e\u0439',\n y: '\u0431\u0438\u0440 \u0439\u0438\u043b',\n yy: '%d \u0439\u0438\u043b',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'th\u00e1ng 1_th\u00e1ng 2_th\u00e1ng 3_th\u00e1ng 4_th\u00e1ng 5_th\u00e1ng 6_th\u00e1ng 7_th\u00e1ng 8_th\u00e1ng 9_th\u00e1ng 10_th\u00e1ng 11_th\u00e1ng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\u00e1u_th\u1ee9 b\u1ea3y'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [n\u0103m] YYYY',\n LLL: 'D MMMM [n\u0103m] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [n\u0103m] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[H\u00f4m nay l\u00fac] LT',\n nextDay: '[Ng\u00e0y mai l\u00fac] LT',\n nextWeek: 'dddd [tu\u1ea7n t\u1edbi l\u00fac] LT',\n lastDay: '[H\u00f4m qua l\u00fac] LT',\n lastWeek: 'dddd [tu\u1ea7n tr\u01b0\u1edbc l\u00fac] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s t\u1edbi',\n past: '%s tr\u01b0\u1edbc',\n s: 'v\u00e0i gi\u00e2y',\n ss: '%d gi\u00e2y',\n m: 'm\u1ed9t ph\u00fat',\n mm: '%d ph\u00fat',\n h: 'm\u1ed9t gi\u1edd',\n hh: '%d gi\u1edd',\n d: 'm\u1ed9t ng\u00e0y',\n dd: '%d ng\u00e0y',\n w: 'm\u1ed9t tu\u1ea7n',\n ww: '%d tu\u1ea7n',\n M: 'm\u1ed9t th\u00e1ng',\n MM: '%d th\u00e1ng',\n y: 'm\u1ed9t n\u0103m',\n yy: '%d n\u0103m',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~\u00e1\u00f1\u00fa\u00e1~r\u00fd_F~\u00e9br\u00fa~\u00e1r\u00fd_~M\u00e1rc~h_\u00c1p~r\u00edl_~M\u00e1\u00fd_~J\u00fa\u00f1\u00e9~_J\u00fal~\u00fd_\u00c1\u00fa~g\u00fast~_S\u00e9p~t\u00e9mb~\u00e9r_\u00d3~ct\u00f3b~\u00e9r_\u00d1~\u00f3v\u00e9m~b\u00e9r_~D\u00e9c\u00e9~mb\u00e9r'.split(\n '_'\n ),\n monthsShort:\n 'J~\u00e1\u00f1_~F\u00e9b_~M\u00e1r_~\u00c1pr_~M\u00e1\u00fd_~J\u00fa\u00f1_~J\u00fal_~\u00c1\u00fag_~S\u00e9p_~\u00d3ct_~\u00d1\u00f3v_~D\u00e9c'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~\u00fa\u00f1d\u00e1~\u00fd_M\u00f3~\u00f1d\u00e1\u00fd~_T\u00fa\u00e9~sd\u00e1\u00fd~_W\u00e9d~\u00f1\u00e9sd~\u00e1\u00fd_T~h\u00fars~d\u00e1\u00fd_~Fr\u00edd~\u00e1\u00fd_S~\u00e1t\u00far~d\u00e1\u00fd'.split(\n '_'\n ),\n weekdaysShort: 'S~\u00fa\u00f1_~M\u00f3\u00f1_~T\u00fa\u00e9_~W\u00e9d_~Th\u00fa_~Fr\u00ed_~S\u00e1t'.split('_'),\n weekdaysMin: 'S~\u00fa_M\u00f3~_T\u00fa_~W\u00e9_T~h_Fr~_S\u00e1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~\u00f3d\u00e1~\u00fd \u00e1t] LT',\n nextDay: '[T~\u00f3m\u00f3~rr\u00f3~w \u00e1t] LT',\n nextWeek: 'dddd [\u00e1t] LT',\n lastDay: '[\u00dd~\u00e9st~\u00e9rd\u00e1~\u00fd \u00e1t] LT',\n lastWeek: '[L~\u00e1st] dddd [\u00e1t] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '\u00ed~\u00f1 %s',\n past: '%s \u00e1~g\u00f3',\n s: '\u00e1 ~f\u00e9w ~s\u00e9c\u00f3~\u00f1ds',\n ss: '%d s~\u00e9c\u00f3\u00f1~ds',\n m: '\u00e1 ~m\u00ed\u00f1~\u00fat\u00e9',\n mm: '%d m~\u00ed\u00f1\u00fa~t\u00e9s',\n h: '\u00e1~\u00f1 h\u00f3~\u00far',\n hh: '%d h~\u00f3\u00fars',\n d: '\u00e1 ~d\u00e1\u00fd',\n dd: '%d d~\u00e1\u00fds',\n M: '\u00e1 ~m\u00f3\u00f1~th',\n MM: '%d m~\u00f3\u00f1t~hs',\n y: '\u00e1 ~\u00fd\u00e9\u00e1r',\n yy: '%d \u00fd~\u00e9\u00e1rs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300'.split(\n '_'\n ),\n monthsShort: 'S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300'.split('_'),\n weekdays: 'A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta'.split('_'),\n weekdaysShort: 'A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301'.split('_'),\n weekdaysMin: 'A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[O\u0300ni\u0300 ni] LT',\n nextDay: '[\u1ecc\u0300la ni] LT',\n nextWeek: \"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT\",\n lastDay: '[A\u0300na ni] LT',\n lastWeek: 'dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ni\u0301 %s',\n past: '%s k\u1ecdja\u0301',\n s: 'i\u0300s\u1eb9ju\u0301 aaya\u0301 die',\n ss: 'aaya\u0301 %d',\n m: 'i\u0300s\u1eb9ju\u0301 kan',\n mm: 'i\u0300s\u1eb9ju\u0301 %d',\n h: 'wa\u0301kati kan',\n hh: 'wa\u0301kati %d',\n d: '\u1ecdj\u1ecd\u0301 kan',\n dd: '\u1ecdj\u1ecd\u0301 %d',\n M: 'osu\u0300 kan',\n MM: 'osu\u0300 %d',\n y: '\u1ecddu\u0301n kan',\n yy: '\u1ecddu\u0301n %d',\n },\n dayOfMonthOrdinalParse: /\u1ecdj\u1ecd\u0301\\s\\d{1,2}/,\n ordinal: '\u1ecdj\u1ecd\u0301 %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708'.split(\n '_'\n ),\n monthsShort: '1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708'.split(\n '_'\n ),\n weekdays: '\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d'.split('_'),\n weekdaysShort: '\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d'.split('_'),\n weekdaysMin: '\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY\u5e74M\u6708D\u65e5',\n LLL: 'YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206',\n LLLL: 'YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206',\n l: 'YYYY/M/D',\n ll: 'YYYY\u5e74M\u6708D\u65e5',\n lll: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n llll: 'YYYY\u5e74M\u6708D\u65e5dddd HH:mm',\n },\n meridiemParse: /\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u51cc\u6668' || meridiem === '\u65e9\u4e0a' || meridiem === '\u4e0a\u5348') {\n return hour;\n } else if (meridiem === '\u4e0b\u5348' || meridiem === '\u665a\u4e0a') {\n return hour + 12;\n } else {\n // '\u4e2d\u5348'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '\u51cc\u6668';\n } else if (hm < 900) {\n return '\u65e9\u4e0a';\n } else if (hm < 1130) {\n return '\u4e0a\u5348';\n } else if (hm < 1230) {\n return '\u4e2d\u5348';\n } else if (hm < 1800) {\n return '\u4e0b\u5348';\n } else {\n return '\u665a\u4e0a';\n }\n },\n calendar: {\n sameDay: '[\u4eca\u5929]LT',\n nextDay: '[\u660e\u5929]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[\u4e0b]dddLT';\n } else {\n return '[\u672c]dddLT';\n }\n },\n lastDay: '[\u6628\u5929]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[\u4e0a]dddLT';\n } else {\n return '[\u672c]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\u65e5|\u6708|\u5468)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '\u65e5';\n case 'M':\n return number + '\u6708';\n case 'w':\n case 'W':\n return number + '\u5468';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s\u540e',\n past: '%s\u524d',\n s: '\u51e0\u79d2',\n ss: '%d \u79d2',\n m: '1 \u5206\u949f',\n mm: '%d \u5206\u949f',\n h: '1 \u5c0f\u65f6',\n hh: '%d \u5c0f\u65f6',\n d: '1 \u5929',\n dd: '%d \u5929',\n w: '1 \u5468',\n ww: '%d \u5468',\n M: '1 \u4e2a\u6708',\n MM: '%d \u4e2a\u6708',\n y: '1 \u5e74',\n yy: '%d \u5e74',\n },\n week: {\n // GB/T 7408-1994\u300a\u6570\u636e\u5143\u548c\u4ea4\u6362\u683c\u5f0f\u00b7\u4fe1\u606f\u4ea4\u6362\u00b7\u65e5\u671f\u548c\u65f6\u95f4\u8868\u793a\u6cd5\u300b\u4e0eISO 8601:1988\u7b49\u6548\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708'.split(\n '_'\n ),\n monthsShort: '1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708'.split(\n '_'\n ),\n weekdays: '\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d'.split('_'),\n weekdaysShort: '\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d'.split('_'),\n weekdaysMin: '\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY\u5e74M\u6708D\u65e5',\n LLL: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n LLLL: 'YYYY\u5e74M\u6708D\u65e5dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY\u5e74M\u6708D\u65e5',\n lll: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n llll: 'YYYY\u5e74M\u6708D\u65e5dddd HH:mm',\n },\n meridiemParse: /\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u51cc\u6668' || meridiem === '\u65e9\u4e0a' || meridiem === '\u4e0a\u5348') {\n return hour;\n } else if (meridiem === '\u4e2d\u5348') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '\u4e0b\u5348' || meridiem === '\u665a\u4e0a') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '\u51cc\u6668';\n } else if (hm < 900) {\n return '\u65e9\u4e0a';\n } else if (hm < 1200) {\n return '\u4e0a\u5348';\n } else if (hm === 1200) {\n return '\u4e2d\u5348';\n } else if (hm < 1800) {\n return '\u4e0b\u5348';\n } else {\n return '\u665a\u4e0a';\n }\n },\n calendar: {\n sameDay: '[\u4eca\u5929]LT',\n nextDay: '[\u660e\u5929]LT',\n nextWeek: '[\u4e0b]ddddLT',\n lastDay: '[\u6628\u5929]LT',\n lastWeek: '[\u4e0a]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\u65e5|\u6708|\u9031)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '\u65e5';\n case 'M':\n return number + '\u6708';\n case 'w':\n case 'W':\n return number + '\u9031';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s\u5f8c',\n past: '%s\u524d',\n s: '\u5e7e\u79d2',\n ss: '%d \u79d2',\n m: '1 \u5206\u9418',\n mm: '%d \u5206\u9418',\n h: '1 \u5c0f\u6642',\n hh: '%d \u5c0f\u6642',\n d: '1 \u5929',\n dd: '%d \u5929',\n M: '1 \u500b\u6708',\n MM: '%d \u500b\u6708',\n y: '1 \u5e74',\n yy: '%d \u5e74',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708'.split(\n '_'\n ),\n monthsShort: '1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708'.split(\n '_'\n ),\n weekdays: '\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d'.split('_'),\n weekdaysShort: '\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d'.split('_'),\n weekdaysMin: '\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY\u5e74M\u6708D\u65e5',\n LLL: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n LLLL: 'YYYY\u5e74M\u6708D\u65e5dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY\u5e74M\u6708D\u65e5',\n lll: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n llll: 'YYYY\u5e74M\u6708D\u65e5dddd HH:mm',\n },\n meridiemParse: /\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u51cc\u6668' || meridiem === '\u65e9\u4e0a' || meridiem === '\u4e0a\u5348') {\n return hour;\n } else if (meridiem === '\u4e2d\u5348') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '\u4e0b\u5348' || meridiem === '\u665a\u4e0a') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '\u51cc\u6668';\n } else if (hm < 900) {\n return '\u65e9\u4e0a';\n } else if (hm < 1130) {\n return '\u4e0a\u5348';\n } else if (hm < 1230) {\n return '\u4e2d\u5348';\n } else if (hm < 1800) {\n return '\u4e0b\u5348';\n } else {\n return '\u665a\u4e0a';\n }\n },\n calendar: {\n sameDay: '[\u4eca\u5929] LT',\n nextDay: '[\u660e\u5929] LT',\n nextWeek: '[\u4e0b]dddd LT',\n lastDay: '[\u6628\u5929] LT',\n lastWeek: '[\u4e0a]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\u65e5|\u6708|\u9031)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '\u65e5';\n case 'M':\n return number + '\u6708';\n case 'w':\n case 'W':\n return number + '\u9031';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s\u5167',\n past: '%s\u524d',\n s: '\u5e7e\u79d2',\n ss: '%d \u79d2',\n m: '1 \u5206\u9418',\n mm: '%d \u5206\u9418',\n h: '1 \u5c0f\u6642',\n hh: '%d \u5c0f\u6642',\n d: '1 \u5929',\n dd: '%d \u5929',\n M: '1 \u500b\u6708',\n MM: '%d \u500b\u6708',\n y: '1 \u5e74',\n yy: '%d \u5e74',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708'.split(\n '_'\n ),\n monthsShort: '1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708'.split(\n '_'\n ),\n weekdays: '\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d'.split('_'),\n weekdaysShort: '\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d'.split('_'),\n weekdaysMin: '\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY\u5e74M\u6708D\u65e5',\n LLL: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n LLLL: 'YYYY\u5e74M\u6708D\u65e5dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY\u5e74M\u6708D\u65e5',\n lll: 'YYYY\u5e74M\u6708D\u65e5 HH:mm',\n llll: 'YYYY\u5e74M\u6708D\u65e5dddd HH:mm',\n },\n meridiemParse: /\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '\u51cc\u6668' || meridiem === '\u65e9\u4e0a' || meridiem === '\u4e0a\u5348') {\n return hour;\n } else if (meridiem === '\u4e2d\u5348') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '\u4e0b\u5348' || meridiem === '\u665a\u4e0a') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '\u51cc\u6668';\n } else if (hm < 900) {\n return '\u65e9\u4e0a';\n } else if (hm < 1130) {\n return '\u4e0a\u5348';\n } else if (hm < 1230) {\n return '\u4e2d\u5348';\n } else if (hm < 1800) {\n return '\u4e0b\u5348';\n } else {\n return '\u665a\u4e0a';\n }\n },\n calendar: {\n sameDay: '[\u4eca\u5929] LT',\n nextDay: '[\u660e\u5929] LT',\n nextWeek: '[\u4e0b]dddd LT',\n lastDay: '[\u6628\u5929] LT',\n lastWeek: '[\u4e0a]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\u65e5|\u6708|\u9031)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '\u65e5';\n case 'M':\n return number + '\u6708';\n case 'w':\n case 'W':\n return number + '\u9031';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s\u5f8c',\n past: '%s\u524d',\n s: '\u5e7e\u79d2',\n ss: '%d \u79d2',\n m: '1 \u5206\u9418',\n mm: '%d \u5206\u9418',\n h: '1 \u5c0f\u6642',\n hh: '%d \u5c0f\u6642',\n d: '1 \u5929',\n dd: '%d \u5929',\n M: '1 \u500b\u6708',\n MM: '%d \u500b\u6708',\n y: '1 \u5e74',\n yy: '%d \u5e74',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","var map = {\n\t\"./af\": 5902,\n\t\"./af.js\": 5902,\n\t\"./ar\": 9547,\n\t\"./ar-dz\": 4344,\n\t\"./ar-dz.js\": 4344,\n\t\"./ar-kw\": 941,\n\t\"./ar-kw.js\": 941,\n\t\"./ar-ly\": 5650,\n\t\"./ar-ly.js\": 5650,\n\t\"./ar-ma\": 2717,\n\t\"./ar-ma.js\": 2717,\n\t\"./ar-sa\": 1030,\n\t\"./ar-sa.js\": 1030,\n\t\"./ar-tn\": 9732,\n\t\"./ar-tn.js\": 9732,\n\t\"./ar.js\": 9547,\n\t\"./az\": 4072,\n\t\"./az.js\": 4072,\n\t\"./be\": 1824,\n\t\"./be.js\": 1824,\n\t\"./bg\": 7075,\n\t\"./bg.js\": 7075,\n\t\"./bm\": 8232,\n\t\"./bm.js\": 8232,\n\t\"./bn\": 2209,\n\t\"./bn-bd\": 3695,\n\t\"./bn-bd.js\": 3695,\n\t\"./bn.js\": 2209,\n\t\"./bo\": 670,\n\t\"./bo.js\": 670,\n\t\"./br\": 9640,\n\t\"./br.js\": 9640,\n\t\"./bs\": 5277,\n\t\"./bs.js\": 5277,\n\t\"./ca\": 5793,\n\t\"./ca.js\": 5793,\n\t\"./cs\": 8979,\n\t\"./cs.js\": 8979,\n\t\"./cv\": 4576,\n\t\"./cv.js\": 4576,\n\t\"./cy\": 8218,\n\t\"./cy.js\": 8218,\n\t\"./da\": 1277,\n\t\"./da.js\": 1277,\n\t\"./de\": 1633,\n\t\"./de-at\": 7427,\n\t\"./de-at.js\": 7427,\n\t\"./de-ch\": 9344,\n\t\"./de-ch.js\": 9344,\n\t\"./de.js\": 1633,\n\t\"./dv\": 9148,\n\t\"./dv.js\": 9148,\n\t\"./el\": 3122,\n\t\"./el.js\": 3122,\n\t\"./en-au\": 9567,\n\t\"./en-au.js\": 9567,\n\t\"./en-ca\": 749,\n\t\"./en-ca.js\": 749,\n\t\"./en-gb\": 4595,\n\t\"./en-gb.js\": 4595,\n\t\"./en-ie\": 6566,\n\t\"./en-ie.js\": 6566,\n\t\"./en-il\": 938,\n\t\"./en-il.js\": 938,\n\t\"./en-in\": 3576,\n\t\"./en-in.js\": 3576,\n\t\"./en-nz\": 1350,\n\t\"./en-nz.js\": 1350,\n\t\"./en-sg\": 3374,\n\t\"./en-sg.js\": 3374,\n\t\"./eo\": 5871,\n\t\"./eo.js\": 5871,\n\t\"./es\": 3548,\n\t\"./es-do\": 8933,\n\t\"./es-do.js\": 8933,\n\t\"./es-mx\": 8573,\n\t\"./es-mx.js\": 8573,\n\t\"./es-us\": 1329,\n\t\"./es-us.js\": 1329,\n\t\"./es.js\": 3548,\n\t\"./et\": 2132,\n\t\"./et.js\": 2132,\n\t\"./eu\": 6316,\n\t\"./eu.js\": 6316,\n\t\"./fa\": 2835,\n\t\"./fa.js\": 2835,\n\t\"./fi\": 7941,\n\t\"./fi.js\": 7941,\n\t\"./fil\": 2960,\n\t\"./fil.js\": 2960,\n\t\"./fo\": 5502,\n\t\"./fo.js\": 5502,\n\t\"./fr\": 5745,\n\t\"./fr-ca\": 6283,\n\t\"./fr-ca.js\": 6283,\n\t\"./fr-ch\": 8021,\n\t\"./fr-ch.js\": 8021,\n\t\"./fr.js\": 5745,\n\t\"./fy\": 2660,\n\t\"./fy.js\": 2660,\n\t\"./ga\": 8684,\n\t\"./ga.js\": 8684,\n\t\"./gd\": 937,\n\t\"./gd.js\": 937,\n\t\"./gl\": 2348,\n\t\"./gl.js\": 2348,\n\t\"./gom-deva\": 2260,\n\t\"./gom-deva.js\": 2260,\n\t\"./gom-latn\": 9376,\n\t\"./gom-latn.js\": 9376,\n\t\"./gu\": 7345,\n\t\"./gu.js\": 7345,\n\t\"./he\": 2844,\n\t\"./he.js\": 2844,\n\t\"./hi\": 4162,\n\t\"./hi.js\": 4162,\n\t\"./hr\": 4590,\n\t\"./hr.js\": 4590,\n\t\"./hu\": 6941,\n\t\"./hu.js\": 6941,\n\t\"./hy-am\": 1638,\n\t\"./hy-am.js\": 1638,\n\t\"./id\": 5651,\n\t\"./id.js\": 5651,\n\t\"./is\": 2821,\n\t\"./is.js\": 2821,\n\t\"./it\": 7974,\n\t\"./it-ch\": 667,\n\t\"./it-ch.js\": 667,\n\t\"./it.js\": 7974,\n\t\"./ja\": 8806,\n\t\"./ja.js\": 8806,\n\t\"./jv\": 1540,\n\t\"./jv.js\": 1540,\n\t\"./ka\": 9979,\n\t\"./ka.js\": 9979,\n\t\"./kk\": 9000,\n\t\"./kk.js\": 9000,\n\t\"./km\": 5582,\n\t\"./km.js\": 5582,\n\t\"./kn\": 9150,\n\t\"./kn.js\": 9150,\n\t\"./ko\": 794,\n\t\"./ko.js\": 794,\n\t\"./ku\": 5254,\n\t\"./ku.js\": 5254,\n\t\"./ky\": 4279,\n\t\"./ky.js\": 4279,\n\t\"./lb\": 5187,\n\t\"./lb.js\": 5187,\n\t\"./lo\": 160,\n\t\"./lo.js\": 160,\n\t\"./lt\": 8004,\n\t\"./lt.js\": 8004,\n\t\"./lv\": 9297,\n\t\"./lv.js\": 9297,\n\t\"./me\": 6019,\n\t\"./me.js\": 6019,\n\t\"./mi\": 6083,\n\t\"./mi.js\": 6083,\n\t\"./mk\": 8300,\n\t\"./mk.js\": 8300,\n\t\"./ml\": 3998,\n\t\"./ml.js\": 3998,\n\t\"./mn\": 4989,\n\t\"./mn.js\": 4989,\n\t\"./mr\": 7590,\n\t\"./mr.js\": 7590,\n\t\"./ms\": 7086,\n\t\"./ms-my\": 3867,\n\t\"./ms-my.js\": 3867,\n\t\"./ms.js\": 7086,\n\t\"./mt\": 6723,\n\t\"./mt.js\": 6723,\n\t\"./my\": 9785,\n\t\"./my.js\": 9785,\n\t\"./nb\": 3895,\n\t\"./nb.js\": 3895,\n\t\"./ne\": 5237,\n\t\"./ne.js\": 5237,\n\t\"./nl\": 2009,\n\t\"./nl-be\": 8799,\n\t\"./nl-be.js\": 8799,\n\t\"./nl.js\": 2009,\n\t\"./nn\": 9115,\n\t\"./nn.js\": 9115,\n\t\"./oc-lnc\": 3800,\n\t\"./oc-lnc.js\": 3800,\n\t\"./pa-in\": 7317,\n\t\"./pa-in.js\": 7317,\n\t\"./pl\": 5737,\n\t\"./pl.js\": 5737,\n\t\"./pt\": 7170,\n\t\"./pt-br\": 665,\n\t\"./pt-br.js\": 665,\n\t\"./pt.js\": 7170,\n\t\"./ro\": 4374,\n\t\"./ro.js\": 4374,\n\t\"./ru\": 8669,\n\t\"./ru.js\": 8669,\n\t\"./sd\": 9911,\n\t\"./sd.js\": 9911,\n\t\"./se\": 8337,\n\t\"./se.js\": 8337,\n\t\"./si\": 8241,\n\t\"./si.js\": 8241,\n\t\"./sk\": 4299,\n\t\"./sk.js\": 4299,\n\t\"./sl\": 6705,\n\t\"./sl.js\": 6705,\n\t\"./sq\": 593,\n\t\"./sq.js\": 593,\n\t\"./sr\": 9557,\n\t\"./sr-cyrl\": 9399,\n\t\"./sr-cyrl.js\": 9399,\n\t\"./sr.js\": 9557,\n\t\"./ss\": 4318,\n\t\"./ss.js\": 4318,\n\t\"./sv\": 3497,\n\t\"./sv.js\": 3497,\n\t\"./sw\": 87,\n\t\"./sw.js\": 87,\n\t\"./ta\": 3342,\n\t\"./ta.js\": 3342,\n\t\"./te\": 3446,\n\t\"./te.js\": 3446,\n\t\"./tet\": 5775,\n\t\"./tet.js\": 5775,\n\t\"./tg\": 6127,\n\t\"./tg.js\": 6127,\n\t\"./th\": 4120,\n\t\"./th.js\": 4120,\n\t\"./tk\": 2086,\n\t\"./tk.js\": 2086,\n\t\"./tl-ph\": 8308,\n\t\"./tl-ph.js\": 8308,\n\t\"./tlh\": 2616,\n\t\"./tlh.js\": 2616,\n\t\"./tr\": 7612,\n\t\"./tr.js\": 7612,\n\t\"./tzl\": 578,\n\t\"./tzl.js\": 578,\n\t\"./tzm\": 2422,\n\t\"./tzm-latn\": 1131,\n\t\"./tzm-latn.js\": 1131,\n\t\"./tzm.js\": 2422,\n\t\"./ug-cn\": 8681,\n\t\"./ug-cn.js\": 8681,\n\t\"./uk\": 6608,\n\t\"./uk.js\": 6608,\n\t\"./ur\": 119,\n\t\"./ur.js\": 119,\n\t\"./uz\": 1359,\n\t\"./uz-latn\": 3780,\n\t\"./uz-latn.js\": 3780,\n\t\"./uz.js\": 1359,\n\t\"./vi\": 8858,\n\t\"./vi.js\": 8858,\n\t\"./x-pseudo\": 8692,\n\t\"./x-pseudo.js\": 8692,\n\t\"./yo\": 904,\n\t\"./yo.js\": 904,\n\t\"./zh-cn\": 6419,\n\t\"./zh-cn.js\": 6419,\n\t\"./zh-hk\": 5826,\n\t\"./zh-hk.js\": 5826,\n\t\"./zh-mo\": 3651,\n\t\"./zh-mo.js\": 3651,\n\t\"./zh-tw\": 3520,\n\t\"./zh-tw.js\": 3520\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/formatNumber'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/AvatarEditor'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/SignUpModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","import Widget from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\nimport app from 'flarum/forum/app';\nimport username from 'flarum/common/helpers/username';\nimport formatNumber from 'flarum/utils/formatNumber';\nimport listItems from 'flarum/helpers/listItems';\nimport AvatarEditor from 'flarum/components/AvatarEditor';\nimport SignUpModal from 'flarum/components/SignUpModal';\nimport Button from 'flarum/common/components/Button';\nimport moment from 'moment/moment';\n\nexport default class WelcomeBoxWidget extends Widget {\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n className() {\n return 'welcomebox-widget';\n }\n\n icon() {\n return 'fas fa-user-tie';\n }\n\n content() {\n const user = app.session.user;\n const lastSeenAt = user?.lastSeenAt() !== null ? user?.lastSeenAt() : false;\n const userLang = app.translator.getLocale();\n const useWidget = app.forum.attribute('justoverclock-welcomebox.UseWidget');\n const isGuestBoxHidden = app.forum.attribute('HideGuestBox');\n const SettingsLink = app.route('settings');\n const ImgAvatar =\n app.forum.attribute('imgUrl') || app.forum.attribute('baseUrl') + '/assets/extensions/justoverclock-welcomebox/no-avatar.png';\n\n if (useWidget && user) {\n return (\n <div className=\"containerwb\">\n <div className=\"backgrwb\">\n {Button.component({\n icon: 'fas fa-sign-out-alt logoutt',\n title: app.translator.trans('core.forum.header.log_out_button'),\n className: 'Dropdown-toggle Button logwbox',\n onclick: app.session.logout.bind(app.session),\n })}\n <div>\n <a href={app.route.user(user)}>\n <div className=\"avatarwb\">{AvatarEditor.component({ user })}</div>\n </a>\n <div className=\"contentwb\">\n <div className=\"textinfo\">\n {app.translator.trans('flarum-ext-welcomebox.forum.wback')}\n <br />\n <strong>{username(user)}</strong>\n </div>\n <div className=\"cont\">\n <div className=\"circletop\">\n <a href={SettingsLink} title={app.translator.trans('core.forum.settings.title')}>\n <i className=\"menuicon fas fa-tasks\" />\n </a>\n <a href={app.route.user(user)} title={app.translator.trans('flarum-ext-welcomebox.forum.tooltipProfile')}>\n <i className=\"menuicon far fa-user\" />\n </a>\n <a\n href={app.route.user(user) + '/mentions'}\n title={app.translator.trans('flarum-ext-welcomebox.forum.tooltipMentions')}\n >\n <i className=\"menuicon fas fa-at\" />\n </a>\n <a\n href={app.route.user(user) + '/discussions'}\n title={app.translator.trans('flarum-ext-welcomebox.forum.tooltipDisclist')}\n >\n <i className=\"menuicon far fa-list-alt\" />\n </a>\n </div>\n </div>\n </div>\n <div className=\"iconbadge\">{listItems(user.badges().toArray())}</div>\n <div className=\"ulwb contentwb\">\n <li>\n <label className=\"textinfo\">{app.translator.trans('flarum-ext-welcomebox.forum.npost')}</label>:{' '}\n <strong className=\"textinfo\">{formatNumber(user.commentCount())}</strong>\n </li>\n <li>\n <label className=\"textinfo\">{app.translator.trans('flarum-ext-welcomebox.forum.discussion')}</label>:{' '}\n <strong className=\"textinfo\">{formatNumber(user.discussionCount())}</strong>\n </li>\n {lastSeenAt !== null && (\n <li>\n <label className=\"textinfo\">{app.translator.trans('flarum-ext-welcomebox.forum.lastSeen')}</label>:{' '}\n <strong className=\"textinfo\">{`${moment(lastSeenAt)\n .locale(userLang || 'en')\n .fromNow()}`}</strong>\n </li>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n } else if (!user && isGuestBoxHidden && useWidget) {\n return (\n <div className=\"containerwb\">\n <div className=\"backgrwbguest\">\n <img className=\"guestavatarimg\" src={ImgAvatar} />\n <div className=\"guesttext\">{app.translator.trans('flarum-ext-welcomebox.forum.welcomeguest')}</div>\n <p className=\"guestdesc\">{app.translator.trans('flarum-ext-welcomebox.forum.notregistered')}</p>\n <button\n className=\".SplitDropdown-button Button Button--primary hasIcon\"\n type=\"button\"\n onclick={(componentClass, attrs) => app.modal.show(SignUpModal, attrs)}\n >\n {app.translator.trans('core.forum.header.sign_up_link')}\n </button>\n <div className=\"contentwb\" />\n </div>\n </div>\n );\n }\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import { extend } from 'flarum/extend';\nimport app from 'flarum/app';\nimport IndexPage from 'flarum/components/IndexPage';\nimport username from 'flarum/common/helpers/username';\nimport formatNumber from 'flarum/utils/formatNumber';\nimport listItems from 'flarum/helpers/listItems';\nimport AvatarEditor from 'flarum/components/AvatarEditor';\nimport SignUpModal from 'flarum/components/SignUpModal';\nimport Button from 'flarum/common/components/Button';\nimport registerWidget from '../common/registerWidget';\nimport moment from 'moment';\n\napp.initializers.add('justoverclock/flarum-ext-welcomebox', () => {\n registerWidget(app);\n extend(IndexPage.prototype, 'sidebarItems', (items) => {\n const user = app.session.user;\n const lastSeenAt = user?.lastSeenAt() !== null ? user?.lastSeenAt() : false;\n const userLang = app.translator.getLocale();\n const SettingsLink = app.route('settings');\n const useWidget = app.forum.attribute('justoverclock-welcomebox.UseWidget');\n\n if (!useWidget && user) {\n items.add(\n 'welcomeBox',\n <div className=\"containerwb\">\n <div className=\"backgrwb\">\n {Button.component({\n icon: 'fas fa-sign-out-alt logoutt',\n title: app.translator.trans('core.forum.header.log_out_button'),\n className: 'Dropdown-toggle Button logwbox',\n onclick: app.session.logout.bind(app.session),\n })}\n {[\n <div>\n <a href={app.route.user(user)}>\n <div className=\"avatarwb\">{AvatarEditor.component({ user })}</div>\n </a>\n </div>,\n <div className=\"contentwb\">\n <div className=\"textinfo\">\n {app.translator.trans('flarum-ext-welcomebox.forum.wback')}\n <br />\n <strong>{username(user)}</strong>\n </div>\n <div className=\"cont\">\n <div className=\"circletop\">\n <a href={SettingsLink} title={app.translator.trans('core.forum.settings.title')}>\n <i className=\"menuicon fas fa-tasks\"></i>\n </a>\n <a href={app.route.user(user)} title={app.translator.trans('flarum-ext-welcomebox.forum.tooltipProfile')}>\n <i className=\"menuicon far fa-user\"></i>\n </a>\n <a\n href={app.route.user(user) + '/mentions'}\n title={app.translator.trans('flarum-ext-welcomebox.forum.tooltipMentions')}\n >\n <i className=\"menuicon fas fa-at\"></i>\n </a>\n <a\n href={app.route.user(user) + '/discussions'}\n title={app.translator.trans('flarum-ext-welcomebox.forum.tooltipDisclist')}\n >\n <i className=\"menuicon far fa-list-alt\"></i>\n </a>\n </div>\n </div>\n </div>,\n <div className=\"iconbadge\">{listItems(user.badges().toArray())}</div>,\n <div className=\"ulwb contentwb\">\n <li>\n <label className=\"textinfo\">{app.translator.trans('flarum-ext-welcomebox.forum.npost')}</label>:{' '}\n <strong className=\"textinfo\">{formatNumber(user.commentCount())}</strong>\n </li>\n <li>\n <label className=\"textinfo\">{app.translator.trans('flarum-ext-welcomebox.forum.discussion')}</label>:{' '}\n <strong className=\"textinfo\">{formatNumber(user.discussionCount())}</strong>\n </li>\n {lastSeenAt !== null && (\n <li>\n <label className=\"textinfo\">{app.translator.trans('flarum-ext-welcomebox.forum.lastSeen')}</label>:{' '}\n <strong className=\"textinfo\">\n {moment(lastSeenAt)\n .locale(userLang || 'en')\n .fromNow()}\n </strong>\n </li>\n )}\n </div>,\n ]}\n </div>\n </div>,\n 20\n );\n }\n });\n});\nextend(IndexPage.prototype, 'sidebarItems', (items) => {\n const isLoginAvailable = app.forum.attribute('allowSignUp');\n const useWidget = app.forum.attribute('justoverclock-welcomebox.UseWidget');\n const ImgAvatar = app.forum.attribute('imgUrl') || app.forum.attribute('baseUrl') + '/assets/extensions/justoverclock-welcomebox/no-avatar.png';\n\n const SignupComponent = {\n view: function () {\n if (isLoginAvailable) {\n return (\n <button\n className=\".SplitDropdown-button Button Button--primary hasIcon\"\n type=\"button\"\n onclick={(componentClass, attrs) => app.modal.show(SignUpModal, attrs)}\n >\n {app.translator.trans('core.forum.header.sign_up_link')}\n </button>\n );\n }\n return null;\n },\n };\n\n if (!useWidget) {\n if (!app.session.user) {\n if (app.forum.attribute('HideGuestBox') === true) {\n items.add(\n 'welcomeBoxGuest',\n <div className=\"containerwb\">\n <div className=\"backgrwbguest\">\n <img className=\"guestavatarimg\" src={ImgAvatar} />\n <div className=\"guesttext\">{app.translator.trans('flarum-ext-welcomebox.forum.welcomeguest')}</div>\n <p className=\"guestdesc\">{app.translator.trans('flarum-ext-welcomebox.forum.notregistered')}</p>\n {m(SignupComponent)}\n <div className=\"contentwb\"></div>\n </div>\n </div>,\n 20\n );\n }\n }\n }\n});\n","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\n\nimport WelcomeBoxWidget from './components/WelcomeBoxWidget';\n\nexport default function (app) {\n new Widgets()\n .add({\n key: 'WelcomeBoxWdg',\n component: WelcomeBoxWidget,\n isDisabled: false,\n isUnique: true,\n placement: 'end',\n position: 1,\n })\n .extend(app, 'justoverclock-welcomebox');\n}\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","module.exports = flarum.core.compat['forum/app'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","module.exports = flarum.core.compat['common/components/LoadingIndicator'];","module.exports = flarum.core.compat['common/utils/string'];","module.exports = flarum.core.compat['common/components/Link'];","module.exports = flarum.core.compat['common/helpers/avatar'];","module.exports = flarum.core.compat['common/components/Tooltip'];","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}","/*\n * This file is part of Last users posts extension.\n *\n * Copyright (c) 2021 Marco Colia.\n * https://flarum.it\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n */\n\nimport Widget from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\nimport app from 'flarum/forum/app';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport { truncate } from 'flarum/common/utils/string';\nimport Link from \"flarum/common/components/Link\";\nimport avatar from \"flarum/common/helpers/avatar\";\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nexport default class EventsWidget extends Widget {\n oninit(vnode) {\n super.oninit(vnode);\n this.loading = true;\n }\n\n oncreate(vnode) {\n // settings to limit post number on frontend\n const limitPost = app.forum.attribute('justoverclock-last-users-posts.postLimitNumber') || 10;\n // get posts json\n const lastpwidget = app.store\n .find('posts', {\n sort: '-createdAt',\n include: 'discussion,user',\n page: { limit: limitPost },\n filter: { type: 'comment' },\n })\n .then((results) => {\n this.post = results;\n this.loading = false;\n m.redraw();\n });\n }\n\n className() {\n // css class for the container\n return 'lastposts-widget';\n }\n\n icon() {\n // Widget icon.\n return 'fas fa-edit';\n }\n\n title() {\n // Widget title.\n return app.translator.trans('justoverclock-last-users-posts.forum.widget-title');\n }\n\n content() {\n if (this.loading) {\n return <LoadingIndicator />;\n }\n const Charlength = app.forum.attribute('justoverclock-last-users-posts.CharLength') || 80;\n return (\n <div className=\"last-posts-content\">\n <ul className=\"lastpostwidget fa-ul\">\n {this.post.map((post) => {\n if (!post.isHidden()) {\n return (\n <li class=\"lastpostwdg\">\n <div class=\"postAvatarWdg\"><Tooltip text={post.user().displayName()}>{avatar(post.user())}</Tooltip>\n </div>\n <Link href={app.route.post(post)} className=\"postlinkwg\">\n {truncate(post.contentHtml()\n .replace(/(?:<iframe[^>]*)(?:(?:\\/>)|(?:>.*?<\\/iframe>))/g, '\u1d07\u1d0d\u0299\u1d07\u1d05 ')\n .replace(/<img.*?(.*?)\"[^\\>]+>/g, '\ud83d\udcf8 ')\n .replace(/(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]+\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]+\\.[^\\s]{2,})/g, `\ud83d\udd17 `)\n .replace(/( |<([^>]+)>)+/g, ' '), Charlength, 0)}\n </Link>\n </li>\n );\n }})}\n </ul>\n </div>\n );\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\r\n\r\nimport LastUsersPosts from './components/LastUsersPosts';\r\n\r\nexport default function (app) {\r\n new Widgets()\r\n .add({\r\n key: 'LastPostWidget',\r\n component: LastUsersPosts,\r\n isDisabled: false,\r\n isUnique: true,\r\n placement: 'end',\r\n position: 1,\r\n })\r\n .extend(app, 'justoverclock-last-users-posts');\r\n}\r\n","/*\r\n * This file is part of Last users posts extension.\r\n *\r\n * Copyright (c) 2021 Marco Colia.\r\n * https://flarum.it\r\n *\r\n * For the full copyright and license information, please view the LICENSE.md\r\n * file that was distributed with this source code.\r\n */\r\n\r\nimport app from 'flarum/forum/app';\r\nimport registerWidget from '../common/registerWidget';\r\n\r\napp.initializers.add('justoverclock/last-users-posts', () => {\r\n registerWidget(app);\r\n});\r\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","module.exports = flarum.core.compat['forum/app'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['forum/components/CommentPost'];","import app from 'flarum/forum/app';\n\nexport default function () {\n this.$('a.hasht')\n .attr('title', app.translator.trans('justoverclock-hashtag.forum.post.hashtag_link_tooltip'))\n .click((e) => {\n if (e.ctrlKey || e.metaKey || e.which === 2) return;\n e.preventDefault();\n m.route.set(e.target.href);\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport ReplaceHashTag from './ReplaceHashTag';\n\napp.initializers.add('justoverclock/flarum-ext-hashtag', () => {\n extend(CommentPost.prototype, ['oncreate', 'onupdate'], ReplaceHashTag);\n});\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","module.exports = flarum.core.compat['forum/app'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['forum/components/DiscussionHero'];","module.exports = flarum.core.compat['tags/helpers/tagsLabel'];","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionHero from 'flarum/forum/components/DiscussionHero';\nimport tagsLabel from 'flarum/tags/helpers/tagsLabel';\n\napp.initializers.add('justoverclock/discussion-hero-showtags', () => {\n extend(DiscussionHero.prototype, 'items', function (items) {\n items.add(\n 'allTags',\n m('div', { className: 'contTags' }, [\n m('div', { className: 'text4tags' }, app.translator.trans('justoverclock-discussion-hero-showtags.forum.jumpTo') + ':'),\n m(\n 'div',\n {\n className: 'heroTagsExt',\n },\n tagsLabel(app.store.all('tags'), {\n link: true,\n className: 'tagExt',\n })\n ),\n ])\n );\n });\n});\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","module.exports = flarum.core.compat['app'];","module.exports = flarum.core.compat['components/DiscussionListPane'];","module.exports = flarum.core.compat['components/DiscussionPage'];","module.exports = flarum.core.compat['extend'];","module.exports = flarum.core.compat['common/components/Navigation'];","import app from 'flarum/app'\nimport DiscussionListPane from 'flarum/components/DiscussionListPane'\nimport DiscussionPage from 'flarum/components/DiscussionPage'\n\n/*\n * see here: https://github.com/flarum/core/blob/master/js/src/forum/components/DiscussionListPane.js\n */\n\n/**\n * new version of hotEdge\n * @param e\n */\nconst hotEdgeRtl = (e) => {\n let width = document.body.offsetWidth,\n fip = width * 95 / 100,\n ex = e.pageX\n if (ex >= fip) app.pane.show()\n}\n\nexport default function () {\n\n /**\n * @param vnode\n */\n DiscussionListPane.prototype.onremove = (vnode) => {\n app.cache.discussionListPaneScrollTop = $(vnode.dom).scrollTop()\n $(document).off('mousemove', hotEdgeRtl)\n }\n\n /**\n * @param vnode\n */\n DiscussionListPane.prototype.oncreate = (vnode) => {\n const $list = $(vnode.dom),\n pane = app.pane\n\n $list.hover(pane.show.bind(pane), pane.onmouseleave.bind(pane))\n $(document).on('mousemove', hotEdgeRtl)\n\n if (app.previous.matches(DiscussionPage)) {\n const top = app.cache.discussionListPaneScrollTop || 0\n $list.scrollTop(top)\n } else {\n const $discussion = $list.find('.DiscussionListItem.active')\n if ($discussion.length) {\n const listTop = $list.offset().top\n const listBottom = listTop + $list.outerHeight()\n const discussionTop = $discussion.offset().top\n const discussionBottom = discussionTop + $discussion.outerHeight();\n\n if (discussionTop < listTop || discussionBottom > listBottom) {\n $list.scrollTop($list.scrollTop() - listTop + discussionTop)\n }\n }\n }\n }\n\n}","import changePaneShowX from './changePaneShowX'\nimport changeNavBackBtn from './changeNavBackBtn'\nimport app from 'flarum/app'\n\napp.initializers.add('irmmr-flarum-rtl-ext', () => {\n changePaneShowX()\n changeNavBackBtn()\n})\n","import { extend } from 'flarum/extend'\nimport Navigation from 'flarum/common/components/Navigation'\n\nexport default function () {\n\n extend(Navigation.prototype, 'getBackButton', function (vdom) {\n if (vdom.attrs) {\n vdom.attrs.icon = 'fas fa-chevron-right'\n }\n })\n\n}","module.exports = require(\"regenerator-runtime\");\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringify = exports.parse = void 0;\n__exportStar(require(\"./parse\"), exports);\nvar parse_1 = require(\"./parse\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return __importDefault(parse_1).default; } });\nvar stringify_1 = require(\"./stringify\");\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return __importDefault(stringify_1).default; } });\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTraversal = void 0;\nvar reName = /^[^\\\\#]?(?:\\\\(?:[\\da-f]{1,6}\\s?|.)|[\\w\\-\\u00b0-\\uFFFF])+/;\nvar reEscape = /\\\\([\\da-f]{1,6}\\s?|(\\s)|.)/gi;\nvar actionTypes = new Map([\n [\"~\", \"element\"],\n [\"^\", \"start\"],\n [\"$\", \"end\"],\n [\"*\", \"any\"],\n [\"!\", \"not\"],\n [\"|\", \"hyphen\"],\n]);\nvar Traversals = {\n \">\": \"child\",\n \"<\": \"parent\",\n \"~\": \"sibling\",\n \"+\": \"adjacent\",\n};\nvar attribSelectors = {\n \"#\": [\"id\", \"equals\"],\n \".\": [\"class\", \"element\"],\n};\n// Pseudos, whose data property is parsed as well.\nvar unpackPseudos = new Set([\n \"has\",\n \"not\",\n \"matches\",\n \"is\",\n \"where\",\n \"host\",\n \"host-context\",\n]);\nvar traversalNames = new Set(__spreadArray([\n \"descendant\"\n], Object.keys(Traversals).map(function (k) { return Traversals[k]; }), true));\n/**\n * Attributes that are case-insensitive in HTML.\n *\n * @private\n * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors\n */\nvar caseInsensitiveAttributes = new Set([\n \"accept\",\n \"accept-charset\",\n \"align\",\n \"alink\",\n \"axis\",\n \"bgcolor\",\n \"charset\",\n \"checked\",\n \"clear\",\n \"codetype\",\n \"color\",\n \"compact\",\n \"declare\",\n \"defer\",\n \"dir\",\n \"direction\",\n \"disabled\",\n \"enctype\",\n \"face\",\n \"frame\",\n \"hreflang\",\n \"http-equiv\",\n \"lang\",\n \"language\",\n \"link\",\n \"media\",\n \"method\",\n \"multiple\",\n \"nohref\",\n \"noresize\",\n \"noshade\",\n \"nowrap\",\n \"readonly\",\n \"rel\",\n \"rev\",\n \"rules\",\n \"scope\",\n \"scrolling\",\n \"selected\",\n \"shape\",\n \"target\",\n \"text\",\n \"type\",\n \"valign\",\n \"valuetype\",\n \"vlink\",\n]);\n/**\n * Checks whether a specific selector is a traversal.\n * This is useful eg. in swapping the order of elements that\n * are not traversals.\n *\n * @param selector Selector to check.\n */\nfunction isTraversal(selector) {\n return traversalNames.has(selector.type);\n}\nexports.isTraversal = isTraversal;\nvar stripQuotesFromPseudos = new Set([\"contains\", \"icontains\"]);\nvar quotes = new Set(['\"', \"'\"]);\n// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152\nfunction funescape(_, escaped, escapedWhitespace) {\n var high = parseInt(escaped, 16) - 0x10000;\n // NaN means non-codepoint\n return high !== high || escapedWhitespace\n ? escaped\n : high < 0\n ? // BMP codepoint\n String.fromCharCode(high + 0x10000)\n : // Supplemental Plane codepoint (surrogate pair)\n String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00);\n}\nfunction unescapeCSS(str) {\n return str.replace(reEscape, funescape);\n}\nfunction isWhitespace(c) {\n return c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n/**\n * Parses `selector`, optionally with the passed `options`.\n *\n * @param selector Selector to parse.\n * @param options Options for parsing.\n * @returns Returns a two-dimensional array.\n * The first dimension represents selectors separated by commas (eg. `sub1, sub2`),\n * the second contains the relevant tokens for that selector.\n */\nfunction parse(selector, options) {\n var subselects = [];\n var endIndex = parseSelector(subselects, \"\" + selector, options, 0);\n if (endIndex < selector.length) {\n throw new Error(\"Unmatched selector: \" + selector.slice(endIndex));\n }\n return subselects;\n}\nexports.default = parse;\nfunction parseSelector(subselects, selector, options, selectorIndex) {\n var _a, _b;\n if (options === void 0) { options = {}; }\n var tokens = [];\n var sawWS = false;\n function getName(offset) {\n var match = selector.slice(selectorIndex + offset).match(reName);\n if (!match) {\n throw new Error(\"Expected name, found \" + selector.slice(selectorIndex));\n }\n var name = match[0];\n selectorIndex += offset + name.length;\n return unescapeCSS(name);\n }\n function stripWhitespace(offset) {\n while (isWhitespace(selector.charAt(selectorIndex + offset)))\n offset++;\n selectorIndex += offset;\n }\n function isEscaped(pos) {\n var slashCount = 0;\n while (selector.charAt(--pos) === \"\\\\\")\n slashCount++;\n return (slashCount & 1) === 1;\n }\n function ensureNotTraversal() {\n if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) {\n throw new Error(\"Did not expect successive traversals.\");\n }\n }\n stripWhitespace(0);\n while (selector !== \"\") {\n var firstChar = selector.charAt(selectorIndex);\n if (isWhitespace(firstChar)) {\n sawWS = true;\n stripWhitespace(1);\n }\n else if (firstChar in Traversals) {\n ensureNotTraversal();\n tokens.push({ type: Traversals[firstChar] });\n sawWS = false;\n stripWhitespace(1);\n }\n else if (firstChar === \",\") {\n if (tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n tokens = [];\n sawWS = false;\n stripWhitespace(1);\n }\n else if (selector.startsWith(\"/*\", selectorIndex)) {\n var endIndex = selector.indexOf(\"*/\", selectorIndex + 2);\n if (endIndex < 0) {\n throw new Error(\"Comment was not terminated\");\n }\n selectorIndex = endIndex + 2;\n }\n else {\n if (sawWS) {\n ensureNotTraversal();\n tokens.push({ type: \"descendant\" });\n sawWS = false;\n }\n if (firstChar in attribSelectors) {\n var _c = attribSelectors[firstChar], name_1 = _c[0], action = _c[1];\n tokens.push({\n type: \"attribute\",\n name: name_1,\n action: action,\n value: getName(1),\n namespace: null,\n // TODO: Add quirksMode option, which makes `ignoreCase` `true` for HTML.\n ignoreCase: options.xmlMode ? null : false,\n });\n }\n else if (firstChar === \"[\") {\n stripWhitespace(1);\n // Determine attribute name and namespace\n var namespace = null;\n if (selector.charAt(selectorIndex) === \"|\") {\n namespace = \"\";\n selectorIndex += 1;\n }\n if (selector.startsWith(\"*|\", selectorIndex)) {\n namespace = \"*\";\n selectorIndex += 2;\n }\n var name_2 = getName(0);\n if (namespace === null &&\n selector.charAt(selectorIndex) === \"|\" &&\n selector.charAt(selectorIndex + 1) !== \"=\") {\n namespace = name_2;\n name_2 = getName(1);\n }\n if ((_a = options.lowerCaseAttributeNames) !== null && _a !== void 0 ? _a : !options.xmlMode) {\n name_2 = name_2.toLowerCase();\n }\n stripWhitespace(0);\n // Determine comparison operation\n var action = \"exists\";\n var possibleAction = actionTypes.get(selector.charAt(selectorIndex));\n if (possibleAction) {\n action = possibleAction;\n if (selector.charAt(selectorIndex + 1) !== \"=\") {\n throw new Error(\"Expected `=`\");\n }\n stripWhitespace(2);\n }\n else if (selector.charAt(selectorIndex) === \"=\") {\n action = \"equals\";\n stripWhitespace(1);\n }\n // Determine value\n var value = \"\";\n var ignoreCase = null;\n if (action !== \"exists\") {\n if (quotes.has(selector.charAt(selectorIndex))) {\n var quote = selector.charAt(selectorIndex);\n var sectionEnd = selectorIndex + 1;\n while (sectionEnd < selector.length &&\n (selector.charAt(sectionEnd) !== quote ||\n isEscaped(sectionEnd))) {\n sectionEnd += 1;\n }\n if (selector.charAt(sectionEnd) !== quote) {\n throw new Error(\"Attribute value didn't end\");\n }\n value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd));\n selectorIndex = sectionEnd + 1;\n }\n else {\n var valueStart = selectorIndex;\n while (selectorIndex < selector.length &&\n ((!isWhitespace(selector.charAt(selectorIndex)) &&\n selector.charAt(selectorIndex) !== \"]\") ||\n isEscaped(selectorIndex))) {\n selectorIndex += 1;\n }\n value = unescapeCSS(selector.slice(valueStart, selectorIndex));\n }\n stripWhitespace(0);\n // See if we have a force ignore flag\n var forceIgnore = selector.charAt(selectorIndex);\n // If the forceIgnore flag is set (either `i` or `s`), use that value\n if (forceIgnore === \"s\" || forceIgnore === \"S\") {\n ignoreCase = false;\n stripWhitespace(1);\n }\n else if (forceIgnore === \"i\" || forceIgnore === \"I\") {\n ignoreCase = true;\n stripWhitespace(1);\n }\n }\n // If `xmlMode` is set, there are no rules; otherwise, use the `caseInsensitiveAttributes` list.\n if (!options.xmlMode) {\n // TODO: Skip this for `exists`, as there is no value to compare to.\n ignoreCase !== null && ignoreCase !== void 0 ? ignoreCase : (ignoreCase = caseInsensitiveAttributes.has(name_2));\n }\n if (selector.charAt(selectorIndex) !== \"]\") {\n throw new Error(\"Attribute selector didn't terminate\");\n }\n selectorIndex += 1;\n var attributeSelector = {\n type: \"attribute\",\n name: name_2,\n action: action,\n value: value,\n namespace: namespace,\n ignoreCase: ignoreCase,\n };\n tokens.push(attributeSelector);\n }\n else if (firstChar === \":\") {\n if (selector.charAt(selectorIndex + 1) === \":\") {\n tokens.push({\n type: \"pseudo-element\",\n name: getName(2).toLowerCase(),\n });\n continue;\n }\n var name_3 = getName(1).toLowerCase();\n var data = null;\n if (selector.charAt(selectorIndex) === \"(\") {\n if (unpackPseudos.has(name_3)) {\n if (quotes.has(selector.charAt(selectorIndex + 1))) {\n throw new Error(\"Pseudo-selector \" + name_3 + \" cannot be quoted\");\n }\n data = [];\n selectorIndex = parseSelector(data, selector, options, selectorIndex + 1);\n if (selector.charAt(selectorIndex) !== \")\") {\n throw new Error(\"Missing closing parenthesis in :\" + name_3 + \" (\" + selector + \")\");\n }\n selectorIndex += 1;\n }\n else {\n selectorIndex += 1;\n var start = selectorIndex;\n var counter = 1;\n for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) {\n if (selector.charAt(selectorIndex) === \"(\" &&\n !isEscaped(selectorIndex)) {\n counter++;\n }\n else if (selector.charAt(selectorIndex) === \")\" &&\n !isEscaped(selectorIndex)) {\n counter--;\n }\n }\n if (counter) {\n throw new Error(\"Parenthesis not matched\");\n }\n data = selector.slice(start, selectorIndex - 1);\n if (stripQuotesFromPseudos.has(name_3)) {\n var quot = data.charAt(0);\n if (quot === data.slice(-1) && quotes.has(quot)) {\n data = data.slice(1, -1);\n }\n data = unescapeCSS(data);\n }\n }\n }\n tokens.push({ type: \"pseudo\", name: name_3, data: data });\n }\n else {\n var namespace = null;\n var name_4 = void 0;\n if (firstChar === \"*\") {\n selectorIndex += 1;\n name_4 = \"*\";\n }\n else if (reName.test(selector.slice(selectorIndex))) {\n if (selector.charAt(selectorIndex) === \"|\") {\n namespace = \"\";\n selectorIndex += 1;\n }\n name_4 = getName(0);\n }\n else {\n /*\n * We have finished parsing the selector.\n * Remove descendant tokens at the end if they exist,\n * and return the last index, so that parsing can be\n * picked up from here.\n */\n if (tokens.length &&\n tokens[tokens.length - 1].type === \"descendant\") {\n tokens.pop();\n }\n addToken(subselects, tokens);\n return selectorIndex;\n }\n if (selector.charAt(selectorIndex) === \"|\") {\n namespace = name_4;\n if (selector.charAt(selectorIndex + 1) === \"*\") {\n name_4 = \"*\";\n selectorIndex += 2;\n }\n else {\n name_4 = getName(1);\n }\n }\n if (name_4 === \"*\") {\n tokens.push({ type: \"universal\", namespace: namespace });\n }\n else {\n if ((_b = options.lowerCaseTags) !== null && _b !== void 0 ? _b : !options.xmlMode) {\n name_4 = name_4.toLowerCase();\n }\n tokens.push({ type: \"tag\", name: name_4, namespace: namespace });\n }\n }\n }\n }\n addToken(subselects, tokens);\n return selectorIndex;\n}\nfunction addToken(subselects, tokens) {\n if (subselects.length > 0 && tokens.length === 0) {\n throw new Error(\"Empty sub-selector\");\n }\n subselects.push(tokens);\n}\n","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar actionTypes = {\n equals: \"\",\n element: \"~\",\n start: \"^\",\n end: \"$\",\n any: \"*\",\n not: \"!\",\n hyphen: \"|\",\n};\nvar charsToEscape = new Set(__spreadArray(__spreadArray([], Object.keys(actionTypes)\n .map(function (typeKey) { return actionTypes[typeKey]; })\n .filter(Boolean), true), [\n \":\",\n \"[\",\n \"]\",\n \" \",\n \"\\\\\",\n \"(\",\n \")\",\n \"'\",\n], false));\n/**\n * Turns `selector` back into a string.\n *\n * @param selector Selector to stringify.\n */\nfunction stringify(selector) {\n return selector.map(stringifySubselector).join(\", \");\n}\nexports.default = stringify;\nfunction stringifySubselector(token) {\n return token.map(stringifyToken).join(\"\");\n}\nfunction stringifyToken(token) {\n switch (token.type) {\n // Simple types\n case \"child\":\n return \" > \";\n case \"parent\":\n return \" < \";\n case \"sibling\":\n return \" ~ \";\n case \"adjacent\":\n return \" + \";\n case \"descendant\":\n return \" \";\n case \"universal\":\n return getNamespace(token.namespace) + \"*\";\n case \"tag\":\n return getNamespacedName(token);\n case \"pseudo-element\":\n return \"::\" + escapeName(token.name);\n case \"pseudo\":\n if (token.data === null)\n return \":\" + escapeName(token.name);\n if (typeof token.data === \"string\") {\n return \":\" + escapeName(token.name) + \"(\" + escapeName(token.data) + \")\";\n }\n return \":\" + escapeName(token.name) + \"(\" + stringify(token.data) + \")\";\n case \"attribute\": {\n if (token.name === \"id\" &&\n token.action === \"equals\" &&\n !token.ignoreCase &&\n !token.namespace) {\n return \"#\" + escapeName(token.value);\n }\n if (token.name === \"class\" &&\n token.action === \"element\" &&\n !token.ignoreCase &&\n !token.namespace) {\n return \".\" + escapeName(token.value);\n }\n var name_1 = getNamespacedName(token);\n if (token.action === \"exists\") {\n return \"[\" + name_1 + \"]\";\n }\n return \"[\" + name_1 + actionTypes[token.action] + \"='\" + escapeName(token.value) + \"'\" + (token.ignoreCase ? \"i\" : token.ignoreCase === false ? \"s\" : \"\") + \"]\";\n }\n }\n}\nfunction getNamespacedName(token) {\n return \"\" + getNamespace(token.namespace) + escapeName(token.name);\n}\nfunction getNamespace(namespace) {\n return namespace !== null\n ? (namespace === \"*\" ? \"*\" : escapeName(namespace)) + \"|\"\n : \"\";\n}\nfunction escapeName(str) {\n return str\n .split(\"\")\n .map(function (c) { return (charsToEscape.has(c) ? \"\\\\\" + c : c); })\n .join(\"\");\n}\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 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 = Gp.constructor = GeneratorFunctionPrototype;\n 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 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 Gp[iteratorSymbol] = function() {\n return this;\n };\n\n 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, 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 Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","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 _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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\n\nconst trans = (key) => (opts) => app.translator.trans(`ianm-follow-users.lib.follow_levels.${key}`, opts);\n\nexport const FollowLevels = Object.freeze([\n {\n value: 'unfollow',\n name: trans('unfollow.name'),\n description: trans('unfollow.description'),\n },\n {\n value: 'follow',\n name: trans('follow.name'),\n description: trans('follow.description'),\n },\n {\n value: 'lurk',\n name: trans('lurk.name'),\n description: trans('lurk.description'),\n },\n]);\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport User from 'flarum/common/models/User';\nimport Button from 'flarum/common/components/Button';\nimport Select from 'flarum/common/components/Select';\nimport { FollowLevels } from '../../common/FollowLevels';\n\nexport class SelectFollowUserTypeModal extends Modal {\n state = {\n /**\n * User being followed\n *\n * @type User | null\n */\n user: null,\n\n /**\n * Is the modal currently saving?\n *\n * @type boolean\n */\n saving: false,\n\n /**\n * Currently selected follow level.\n *\n * @type \"lurk\" | \"follow\" | \"unfollow\"\n * @example \"lurk\"\n */\n followState: undefined,\n };\n\n oninit(vnode) {\n super.oninit(vnode);\n\n this.state.user = this.attrs.user;\n\n this.state.followState = this.state.user.followed() || 'unfollow';\n }\n\n className = () => 'iam_follow_users-selectFollowLevelModal';\n\n title() {\n return this.trans('title', { username: <em>{this.state.user?.displayName?.()}</em> });\n }\n\n content() {\n // If `this.user` isn't a valid User, exit quickly to prevent complete forum errors.\n if (!(this.state.user instanceof User)) {\n // Show a more detailed error if this happens when the forum is in debug mode.\n return (\n <div class=\"Modal-body\">\n <p>{this.trans(`no_user_attr_provided_err${app.forum.attribute('debug') ? '_debug' : ''}`)}</p>\n </div>\n );\n }\n\n const user = this.state.user;\n\n const availableLevelOptions = FollowLevels.reduce((acc, curr) => ({ ...acc, [curr.value]: curr.name() }), {});\n const selectedLevel = FollowLevels.find((l) => l.value === this.state.followState);\n\n return (\n <div class=\"Modal-body\">\n <fieldset>\n <legend>{this.trans('description', { user })}</legend>\n\n <div class=\"selectFollowLevelModal-level\">\n <label for=\"selectFollowLevelModal-select\">{this.trans('follow_select_label')}</label>\n\n <Select\n disabled={this.state.saving}\n id=\"selectFollowLevelModal-select\"\n onchange={this.onFollowLevelChange.bind(this)}\n // Dynamic attrs that change based on the input\n value={selectedLevel.value}\n aria-described-by={`selectFollowLevelModal-${selectedLevel.value}-help`}\n options={availableLevelOptions}\n />\n\n {/* Helper text to describe the selected follow level */}\n <p id={`selectFollowLevelModal-${selectedLevel.value}-help`}>{selectedLevel.description({ user })}</p>\n </div>\n </fieldset>\n <fieldset class=\"selectFollowLevelModal-actions\">\n <Button disabled={this.state.saving} class=\"Button\" onclick={this.hide.bind(this)}>\n {this.trans('cancel_btn')}\n </Button>\n <Button disabled={this.state.saving} class=\"Button Button--primary\" onclick={this.saveFollowLevel.bind(this)} loading={this.state.saving}>\n {this.trans('save_btn')}\n </Button>\n </fieldset>\n </div>\n );\n }\n\n /**\n * Handles a change on the <select> element and saves the new value to a class property.\n */\n onFollowLevelChange() {\n /**\n * @type HTMLInputElement\n */\n const selectElement = this.$('.Select-input')[0];\n\n this.state.followState = selectElement.value || 'unfollow';\n }\n\n /**\n * Helper for app.translator.trans, already including the initial keys up to `modals.select_follow_level`.\n */\n trans(key, ...opts) {\n return app.translator.trans(`ianm-follow-users.forum.modals.select_follow_level.${key}`, ...opts);\n }\n\n onsubmit() {\n this.saveFollowLevel();\n }\n\n /**\n * Sends the new follow state to the\n */\n async saveFollowLevel() {\n const newFollowState = this.state.followState === 'unfollow' ? null : this.state.followState;\n\n this.state.saving = true;\n\n // Exit early if level not changed\n if (this.state.user.attribute('following') === newFollowState) {\n this.hide();\n return;\n }\n\n const x = await this.state.user.save({ followUsers: newFollowState });\n\n this.hide();\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","import { parse as cssWhat, Selector } from 'css-what';\nimport type Mithril from 'mithril';\n\ntype VdomChildren = Mithril.Vnode<Record<string, unknown>> | Mithril.Vnode<Record<string, unknown>>[];\n\ntype ManipulationFunction = (vnode: Mithril.Vnode<Record<string, unknown>>) => void;\n\nexport function findAndRemoveFirstVdomChild(vdom: VdomChildren, selector: string): boolean {\n const node = findFirstVdomChild(vdom, selector);\n\n if (node === undefined) return false;\n\n // Set to empty fragment\n node.tag = '[';\n node.attrs = { removedViaVdomUtils: true };\n node.children = [];\n\n return true;\n}\n\nexport function findFirstVdomChild(\n vdom: VdomChildren,\n selector: string,\n manipulationFunc?: ManipulationFunction\n): Mithril.Vnode<Record<string, unknown>> | undefined {\n const parsedSelector = cssWhat(selector);\n\n return searchChildren(vdom, parsedSelector, manipulationFunc);\n}\n\nfunction searchChildren(\n vdom: (Mithril.Child | Mithril.Children)[] | (Mithril.Child | Mithril.Children),\n selectors: Selector[][],\n manipulationFunc?: ManipulationFunction\n): Mithril.Vnode<Record<string, unknown>> | undefined {\n let nodes: (Mithril.Child | Mithril.Children)[];\n\n if (!Array.isArray(vdom)) {\n nodes = [vdom];\n } else {\n nodes = vdom;\n }\n\n let found: Mithril.Vnode<Record<string, unknown>, {}> | undefined = undefined;\n\n nodes.some((node): boolean => {\n if (typeof node === 'boolean' || typeof node === 'number' || typeof node === 'string' || node === null || node === undefined) return false;\n\n if (Array.isArray(node)) {\n let result = searchChildren(node, selectors, manipulationFunc);\n\n if (result) {\n found = result;\n return true;\n }\n\n return false;\n }\n\n if (doesChildMatchSelectors(node, selectors)) {\n found = node;\n return true;\n }\n\n if (Array.isArray(node.children)) {\n let result = searchChildren(node.children, selectors);\n\n if (result) {\n found = result;\n return true;\n }\n\n return false;\n }\n\n return false;\n });\n\n if (manipulationFunc && found) manipulationFunc(found);\n\n return found;\n}\n\nfunction doesChildMatchSelectors(child: Mithril.Vnode<Record<string, any>>, selectors: Selector[][]): boolean {\n return selectors.some((selector) => {\n return selector.every((criterion): boolean => {\n switch (criterion.type) {\n case 'tag':\n return child.tag === criterion.name;\n\n case 'attribute':\n if (!child.attrs) return false;\n\n if (criterion.name === 'class') criterion.name = 'className';\n\n let attr = child.attrs[criterion.name];\n\n if (criterion.name === 'className' && typeof attr === 'string') {\n attr = attr.trim();\n }\n\n if (criterion.ignoreCase && typeof attr === 'string') {\n attr = attr.toLowerCase();\n criterion.value = criterion.value.toLowerCase();\n }\n\n switch (criterion.action) {\n case 'exists':\n return child.attrs.hasOwnProperty(criterion.name);\n case 'equals':\n return attr === criterion.value;\n case 'start':\n return attr?.startsWith?.(criterion.value) || false;\n case 'end':\n return attr?.endsWith?.(criterion.value) || false;\n case 'element':\n return (attr as string)?.split?.(' ')?.includes?.(criterion.value) || false;\n }\n }\n\n return false;\n });\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\nimport { SelectFollowUserTypeModal } from './components/SelectFollowLevelModal';\nimport User from 'flarum/common/models/User';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport { findFirstVdomChild } from './util/findVdomChild';\n\n/**\n * Opens the SelectFollowLevelModal with the provided user.\n *\n * @param {User} user\n */\nfunction openFollowLevelModal(user) {\n if (!(user instanceof User)) return;\n\n app.modal.show(SelectFollowUserTypeModal, { user });\n}\n\nexport default function addFollowControls() {\n extend(UserControls, 'userControls', function (items, user) {\n const followingBlockingUser = !user.canBeFollowed() && user.followed();\n const icon = 'fas fa-user-friends';\n\n if (followingBlockingUser) {\n items.add(\n 'unfollow',\n <Button\n icon={icon}\n onclick={async () => {\n const x = await user.save({ followUsers: null });\n m.redraw();\n }}\n >\n {app.translator.trans('ianm-follow-users.forum.user_controls.unfollow_button')}\n </Button>\n );\n }\n\n if (\n !app.session.user ||\n app.session.user === user ||\n !user.canBeFollowed() ||\n followingBlockingUser ||\n (app.forum.attribute('ianm-follow-users.button-on-profile') &&\n !(app.current.data.routeName === 'fof_user_directory' && app.forum.attribute('userDirectorySmallCards')))\n ) {\n return;\n }\n\n items.add(\n 'follow',\n <Button icon={icon} onclick={openFollowLevelModal.bind(this, user)}>\n {app.translator.trans(`ianm-follow-users.forum.user_controls.${user.followed() ? 'change_button' : 'follow_button'}`)}\n </Button>\n );\n });\n\n extend(UserCard.prototype, 'view', function (view) {\n const user = this.attrs.user;\n if (\n !app.forum.attribute('ianm-follow-users.button-on-profile') ||\n !app.session.user ||\n app.session.user === user ||\n !user.canBeFollowed() ||\n view.attrs.className.includes('UserCard--small')\n ) {\n return;\n }\n\n const followButton = (\n <Button className=\"Button\" icon=\"fas fa-user-friends\" onclick={openFollowLevelModal.bind(this, user)}>\n {user.followed()\n ? app.translator.trans(`ianm-follow-users.forum.badge.label.${user.followed()}`)\n : app.translator.trans('ianm-follow-users.forum.user_controls.follow_button')}\n </Button>\n );\n\n findFirstVdomChild(view, '.UserCard-profile', (vdom) => {\n vdom.children.splice(2, 0, followButton);\n });\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewDiscussionNotification extends Notification {\n icon() {\n return 'fas fa-user-friends';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n\n return app.route.discussion(discussion);\n }\n\n content() {\n return app.translator.trans('ianm-follow-users.forum.notifications.new_discussion_text', {\n user: this.attrs.notification.fromUser(),\n title: this.attrs.notification.subject().title(),\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewPostNotification extends Notification {\n icon() {\n return 'fas fa-user-friends';\n }\n\n href() {\n const notification = this.attrs.notification;\n const discussion = notification.subject();\n const content = notification.content() || {};\n\n return app.route.discussion(discussion, content.postNumber);\n }\n\n content() {\n return app.translator.trans('ianm-follow-users.forum.notifications.new_post_text', {\n user: this.attrs.notification.fromUser(),\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewFollowerNotification extends Notification {\n icon() {\n return 'fas fa-user-plus';\n }\n\n href() {\n const notification = this.attrs.notification;\n const user = notification.subject();\n\n return app.route.user(user);\n }\n\n content() {\n return app.translator.trans('ianm-follow-users.forum.notifications.new_follower_text', {\n user: this.attrs.notification.fromUser(),\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class NewUnfollowerNotification extends Notification {\n icon() {\n return 'fas fa-user-minus';\n }\n\n href() {\n const notification = this.attrs.notification;\n const user = notification.subject();\n\n return app.route.user(user);\n }\n\n content() {\n return app.translator.trans('ianm-follow-users.forum.notifications.new_unfollower_text', {\n user: this.attrs.notification.fromUser(),\n });\n }\n\n excerpt() {\n return null;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.extensions['fof-follow-tags'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.extensions['fof-user-directory'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","import app from 'flarum/common/app';\nimport * as follow_tags from '@fof-follow-tags';\n\n// We need to add options to the list of options available on the following page\n// As `follow_tags.utils.followingPageOptions` is a function, we cannot really\n// extend or override it with the Flarum helpers.\n// As the result of this function is cached after its first execution,\n// we can use the below version and execute this one to cache the desired options.\n\n// Save the reference to the original function, as it will be overriden\nconst original = follow_tags.utils.followingPageOptions;\n\n// Customized version of the helper with addition options for followed users\nexport default (section) => {\n // Get the original options\n const options = original(section);\n\n options.users = app.translator.trans('ianm-follow-users.lib.following_link');\n\n // Return the mutated options list\n return options;\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Separator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Placeholder'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\nimport UserCard from 'flarum/forum/components/UserCard';\n\nexport default class FollowedUserListItem extends Component {\n view() {\n const { user } = this.attrs;\n\n return (\n <div className=\"User\">\n <UserCard user={user} className=\"UserCard--follow-list\" controlsButtonClassName=\"Button Button--icon Button--flat\" />\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","import app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport { SelectFollowUserTypeModal } from './SelectFollowLevelModal';\nimport Placeholder from 'flarum/common/components/Placeholder';\nimport FollowedUserListItem from './FollowedUserListItem';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport default class ProfilePage extends UserPage {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.refresh();\n }\n\n refresh() {\n this.loading = true;\n this.loadUser(app.session.user.username());\n this.followedUsers = app.session.user.followedUsers();\n\n this.loading = false;\n m.redraw();\n }\n\n changeUserFollowOptions(user) {\n app.modal.show(SelectFollowUserTypeModal, { user });\n }\n\n content() {\n if (this.loading) {\n return (\n <div className=\"DiscussionList\">\n <LoadingIndicator />\n </div>\n );\n }\n\n if (this.followedUsers.length === 0) {\n return (\n <div className=\"DiscussionList\">\n <Placeholder text={app.translator.trans('ianm-follow-users.forum.profile_page.no_following')} />\n </div>\n );\n }\n\n return (\n <div className=\"FollowedUserList\">\n <ul className=\"FollowedUserList-users\">\n {this.followedUsers.map((user) => {\n return (\n <li key={user.id()} data-id={user.id()}>\n <FollowedUserListItem user={user} />\n </li>\n );\n })}\n </ul>\n </div>\n );\n }\n\n show() {\n this.user = app.session.user;\n\n m.redraw();\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\nimport ProfilePage from './components/ProfilePage';\n\nexport default [\n new Extend.Model(User)\n .attribute<boolean>('followed')\n .hasMany<User>('followedUsers')\n .hasMany<User>('followedBy')\n .attribute<boolean>('blocksFollow')\n .attribute<boolean>('canBeFollowed')\n .attribute<number>('followingCount')\n .attribute<number>('followerCount'),\n\n new Extend.Routes().add('user.followedUsers', '/u/:username/followedUsers', ProfilePage),\n];\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport addFollowControls from './addFollowControls';\nimport addProfilePage from './addProfilePage';\nimport NewDiscussionNotification from './components/NewDiscussionNotification';\nimport NewPostNotification from './components/NewPostNotification';\nimport NewFollowerNotification from './components/NewFollowerNotification';\nimport NewUnfollowerNotification from './components/NewUnfollowerNotification';\nimport addFollowBadge from './addFollowBadge';\nimport addPrivacySetting from './addPrivacySetting';\nimport addFollowingUsers from './addFollowingUsers';\nimport addUserCardStats from './addUserCardStats';\n\nexport { default as extend } from './extend';\n\napp.initializers.add(\n 'ianm-follow-users',\n () => {\n addFollowControls();\n addProfilePage();\n addFollowBadge();\n addPrivacySetting();\n addFollowingUsers();\n addUserCardStats();\n\n app.notificationComponents.newFollower = NewFollowerNotification;\n app.notificationComponents.newUnfollower = NewUnfollowerNotification;\n app.notificationComponents.newDiscussionByUser = NewDiscussionNotification;\n app.notificationComponents.newPostByUser = NewPostNotification;\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('newFollower', {\n name: 'newFollower',\n icon: 'fas fa-user-plus',\n label: app.translator.trans('ianm-follow-users.forum.settings.notify_new_follower_label'),\n });\n items.add('newUnfollower', {\n name: 'newUnfollower',\n icon: 'fas fa-user-minus',\n label: app.translator.trans('ianm-follow-users.forum.settings.notify_new_unfollower_label'),\n });\n items.add('newDiscussionByUser', {\n name: 'newDiscussionByUser',\n icon: 'fas fa-user-friends',\n label: app.translator.trans('ianm-follow-users.forum.settings.notify_new_discussion_label'),\n });\n items.add('newPostByUser', {\n name: 'newPostByUser',\n icon: 'fas fa-user-friends',\n label: app.translator.trans('ianm-follow-users.forum.settings.notify_new_post_label'),\n });\n });\n },\n -1\n);\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport UserPage from 'flarum/forum/components/UserPage';\n\nexport default function () {\n extend(UserPage.prototype, 'navItems', function (items) {\n if (app.session.user && app.session.user === this.user) {\n const followedUsersCount = this.user.followingCount();\n\n items.add(\n 'followed-users',\n <LinkButton href={app.route('user.followedUsers', { username: this.user.slug() })} icon=\"fas fa-user-friends\">\n {app.translator.trans('ianm-follow-users.forum.profile_link')}\n <span className=\"Button-badge\">{followedUsersCount}</span>\n </LinkButton>\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport User from 'flarum/common/models/User';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addFollowBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.user()?.followed?.()) {\n badges.add(\n 'user-following',\n <Badge\n label={app.translator.trans(`ianm-follow-users.forum.badge.label.${this.user().followed()}`)}\n icon=\"fas fa-user-friends\"\n type=\"friend\"\n />\n );\n }\n });\n\n extend(User.prototype, 'badges', function (badges) {\n if (this.followed()) {\n badges.add(\n 'user-following',\n <Badge label={app.translator.trans(`ianm-follow-users.forum.badge.label.${this.followed()}`)} icon=\"fas fa-user-friends\" type=\"friend\" />\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport Switch from 'flarum/common/components/Switch';\n\nexport default function () {\n extend(SettingsPage.prototype, 'privacyItems', function (items) {\n items.add(\n 'follow-users-block',\n <Switch\n state={this.user.preferences().blocksFollow}\n onchange={(value) => {\n this.blocksFollowLoading = true;\n\n this.user.savePreferences({ blocksFollow: value }).then(() => {\n this.blocksFollowLoading = false;\n m.redraw();\n });\n }}\n loading={this.blocksFollowLoading}\n >\n {app.translator.trans('ianm-follow-users.forum.settings.block_follow')}\n </Switch>\n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport * as follow_tags from '@fof-follow-tags';\nimport * as user_directory from '@fof-user-directory';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport followingPageOptions from '../common/helpers/followingPageOptions';\nimport Separator from 'flarum/common/components/Separator';\n\nexport default function () {\n if (app.initializers.has('fof/follow-tags')) {\n // Replace the original function with our customized version\n follow_tags.utils.followingPageOptions = followingPageOptions;\n // Execute the customized helper to cache the returned list of options\n follow_tags.utils.followingPageOptions('forum.index.following');\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (!follow_tags.utils.isFollowingPage() || !app.session.user) return;\n\n if (!this.followTags) {\n this.followTags = follow_tags.utils.getDefaultFollowingFiltering();\n }\n\n const followTags = this.followTags;\n\n if (app.current.get('routeName') === 'following' && followTags === 'users') {\n params.filter['following-users'] = true;\n\n delete params.filter.subscription;\n }\n });\n }\n\n if (app.initializers.has('fof-user-directory')) {\n extend(user_directory.UserDirectoryPage.prototype, 'groupItems', function (items) {\n items.add(\n 'follow-users',\n user_directory.CheckableButton.component(\n {\n className: 'GroupFilterButton',\n icon: 'fas fa-user-friends',\n checked: this.enabledSpecialGroupFilters['ianm-follow-users'] === 'is:followeduser',\n onclick: () => {\n const id = 'ianm-follow-users';\n if (this.enabledSpecialGroupFilters[id] === 'is:followeduser') {\n this.enabledSpecialGroupFilters[id] = '';\n } else {\n this.enabledSpecialGroupFilters[id] = 'is:followeduser';\n }\n\n this.changeParams(this.params().sort);\n },\n },\n app.translator.trans('ianm-follow-users.forum.filter.following')\n ),\n 65\n );\n\n items.add('separator', <Separator />, 50);\n });\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport icon from 'flarum/common/helpers/icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport app from 'flarum/forum/app';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport type Mithril from 'mithril';\n\nexport default function addUserCardStats() {\n extend(UserCard.prototype, 'infoItems', function (items: ItemList<Mithril.Children>) {\n if (!this.attrs.user || !app.forum.attribute('ianm-follow-users.stats-on-profile')) return;\n\n const user = this.attrs.user;\n const followedUsersCount = user.followingCount();\n const followersUsersCount = user.followerCount();\n\n items.add(\n 'followers',\n <div className=\"FollowUsers--stats\">\n <span>\n {icon('fas fa-user-friends')}\n <span className=\"Button-badge\">{followedUsersCount} </span>{' '}\n {app.translator.trans('ianm-follow-users.forum.followed', { count: followedUsersCount })}\n <span className=\"Button-badge\">{followersUsersCount}</span>{' '}\n {app.translator.trans('ianm-follow-users.forum.followers', { count: followersUsersCount })}\n </span>\n </div>,\n 40\n );\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/mixin'];","import Model from 'flarum/common/Model';\nimport computed from 'flarum/common/utils/computed';\nimport mixin from 'flarum/common/utils/mixin';\n\nexport default class UsernameRequest extends mixin(Model, {\n user: Model.hasOne('user'),\n status: Model.attribute('status'),\n reason: Model.attribute('reason'),\n createdAt: Model.attribute('createdAt', Model.transformDate),\n forNickname: Model.attribute('forNickname'),\n\n _requestedUsername: Model.attribute('requestedUsername'),\n requestedUsername: computed('_requestedUsername', 'forNickname', 'user', (newName, forNickname, user) => {\n return newName === null && forNickname ? user.username() : newName;\n }),\n}) {}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/forum/app';\nimport Stream from 'flarum/common/utils/Stream';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\n\nexport default class RequestModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.username = Stream(this.attrs.nickname ? app.session.user.displayName() : app.session.user.username());\n\n this.userRequestAttr = `last${this.attrs.nickname ? 'Nickname' : 'Username'}Request`;\n\n this.lastRequest = app.session.user[this.userRequestAttr]();\n\n if (this.lastRequest) this.username(this.lastRequest.requestedUsername());\n\n this.success = false;\n\n this.password = Stream('');\n\n this.translationPrefix = `fof-username-request.forum.${this.attrs.nickname ? 'nickname' : 'username'}_modals.request`;\n }\n\n className() {\n return 'RequestUsernameModal Modal--small';\n }\n\n title() {\n return app.translator.trans(`${this.translationPrefix}.title`);\n }\n\n content() {\n if (this.success) {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <p className=\"helpText\">{app.translator.trans(`${this.translationPrefix}.confirmation_message`)}</p>\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" onclick={this.hide.bind(this)}>\n {app.translator.trans(`${this.translationPrefix}.dismiss_button`)}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n {this.lastRequest ? (\n <p className=\"helpText\">\n {app.translator.trans(`${this.translationPrefix}.current_request`, {\n name: this.lastRequest.requestedUsername(),\n })}\n </p>\n ) : (\n ''\n )}\n <div className=\"Form-group\">\n <input\n type=\"text\"\n name=\"text\"\n className=\"FormControl\"\n placeholder={app.session.user.username()}\n bidi={this.username}\n disabled={this.deleteLoading || this.submitLoading}\n />\n </div>\n {app.forum.attribute('passwordlessSignUp') ? null : (\n <div className=\"Form-group\">\n <input\n type=\"password\"\n name=\"password\"\n className=\"FormControl\"\n placeholder={app.translator.trans('core.forum.change_email.confirm_password_placeholder')}\n bidi={this.password}\n disabled={this.deleteLoading || this.submitLoading}\n />\n </div>\n )}\n <div className=\"Form-group\">\n {Button.component(\n {\n className: 'Button Button--primary Button--block',\n type: 'submit',\n loading: this.submitLoading,\n },\n app.translator.trans(`${this.translationPrefix}.submit_button`)\n )}\n </div>\n {this.lastRequest ? (\n <div className=\"Form-group\">\n {Button.component(\n {\n className: 'Button Button--primary Button--block',\n onclick: this.deleteRequest.bind(this),\n loading: this.deleteLoading,\n },\n app.translator.trans(`${this.translationPrefix}.delete_button`)\n )}\n </div>\n ) : (\n ''\n )}\n </div>\n </div>\n );\n }\n\n deleteRequest(e) {\n e.preventDefault();\n\n this.deleteLoading = true;\n\n this.lastRequest.delete();\n\n this.successAlert = app.alerts.show({ type: 'success' }, app.translator.trans(`${this.translationPrefix}.deleted`));\n\n app.session.user[this.userRequestAttr] = Stream();\n\n this.hide();\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.alert = null;\n\n const currentAttr = this.attrs.nickname ? app.session.user.displayName() : app.session.user.username();\n if (this.username() === currentAttr) {\n this.hide();\n return;\n }\n\n this.submitLoading = true;\n\n app.store\n .createRecord('username-requests')\n .save(\n {\n username: this.username(),\n forNickname: this.attrs.nickname,\n },\n {\n meta: { password: this.password() },\n errorHandler: this.onerror.bind(this),\n }\n )\n .then((request) => {\n app.session.user[this.userRequestAttr] = Stream(request);\n this.success = true;\n this.alertAttrs = null;\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n onerror(error) {\n if (error.status === 401) {\n error.alert.content = app.translator.trans('core.forum.change_email.incorrect_password_message');\n this.submitLoading = false;\n }\n\n super.onerror(error);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/withAttr'];","import app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport Modal from 'flarum/common/components/Modal';\nimport username from 'flarum/common/helpers/username';\nimport Stream from 'flarum/common/utils/Stream';\nimport withAttr from 'flarum/common/utils/withAttr';\n\nexport default class ActionModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.request = this.attrs.request;\n\n this.approved = Stream('Rejected');\n\n this.reason = Stream('');\n\n this.translationPrefix = `fof-username-request.forum.${this.request.forNickname() ? 'nickname' : 'username'}_modals.action`;\n }\n\n title() {\n return app.translator.trans(`${this.translationPrefix}.title`);\n }\n\n className() {\n return 'RequestActionModal Modal--medium';\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form\">\n <h3 className=\"Notification-content\">\n {app.translator.trans(`${this.translationPrefix}.name`, {\n name: username(this.request.user()),\n requestedName: this.request.requestedUsername(),\n })}\n </h3>\n <p className=\"help\">{app.translator.trans(`${this.translationPrefix}.help_text`)}</p>\n <legend>{app.translator.trans(`${this.translationPrefix}.decision_title`)}</legend>\n <div className=\"Form-group\">\n <label className=\"checkbox\">\n <input\n type=\"radio\"\n name=\"approved\"\n value=\"Approved\"\n checked={this.approved() === 'Approved'}\n onclick={withAttr('value', this.approved)}\n />\n {app.translator.trans(`${this.translationPrefix}.approval_label`)}\n </label>\n <label className=\"checkbox\">\n <input\n type=\"radio\"\n name=\"rejected\"\n value=\"Rejected\"\n checked={this.approved() === 'Rejected'}\n onclick={withAttr('value', this.approved)}\n />\n {app.translator.trans(`${this.translationPrefix}.rejected_label`)}\n </label>\n </div>\n {this.approved() === 'Rejected' ? (\n <div className=\"Form-group\">\n <legend>{app.translator.trans(`${this.translationPrefix}.reason_title`)}</legend>\n <div className=\"BasicsPage-reason-input\">\n <textarea className=\"FormControl\" value={this.reason()} disabled={this.loading} oninput={withAttr('value', this.reason)} />\n </div>\n </div>\n ) : (\n ''\n )}\n <div className=\"Form-group\">\n {Button.component(\n {\n className: 'Button Button--primary Button--block',\n type: 'submit',\n loading: this.loading,\n disabled: this.approved() === 'Rejected' && !this.reason() ? true : false,\n },\n app.translator.trans(`${this.translationPrefix}.submit_button`)\n )}\n </div>\n </div>\n </div>\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n this.request\n .save({\n reason: this.reason(),\n action: this.approved(),\n })\n .then(() => {\n this.successAlert = app.alerts.show({ type: 'success' }, app.translator.trans(`${this.translationPrefix}.success`));\n });\n\n app.cache.username_requests.some((request, i) => {\n if (request.id() == this.request.id()) {\n app.cache.username_requests.splice(i, 1);\n }\n });\n\n m.redraw();\n\n this.hide();\n }\n}\n","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport ActionModal from './ActionModal';\n\nexport default class FlagList extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.loading = false;\n }\n\n view() {\n const requests = app.cache.username_requests || [];\n\n return (\n <div className=\"NotificationList RequestsList\">\n <div className=\"NotificationList-header\">\n <h4 className=\"App-titleControl App-titleControl--text\">{app.translator.trans('fof-username-request.forum.pending_requests.title')}</h4>\n </div>\n <div className=\"NotificationList-content\">\n <ul className=\"NotificationGroup-content\">\n {requests.length ? (\n requests.map((request) => {\n const prefix = request.forNickname() ? 'nickname' : 'username';\n return (\n <li>\n <a onclick={this.showModal.bind(this, request)} className=\"Notification Request\">\n {avatar(request.user())}\n {icon('fas fa-user-edit', { className: 'Notification-icon' })}\n <span className=\"Notification-content\">\n {app.translator.trans(`fof-username-request.forum.pending_requests.${prefix}_item_text`, {\n name: username(request.user()),\n })}\n </span>\n {humanTime(request.createdAt())}\n <div className=\"Notification-excerpt\">\n {app.translator.trans(`fof-username-request.forum.pending_requests.${prefix}_exerpt`, {\n requestedName: request.requestedUsername(),\n })}\n </div>\n </a>\n </li>\n );\n })\n ) : !this.loading ? (\n <div className=\"NotificationList-empty\">{app.translator.trans('fof-username-request.forum.pending_requests.empty_text')}</div>\n ) : (\n LoadingIndicator.component({ className: 'LoadingIndicator--block' })\n )}\n </ul>\n </div>\n </div>\n );\n }\n\n showModal(request) {\n app.modal.show(ActionModal, { request });\n }\n}\n","import app from 'flarum/forum/app';\nimport Page from 'flarum/common/components/Page';\n\nimport RequestsList from './RequestsList';\n\nexport default class RequestsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('requests');\n\n app.usernameRequests.load();\n\n this.bodyClass = 'App--requests';\n }\n\n view() {\n return (\n <div className=\"RequestsPage\">\n <RequestsList state={app.usernameRequests}></RequestsList>\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/HeaderSecondary'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationsDropdown'];","import app from 'flarum/forum/app';\nimport NotificationsDropdown from 'flarum/forum/components/NotificationsDropdown';\n\nimport RequestsList from './RequestsList';\n\nexport default class RequestsDropdown extends NotificationsDropdown {\n static initAttrs(attrs) {\n attrs.label = attrs.label || app.translator.trans('fof-username-request.forum.pending_requests.tooltip');\n attrs.icon = attrs.icon || 'fas fa-user-edit';\n\n super.initAttrs(attrs);\n }\n\n getMenu() {\n return (\n <div className={'Dropdown-menu ' + this.attrs.menuClassName} onclick={this.menuClick.bind(this)}>\n {this.showing ? RequestsList.component({ state: app.usernameRequests }) : ''}\n </div>\n );\n }\n\n goToRoute() {\n m.route.set(app.route('username_requests'));\n }\n\n getUnreadCount() {\n if (app.cache.username_requests) {\n return app.cache.username_requests.length;\n }\n return app.forum.data.relationships.username_requests.data.length;\n }\n\n getNewCount() {\n if (app.cache.username_requests) {\n return app.cache.username_requests.length;\n }\n return app.forum.data.relationships.username_requests.data.length;\n }\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\n\nexport default class ResultsModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.userRequestAttr = `last${this.attrs.nickname ? 'Nickname' : 'Username'}Request`;\n\n this.request = app.session.user[this.userRequestAttr]();\n\n this.translationPrefix = `fof-username-request.forum.${this.request.forNickname() ? 'nickname' : 'username'}_modals.results`;\n }\n\n className() {\n return 'ResultsModal Modal';\n }\n\n title() {\n return app.translator.trans(`${this.translationPrefix}.title`);\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n {this.request.status() === 'Approved'\n ? [\n <h2>{app.translator.trans(`${this.translationPrefix}.approved`)}</h2>,\n <h3>{app.translator.trans(`${this.translationPrefix}.new_name`, { name: app.session.user.displayName() })}</h3>,\n ]\n : [\n <h2>{app.translator.trans(`${this.translationPrefix}.rejected`)}</h2>,\n <h3>{app.translator.trans(`${this.translationPrefix}.reason`, { reason: this.request.reason(), i: <i /> })}</h3>,\n <p className=\"helpText\">{app.translator.trans(`${this.translationPrefix}.resubmit`)}</p>,\n ]}\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary Button--block\" onclick={this.hide.bind(this)}>\n {app.translator.trans(`${this.translationPrefix}.dismiss_button`)}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n onremove() {\n app.session.user[this.userRequestAttr] = Stream();\n this.request.save({ delete: true });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","import UserPage from 'flarum/forum/components/UserPage';\nimport humanTime from 'flarum/common/helpers/humanTime';\n\nexport default class ProfileConfigurePane extends UserPage {\n oninit(vnode) {\n super.oninit(vnode);\n this.loading = true;\n\n this.loadUser(m.route.param('username'));\n }\n\n content() {\n return (\n <table className=\"NotificationGrid\">\n {this.user\n .usernameHistory()\n .slice(0)\n .reverse()\n .map((username) => {\n var oldUsername = Object.keys(username)[0];\n return (\n <tr>\n <td>{oldUsername}</td>\n <td>{humanTime(this.calculateTime(username[oldUsername]))}</td>\n </tr>\n );\n })}\n </table>\n );\n }\n\n show(user) {\n this.user = user;\n\n m.redraw();\n }\n\n calculateTime(time) {\n var d = new Date(0);\n return d.setUTCSeconds(time);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","import app from 'flarum/forum/app';\n\nexport default class RequestsListState {\n constructor(app) {\n this.app = app;\n\n /**\n * Whether or not the flags are loading.\n *\n * @type {Boolean}\n */\n this.loading = false;\n\n this.cache = [];\n }\n\n load() {\n if (app.cache.username_requests) {\n return;\n }\n\n this.loading = true;\n m.redraw();\n\n app.store\n .find('username-requests')\n .then((requests) => {\n delete requests.payload;\n app.cache.username_requests = requests.sort((a, b) => a.createdAt() - b.createdAt());\n })\n .catch(() => {})\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/forum/app';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport UsernameRequest from './models/UsernameRequest';\nimport addRequestSetting from './addRequestSetting';\nimport RequestsPage from './components/RequestsPage';\nimport addRequestDropdown from './addRequestDropdown';\nimport checkForApproval from './checkForApproval';\nimport ProfilePage from './components/ProfilePage';\nimport addProfilePage from './addProfilePage';\nimport RequestsListState from './states/RequestsListState';\n\napp.initializers.add('fof-username-request', () => {\n app.store.models['username-requests'] = UsernameRequest;\n User.prototype.lastNicknameRequest = Model.hasOne('lastNicknameRequest');\n User.prototype.lastUsernameRequest = Model.hasOne('lastUsernameRequest');\n User.prototype.usernameHistory = Model.attribute('usernameHistory');\n\n app.routes.username_requests = { path: '/username-requests', component: RequestsPage };\n app.routes.username_history = { path: '/u/:username/history', component: ProfilePage };\n\n app.usernameRequests = new RequestsListState(app);\n\n addRequestSetting();\n addRequestDropdown();\n checkForApproval();\n addProfilePage();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport RequestModal from './components/RequestModal';\n\nexport default function () {\n extend(SettingsPage.prototype, 'accountItems', function (items) {\n if (app.forum.attribute('canRequestUsername')) {\n items.add(\n 'username-request',\n Button.component(\n {\n className: 'Button',\n onclick: () => {\n app.modal.show(RequestModal);\n },\n },\n app.translator.trans('fof-username-request.forum.settings.username_request_button')\n ),\n 8\n );\n }\n if (\n app.forum.attribute('displayNameDriver') === 'nickname' &&\n app.forum.attribute('canRequestNickname') &&\n !this.user.attribute('canEditOwnNickname') &&\n 'flarum-nicknames' in flarum.extensions\n ) {\n items.add(\n 'nickname-request',\n Button.component(\n {\n className: 'Button',\n onclick: () => {\n app.modal.show(RequestModal, { nickname: true });\n },\n },\n app.translator.trans('fof-username-request.forum.settings.nickname_request_button')\n ),\n 8\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport HeaderSecondary from 'flarum/forum/components/HeaderSecondary';\nimport RequestsDropdown from './components/RequestsDropdown';\n\nexport default function () {\n extend(HeaderSecondary.prototype, 'items', function (items) {\n if (\n (app.forum.data.relationships.username_requests &&\n app.forum.data.relationships.username_requests.data.length &&\n !app.cache.username_requests) ||\n (app.cache.username_requests && app.cache.username_requests.length !== 0)\n ) {\n items.add('UsernameRequests', <RequestsDropdown state={app.usernameRequests} />, 20);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport ResultsModal from './components/ResultsModal';\n\nexport default function () {\n return new Promise(() => {\n setTimeout(() => {\n if (app.session.user) {\n const approvedNickname = app.session.user.lastNicknameRequest() && app.session.user.lastNicknameRequest().status() !== 'Sent';\n const approvedUsername = app.session.user.lastUsernameRequest() && app.session.user.lastUsernameRequest().status() !== 'Sent';\n if (approvedNickname || approvedUsername) {\n app.modal.show(ResultsModal, { nickname: approvedNickname });\n }\n }\n }, 1000);\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport UserPage from 'flarum/forum/components/UserPage';\n\nexport default function () {\n extend(UserPage.prototype, 'navItems', function (items) {\n if (this.user.usernameHistory()) {\n items.add(\n 'username-requests',\n LinkButton.component(\n {\n href: app.route('username_history', { username: this.user.slug() }),\n icon: 'fas fa-user-edit',\n },\n app.translator.trans('fof-username-request.forum.user.name_history_link')\n )\n );\n }\n });\n}\n","(function(){var h=[].slice;String.prototype.autoLink=function(){var b,f,d,a,e,g;a=1<=arguments.length?h.call(arguments,0):[];e=/(^|[\\s\\n]|<[A-Za-z]*\\/?>)((?:https?|ftp):\\/\\/[\\-A-Z0-9+\\u0026\\u2019@#\\/%?=()~_|!:,.;]*[\\-A-Z0-9+\\u0026@#\\/%=~()_|])/gi;if(!(0<a.length))return this.replace(e,\"$1<a href='$2'>$2</a>\");d=a[0];f=function(){var c;c=[];for(b in d)g=d[b],\"callback\"!==b&&c.push(\" \"+b+\"='\"+g+\"'\");return c}().join(\"\");return this.replace(e,function(c,b,a){c=(\"function\"===typeof d.callback?d.callback(a):\nvoid 0)||\"<a href='\"+a+\"'\"+f+\">\"+a+\"</a>\";return\"\"+b+c})}}).call(this);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport classList from 'flarum/common/utils/classList';\nimport extractText from 'flarum/common/utils/extractText';\n\n/**\n * The `UserBio` component displays a user's bio, optionally letting the user\n * edit it.\n */\nexport default class UserBio extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n /**\n * Whether or not the bio is currently being edited.\n *\n * @type {Boolean}\n */\n this.editing = false;\n\n /**\n * Whether or not the bio is currently being saved.\n *\n * @type {Boolean}\n */\n this.loading = false;\n\n /**\n * The max configured character count the bio may be\n */\n this.bioMaxLength = app.forum.attribute('fof-user-bio.maxLength');\n\n /**\n * The placeholder shown in the bio textbox when no input is set.\n */\n this.bioPlaceholder =\n app.session && app.session.user && app.session.user.id() === this.attrs.user.id()\n ? // Normal placeholder if they're looking at their own profile\n app.translator.trans('fof-user-bio.forum.userbioPlaceholder')\n : // Special placeholder if someone else is viewing their profile with edit access\n app.translator.trans('fof-user-bio.forum.userbioPlaceholderOtherUser', {\n username: this.attrs.user.displayName(),\n });\n }\n\n view() {\n const user = this.attrs.user;\n const editable = this.attrs.user.attribute('canEditBio');\n let content;\n\n if (this.editing) {\n const tempBio = this.tempBio;\n const value = tempBio ?? user.bio();\n\n const focusIfErrored = (vnode) => {\n const textarea = vnode.dom;\n\n textarea.value = value;\n\n if (tempBio !== undefined) {\n textarea.value = tempBio;\n textarea.focus();\n\n if (this.tempSelector !== undefined) {\n textarea.selectionStart = this.tempSelector;\n textarea.selectionEnd = this.tempSelector;\n\n delete this.tempSelector;\n }\n }\n };\n\n content = (\n <textarea\n className=\"FormControl\"\n placeholder={extractText(this.bioPlaceholder)}\n rows=\"3\"\n maxlength={this.bioMaxLength}\n oncreate={focusIfErrored}\n />\n );\n } else {\n let subContent;\n\n if (this.loading) {\n subContent = (\n <p className=\"UserBio-placeholder\">\n <LoadingIndicator />\n </p>\n );\n } else {\n const bioHtml = user.bioHtml();\n\n if (bioHtml) {\n subContent = m.trust(bioHtml);\n } else if (user.bio()) {\n subContent = m.trust('<p>' + $('<div/>').text(user.bio()).html().replace(/\\n/g, '<br>').autoLink({ rel: 'nofollow ugc' }) + '</p>');\n } else if (editable) {\n subContent = <p className=\"UserBio-placeholder\">{this.bioPlaceholder}</p>;\n }\n }\n\n const maxLines = app.forum.attribute('fof-user-bio.maxLines');\n\n content = (\n <div className=\"UserBio-content\" onclick={editable ? this.edit.bind(this) : () => undefined} style={{ '--bio-max-lines': maxLines }}>\n {subContent}\n </div>\n );\n }\n\n return (\n <div\n className={\n 'UserBio ' +\n classList({\n editable,\n editing: this.editing,\n })\n }\n >\n {content}\n </div>\n );\n }\n\n /**\n * Edit the bio.\n */\n edit() {\n this.editing = true;\n m.redraw.sync();\n\n const bio = this;\n const save = function (e) {\n if (e.shiftKey) return;\n e.preventDefault();\n\n bio.save(e.target.value, e.type === 'blur');\n };\n\n this.$('textarea').trigger('focus').on('blur', save).bind('keydown', 'return', save);\n m.redraw();\n }\n\n /**\n * Save the bio.\n *\n * @param {String} value\n */\n save(value, wasBlurred) {\n const user = this.attrs.user;\n const tempSelector = this.$('textarea').prop('selectionStart');\n\n const shouldIgnore = wasBlurred && value === this.tempBio;\n\n // Don't constantly try to save when blurring textarea\n if (!shouldIgnore && user.bio() !== value) {\n this.loading = true;\n\n user\n .save({ bio: value })\n .catch(() => {\n this.tempBio = value;\n this.tempSelector = tempSelector;\n this.edit();\n })\n .then(() => {\n this.loading = false;\n delete this.tempBio;\n m.redraw();\n });\n }\n\n if (shouldIgnore) {\n delete this.tempBio;\n }\n\n this.editing = false;\n m.redraw();\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import UserBio from './UserBio';\n\nexport const components = {\n UserBio,\n};\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport 'autolink-js';\nimport computed from 'flarum/common/utils/computed';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport UserBio from './components/UserBio';\n\nexport * from './components';\n\napp.initializers.add('fof-user-bio', () => {\n User.prototype.bio = Model.attribute('bio');\n User.prototype.bioHtml = Model.attribute('bioHtml');\n\n extend(UserCard.prototype, 'infoItems', function (items) {\n let user = this.attrs.user;\n\n if (!user.attribute('canViewBio')) {\n return;\n }\n\n items.add('bio', <UserBio user={user} />, -100);\n });\n});\n","module.exports = require(\"regenerator-runtime\");\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Post'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditor'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport classList from 'flarum/common/utils/classList';\n\nexport default class UploadButton extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.attrs.uploader.on('uploaded', () => {\n // reset the button for a new upload\n this.$('form')[0].reset();\n\n // redraw to reflect uploader.loading in the DOM\n m.redraw();\n });\n\n this.isMediaUploadButton = vnode.attrs.isMediaUploadButton || false;\n }\n\n view() {\n const buttonText = this.attrs.uploader.uploading\n ? app.translator.trans('fof-upload.forum.states.loading')\n : app.translator.trans('fof-upload.forum.buttons.upload');\n\n return (\n <Button\n className={classList([\n 'Button',\n 'hasIcon',\n 'fof-upload-button',\n !this.isMediaUploadButton && !this.attrs.uploader.uploading && 'Button--icon',\n !this.isMediaUploadButton && !this.attrs.uploader.uploading && 'Button--link',\n this.attrs.uploader.uploading && 'uploading',\n ])}\n icon={!this.attrs.uploader.uploading && 'fas fa-file-upload'}\n onclick={this.uploadButtonClicked.bind(this)}\n disabled={this.attrs.disabled}\n >\n {this.attrs.uploader.uploading && <LoadingIndicator size=\"small\" display=\"inline\" className=\"Button-icon\" />}\n {(this.isMediaUploadButton || this.attrs.uploader.uploading) && <span className=\"Button-label\">{buttonText}</span>}\n <form>\n <input type=\"file\" multiple={true} onchange={this.process.bind(this)} />\n </form>\n </Button>\n );\n }\n\n /**\n * Process the upload event.\n *\n * @param e\n */\n process(e) {\n // get the file from the input field\n const files = this.$('input').prop('files');\n\n if (files.length === 0) {\n // We've got no files to upload, so trying\n // to begin an upload will show an error\n // to the user.\n return;\n }\n\n this.attrs.uploader.upload(files, !this.isMediaUploadButton);\n }\n\n /**\n * Event handler for upload button being clicked\n *\n * @param {PointerEvent} e\n */\n uploadButtonClicked(e) {\n // Trigger click on hidden input element\n // (Opens file dialog)\n this.$('input').click();\n }\n}\n","export default class DragAndDrop {\n constructor(upload, composerElement) {\n this.upload = upload;\n this.composerElement = composerElement;\n\n // Keep references to the bound methods so we can remove the event listeners later\n this.handlers = {};\n\n if (!this.supportsFileDragging()) {\n return;\n }\n\n this.composerElement.addEventListener('dragover', (this.handlers.in = this.in.bind(this)));\n\n this.composerElement.addEventListener('dragleave', (this.handlers.out = this.out.bind(this)));\n this.composerElement.addEventListener('dragend', this.handlers.out);\n\n this.composerElement.addEventListener('drop', (this.handlers.dropping = this.dropping.bind(this)));\n }\n\n supportsFileDragging() {\n // Based on https://css-tricks.com/drag-and-drop-file-uploading/\n const div = document.createElement('div');\n\n return ('draggable' in div || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;\n }\n\n unload() {\n // If the handlers were not set (drag and drop not supported), we skip removing them\n if (!this.handlers.in) {\n return;\n }\n\n this.composerElement.removeEventListener('dragover', this.handlers.in);\n\n this.composerElement.removeEventListener('dragleave', this.handlers.out);\n this.composerElement.removeEventListener('dragend', this.handlers.out);\n\n this.composerElement.removeEventListener('drop', this.handlers.dropping);\n }\n\n isNotFile(event) {\n // Checking event.dataTransfer.files.length does not work on dragover event, it's always zero\n // So we use the dataTransfer.items property to check whether any file is being dragged\n if (event.dataTransfer.items) {\n for (let i = 0; i < event.dataTransfer.items.length; i++) {\n if (event.dataTransfer.items[i].kind !== 'file') {\n return true;\n }\n }\n }\n\n return false;\n }\n\n in(event) {\n if (this.isNotFile(event)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.over) {\n this.composerElement.classList.add('fof-upload-dragging');\n this.over = true;\n }\n }\n\n out(event) {\n if (this.isNotFile(event)) {\n return;\n }\n\n event.preventDefault();\n\n if (this.over) {\n this.composerElement.classList.remove('fof-upload-dragging');\n this.over = false;\n }\n }\n\n dropping(event) {\n if (this.isNotFile(event)) {\n return;\n }\n\n event.preventDefault();\n\n this.upload(event.dataTransfer.files);\n\n this.composerElement.classList.remove('fof-upload-dragging');\n }\n}\n","export default class PasteClipboard {\n constructor(upload, element) {\n this.upload = upload;\n\n // We don't need to remove the events listeners, because they'll get removed when the DOM does.\n element.addEventListener('paste', this.paste.bind(this));\n }\n\n paste(e) {\n if (e.clipboardData && e.clipboardData.items) {\n const items = e.clipboardData.items;\n\n const files = [];\n\n for (let i = 0; i < items.length; i++) {\n if (items[i].type.indexOf('image') !== -1) {\n files.push(items[i].getAsFile());\n }\n }\n\n if (files.length > 0) {\n e.preventDefault();\n\n this.upload(files);\n }\n }\n }\n}\n","import app from 'flarum/forum/app';\n\nexport default class Uploader {\n constructor() {\n this.callbacks = {\n success: [],\n failure: [],\n uploading: [],\n uploaded: [],\n };\n this.uploading = false;\n }\n\n setState(fileState) {\n this.fileState = fileState;\n }\n\n on(type, callback) {\n this.callbacks[type].push(callback);\n }\n\n dispatch(type, response) {\n this.callbacks[type].forEach((callback) => callback(response));\n }\n\n upload(files, addBBcode = true) {\n this.uploading = true;\n this.dispatch('uploading', files);\n\n m.redraw(); // Forcing a redraw so that the button also updates if uploadFiles() is called from DragAndDrop or PasteClipboard\n\n const body = new FormData();\n\n for (let i = 0; i < files.length; i++) {\n body.append('files[]', files[i]);\n }\n\n // send a POST request to the api\n return app\n .request({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/fof/upload',\n // prevent JSON.stringify'ing the form data in the XHR call\n serialize: (raw) => raw,\n body,\n })\n .then((result) => this.uploaded(result, addBBcode))\n .catch((error) => {\n this.uploading = false;\n m.redraw();\n\n const e = error.response.errors[0];\n\n if (!e.code.includes('fof-upload')) {\n throw error;\n }\n\n app.alerts.clear();\n app.alerts.show(\n {\n type: 'error',\n },\n e.detail\n );\n });\n }\n\n uploaded(result, addBBcode = false) {\n this.uploading = false;\n\n result.data.forEach((file) => {\n const fileObj = app.store.pushObject(file);\n\n // Add file to media manager\n this.fileState?.addToList(fileObj);\n\n // Dispatch\n this.dispatch('success', {\n file: fileObj,\n addBBcode,\n });\n });\n\n this.dispatch('uploaded');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","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}","const mimeToIconMap = new Map<string, string>([\n // Image formats\n ['image/png', 'far fa-file-image'],\n ['image/jpg', 'far fa-file-image'],\n ['image/jpeg', 'far fa-file-image'],\n ['image/svg+xml', 'far fa-file-image'],\n ['image/gif', 'far fa-file-image'],\n ['image/bmp', 'far fa-file-image'],\n ['image/webp', 'far fa-file-image'],\n\n // Compressed file formats\n ['application/zip', 'far fa-file-archive'],\n ['application/x-7z-compressed', 'far fa-file-archive'],\n ['application/gzip', 'far fa-file-archive'],\n ['application/vnd.rar', 'far fa-file-archive'],\n ['application/x-rar-compressed', 'far fa-file-archive'],\n ['application/x-tar', 'far fa-file-archive'],\n ['application/x-iso9660-image', 'far fa-file-archive'],\n\n // Text and code file formats\n ['text/plain', 'far fa-file-alt'],\n ['text/csv', 'far fa-file-csv'],\n ['text/xml', 'far fa-file-code'],\n ['text/html', 'far fa-file-code'],\n ['text/css', 'far fa-file-code'],\n ['text/javascript', 'far fa-file-code'],\n ['application/json', 'far fa-file-code'],\n ['application/ld+json', 'far fa-file-code'],\n ['application/x-httpd-php', 'far fa-file-code'],\n ['application/xml', 'far fa-file-code'],\n ['text/xml', 'far fa-file-code'],\n\n // Document formats\n ['application/x-abiword', 'far fa-file-word'],\n ['application/msword', 'far fa-file-word'],\n ['application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'far fa-file-word'],\n ['application/vnd.oasis.opendocument.text', 'far fa-file-word'],\n ['application/vnd.ms-excel', 'far fa-file-excel'],\n ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'far fa-file-excel'],\n ['application/vnd.oasis.opendocument.spreadsheet', 'far fa-file-excel'],\n ['application/vnd.ms-powerpoint', 'far fa-file-powerpoint'],\n ['application/vnd.openxmlformats-officedocument.presentationml.presentation', 'far fa-file-powerpoint'],\n ['application/vnd.oasis.opendocument.presentation', 'far fa-file-powerpoint'],\n ['application/pdf', 'far fa-file-pdf'],\n ['application/rtf', 'far fa-file-alt'],\n\n // eBook formats\n ['application/epub+zip', 'far fa-book'],\n ['application/x-mobipocket-ebook', 'far fa-book'],\n ['application/vnd.amazon.ebook', 'far fa-book'],\n\n // Audio formats\n ['audio/mpeg', 'far fa-file-audio'],\n ['audio/wav', 'far fa-file-audio'],\n ['audio/x-wav', 'far fa-file-audio'],\n ['audio/aac', 'far fa-file-audio'],\n ['audio/ogg', 'far fa-file-audio'],\n ['audio/flac', 'far fa-file-audio'],\n ['audio/aiff', 'far fa-file-audio'],\n ['audio/x-aiff', 'far fa-file-audio'],\n\n // Video formats\n ['video/x-msvideo', 'far fa-file-video'],\n ['video/mp4', 'far fa-file-video'],\n ['video/quicktime', 'far fa-file-video'],\n]);\n\nexport default function mimeToIcon(fileType: string): string {\n // Directly return the icon if the fileType is in the map\n return (\n mimeToIconMap.get(fileType) ||\n (function () {\n // Check for generic types\n if (fileType.startsWith('image/')) {\n return 'far fa-file-image';\n } else if (fileType.startsWith('video/')) {\n return 'far fa-file-video';\n } else if (fileType.startsWith('audio/')) {\n return 'far fa-file-audio';\n }\n\n // Default icon\n return 'far fa-file';\n })()\n );\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","import app from 'flarum/common/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport File from '../models/File';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport icon from 'flarum/common/helpers/icon';\nimport mimeToIcon from '../mimeToIcon';\nimport User from 'flarum/common/models/User';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport extractText from 'flarum/common/utils/extractText';\n\ninterface CustomAttrs extends ComponentAttrs {\n file: File;\n fileSelectable: boolean;\n isSelected: boolean;\n fileClassNames: string;\n isFileHiding: boolean;\n onHide: (file: File) => void | undefined;\n onFileClick: (file: File) => void | undefined;\n onDelete: (file: File) => void | undefined;\n user: User;\n}\n\nexport default class DisplayFile extends Component<CustomAttrs> {\n isFileHiding!: boolean;\n imageLoaded: boolean = true;\n file!: File;\n fileIcon!: string;\n isSelected!: boolean;\n isSelectable!: boolean;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.file = this.attrs.file;\n this.isFileHiding = this.attrs.isFileHiding === undefined ? false : this.attrs.isFileHiding;\n this.fileIcon = mimeToIcon(this.file.type());\n this.isSelected = this.attrs.isSelected === undefined ? false : this.attrs.isSelected;\n this.isSelectable = this.attrs.fileSelectable === undefined ? true : this.attrs.fileSelectable;\n }\n\n onbeforeupdate(vnode: Mithril.VnodeDOM<CustomAttrs, this>): void {\n super.onbeforeupdate(vnode);\n\n // Make sure the isSelected property is updated\n this.isSelected = this.attrs.isSelected === undefined ? false : this.attrs.isSelected;\n }\n\n view() {\n const isImage = this.file.type().startsWith('image/');\n\n const fileSelectedClass = this.isSelected ? 'selected' : '';\n\n return (\n <div\n className={`UploadedFile ${fileSelectedClass}`}\n key={this.file.uuid()}\n onclick={() => {\n if (this.isSelectable && !this.isFileHiding) {\n this.isSelected = !this.isSelected;\n this.attrs.onFileClick(this.file);\n }\n }}\n disabled={!this.isSelectable || this.isFileHiding}\n >\n {this.imageLoaded && isImage ? (\n <img\n src={this.file.url()}\n className=\"fof-file-image-preview\"\n draggable={false}\n onerror={this.handleImageError}\n onload={this.handleImageLoad}\n alt={this.file.baseName()}\n />\n ) : (\n this.displayIcon(this.fileIcon)\n )}\n\n <div className=\"fof-file-actions\">{this.actionItems(this.file).toArray()}</div>\n\n <div className=\"fof-file-name\">\n <Tooltip text={this.file.baseName()}>\n <span>{this.file.baseName()}</span>\n </Tooltip>\n </div>\n\n {this.isFileHiding && (\n <div class=\"fof-file-loading\" role=\"status\" aria-label={app.translator.trans('fof-upload.lib.file_list.hide_file.loading')}>\n <LoadingIndicator />\n </div>\n )}\n </div>\n );\n }\n\n displayIcon(fileIcon: string): Mithril.Children {\n return (\n <span\n className=\"fof-file-icon\"\n role=\"presentation\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%', // Ensure the container takes up the necessary space\n }}\n >\n {icon(`fa-fw ${fileIcon}`)}\n </span>\n );\n }\n\n actionItems(file: File): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n file.canViewInfo() &&\n items.add(\n 'view-info',\n <Button className=\"Button Button--icon fof-file-action\" icon=\"fas fa-info-circle\" aria-label=\"info\" onclick={() => this.viewFileInfo()} />,\n 100\n );\n\n const transPrefix = file.isShared() ? 'fof-upload.lib.file_list.hide_shared_file' : 'fof-upload.lib.file_list.hide_file';\n const hideTranslation = app.translator.trans(this.file.hidden() ? `${transPrefix}.btn_a11y_label_show` : `${transPrefix}.btn_a11y_label_hide`, {\n fileName: file.baseName(),\n });\n\n file.canHide() &&\n items.add(\n 'hide-file',\n <Tooltip text={hideTranslation} position=\"bottom\">\n <Button\n className=\"Button Button--icon fof-file-action\"\n icon={this.file.hidden() ? 'fas fa-eye' : 'fas fa-eye-slash'}\n aria-label={hideTranslation}\n disabled={this.isFileHiding}\n onclick={(e: Event) => this.hide(e)}\n />\n </Tooltip>,\n 80\n );\n\n const deleteTranslation = app.translator.trans('fof-upload.lib.file_list.delete_file_a11y_label', { fileName: file.baseName() });\n\n file.canDelete() &&\n items.add(\n 'delete-file',\n <Tooltip text={deleteTranslation} position=\"bottom\">\n <Button\n className=\"Button Button--icon fof-file-action\"\n icon=\"fas fa-trash\"\n aria-label={deleteTranslation}\n disabled={this.isFileHiding}\n onclick={(e: MouseEvent) => this.confirmDelete(e)}\n />\n </Tooltip>,\n 60\n );\n\n return items;\n }\n\n // Function to call when image fails to load\n handleImageError = () => {\n this.imageLoaded = false;\n this.fileIcon = 'fas fa-exclamation-triangle';\n this.isSelectable = false;\n m.redraw();\n };\n\n // Function to call when image loads successfully\n handleImageLoad = () => {\n this.imageLoaded = true;\n m.redraw();\n };\n\n viewFileInfo() {\n console.log('view file info');\n }\n\n hide(e: Event) {\n e.stopPropagation();\n\n // TODO: local logic, then:\n\n if (this.attrs.onHide) {\n this.attrs.onHide(this.file);\n }\n }\n\n async confirmDelete(e: MouseEvent) {\n e.stopPropagation();\n\n if (confirm(extractText(app.translator.trans('fof-upload.lib.file_list.delete_confirmation', { fileName: this.file.baseName() })))) {\n const uuid = this.file.uuid();\n await app.request({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + '/fof/upload/delete/' + uuid,\n });\n\n if (this.attrs.onDelete) {\n this.attrs.onDelete(this.file);\n }\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","import app from 'flarum/common/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport File from '../models/File';\nimport type Mithril from 'mithril';\nimport User from 'flarum/common/models/User';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport mimeToIcon from '../mimeToIcon';\nimport classList from 'flarum/common/utils/classList';\nimport Button from 'flarum/common/components/Button';\nimport DisplayFile from './DisplayFile';\nimport Alert from 'flarum/common/components/Alert';\nimport extractText from 'flarum/common/utils/extractText';\nimport FileListState from '../states/FileListState';\nimport { ApiPayloadSingle } from 'flarum/common/Store';\nimport icon from 'flarum/common/helpers/icon';\n\nexport interface FileListAttrs extends ComponentAttrs {\n user: User | null;\n selectable: boolean;\n restrictFileType: string | string[];\n selectedFiles: string[];\n downloadOnClick: boolean;\n onFileSelect: (file: File) => void | undefined;\n onDelete: (file: File) => void | undefined;\n fileState: FileListState;\n}\n\nexport default abstract class AbstractFileList extends Component<FileListAttrs> {\n user: User | null = null;\n inModal!: boolean;\n restrictFileType!: string | string[] | null;\n downloadOnClick!: boolean;\n filesBeingHidden!: string[];\n fileState!: FileListState;\n\n public abstract loadFileList(): void;\n abstract hasMoreResults(): boolean;\n abstract loadMore(): void;\n abstract isLoading(): boolean;\n abstract fileCollection(): File[];\n\n oninit(vnode: Mithril.Vnode<FileListAttrs, this>) {\n super.oninit(vnode);\n\n this.inModal = this.attrs.selectable;\n this.restrictFileType = this.attrs.restrictFileType || null;\n this.downloadOnClick = this.attrs.downloadOnClick || false;\n this.filesBeingHidden = [];\n this.fileState = this.attrs.fileState;\n\n this.loadFileList();\n }\n\n view() {\n return (\n <div className=\"SharedFileList fof-upload-file-list\" aria-live=\"polite\">\n {/* Loading */}\n {this.isLoading() && this.fileCollection().length === 0 && (\n <div className={'fof-upload-loading'}>\n {app.translator.trans('fof-upload.lib.file_list.loading')}\n\n <LoadingIndicator />\n </div>\n )}\n {/* Empty file list */}\n {!this.isLoading() && this.fileCollection().length === 0 && (\n <div className=\"Placeholder\">\n <p className=\"fof-upload-empty\">{app.translator.trans('fof-upload.lib.file_list.empty')}</p>\n </div>\n )}\n {/* File list */}\n <ul>\n {this.fileCollection().map((file: File) => {\n const fileIcon = mimeToIcon(file.type());\n const fileSelectable = this.restrictFileType ? this.isSelectable(file) : true;\n\n const fileClassNames = classList([\n 'fof-file',\n // File is image\n fileIcon === 'far fa-file-image' && 'fof-file-type-image',\n // File is selected\n this.attrs.selectedFiles && this.attrs.selectedFiles.indexOf(file.id() ?? '') >= 0 && 'fof-file-selected',\n ]);\n\n const isFileHiding = this.filesBeingHidden.includes(file.uuid());\n\n return (\n <li aria-busy={isFileHiding} key={file.uuid()}>\n <DisplayFile\n file={file}\n fileSelectable={fileSelectable}\n isSelected={this.attrs.selectedFiles && this.attrs.selectedFiles.indexOf(file.id() ?? '') >= 0}\n fileClassNames={fileClassNames}\n isFileHiding={isFileHiding}\n onHide={this.hideFile.bind(this)}\n onFileClick={this.onFileClick.bind(this)}\n user={this.attrs.user}\n onDelete={this.onDelete.bind(this)}\n />\n </li>\n );\n })}\n {/* Load more files */}\n {this.hasMoreResults() && (\n <div className={'fof-load-more-files'}>\n <Button className={'Button Button--primary'} disabled={this.isLoading()} loading={this.isLoading()} onclick={() => this.loadMore()}>\n {app.translator.trans('fof-upload.lib.file_list.load_more_files_btn')}\n </Button>\n </div>\n )}\n </ul>\n </div>\n );\n }\n\n onDelete(file: File) {\n if (this.attrs.onDelete) {\n this.attrs.onDelete(file);\n }\n }\n\n // Common methods like onFileClick, isSelectable, hideFile...\n\n onFileClick(file: File) {\n // Custom functionality\n if (this.attrs.onFileSelect) {\n this.attrs.onFileSelect(file);\n return;\n }\n\n // Download on click\n if (this.attrs.downloadOnClick) {\n window.open(file.url());\n return;\n }\n }\n\n isSelectable(file: File) {\n const fileType = file.type();\n\n // Custom defined file types\n if (Array.isArray(this.restrictFileType)) {\n return this.restrictFileType.indexOf(fileType) >= 0;\n }\n\n // Image\n else if (this.restrictFileType === 'image') {\n return fileType.includes('image/');\n }\n\n // Audio\n else if (this.restrictFileType === 'audio') {\n return fileType.includes('audio/');\n }\n\n // Video\n else if (this.restrictFileType === 'video') {\n return fileType.includes('video/');\n }\n\n return false;\n }\n\n /**\n * Begins the hiding process for a file.\n *\n * - Shows a native confirmation dialog\n * - If confirmed, sends AJAX request to the hide file API\n */\n async hideFile(file: File) {\n const uuid = file.uuid();\n\n if (this.filesBeingHidden.includes(uuid)) return;\n\n this.filesBeingHidden.push(uuid);\n\n const transPrefix = file.isShared() ? 'fof-upload.lib.file_list.hide_shared_file' : 'fof-upload.lib.file_list.hide_file';\n\n const confirmToggleHide = confirm(\n extractText(\n app.translator.trans(file.hidden() ? `${transPrefix}.show_confirmation` : `${transPrefix}.hide_confirmation`, {\n fileName: file.baseName(),\n })\n )\n );\n\n if (confirmToggleHide) {\n try {\n const filePayload = await app.request<ApiPayloadSingle>({\n method: 'PATCH',\n url: `${app.forum.attribute('apiUrl')}/fof/upload/hide`,\n body: { uuid },\n });\n\n app.store.pushPayload(filePayload);\n m.redraw();\n\n app.alerts.show(Alert, { type: 'success' }, [\n icon(file.hidden() ? 'fas fa-eye-slash' : 'fas fa-eye'),\n ' ',\n app.translator.trans(file?.hidden() ? `${transPrefix}.hide_success` : `${transPrefix}.show_success`),\n ]);\n\n if (this.fileState.user) {\n const index = this.fileState.files.findIndex((file: File) => uuid === file.uuid());\n this.fileState.files.splice(index, 1);\n }\n } catch (error) {\n app.alerts.show(\n Alert,\n { type: 'error' },\n app.translator.trans(file?.hidden() ? `${transPrefix}.hide_fail` : `${transPrefix}.show_fail`, {\n fileName: file.baseName(),\n })\n );\n } finally {\n // Remove file from hiding list\n const i = this.filesBeingHidden.indexOf(uuid);\n this.filesBeingHidden.splice(i, 1);\n }\n }\n }\n}\n","import app from 'flarum/common/app';\nimport File from '../models/File';\nimport AbstractFileList from './AbstractFIleList';\nimport FileListState from '../states/FileListState';\n\nexport default class UserFileList extends AbstractFileList {\n public loadFileList(): void {\n //app.fileListState.setUser(this.attrs.user || app.session.user);\n this.fileState.setUser(this.attrs.user || app.session.user);\n /**\n * The user who's media we are dealing with\n */\n this.user = this.fileState.user; //app.fileListState.user;\n }\n\n hasMoreResults(): boolean {\n return this.fileState.hasMoreResults();\n }\n\n loadMore(): void {\n this.fileState.loadMore();\n }\n\n isLoading(): boolean {\n return this.fileState.isLoading();\n }\n\n fileCollection(): File[] {\n return this.fileState.files;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","import app from 'flarum/common/app';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport Switch from 'flarum/common/components/Switch';\nimport mimeToIcon from '../mimeToIcon';\nimport Button from 'flarum/common/components/Button';\nimport type Mithril from 'mithril';\nimport { ApiResponsePlural } from 'flarum/common/Store';\nimport File from '../models/File';\n\ninterface CustomAttrs extends IInternalModalAttrs {\n onUploadComplete: (files: File | File[]) => void;\n}\n\nexport default class UploadSharedFileModal extends Modal<CustomAttrs> {\n files = [];\n fileInput = null;\n options = {\n shared: true,\n hidden: false,\n };\n loading: boolean = false;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n }\n\n className() {\n return 'UploadSharedFileModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('fof-upload.lib.upload-shared-file-modal.title');\n }\n\n onFileChange(e) {\n this.addFiles(Array.from(e.target.files));\n }\n\n addFiles(newFiles: File[]) {\n (this.files as File[]).push(...newFiles);\n m.redraw();\n }\n\n onDragOver(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n onDrop(e) {\n e.preventDefault();\n e.stopPropagation();\n if (e.dataTransfer && e.dataTransfer.files) {\n this.addFiles(Array.from(e.dataTransfer.files));\n }\n }\n\n onDropzoneClick() {\n if (this.fileInput) {\n this.fileInput.click();\n }\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div\n className=\"UploadSharedFileModal-dropzone\"\n onclick={() => this.onDropzoneClick()}\n ondragover={this.onDragOver.bind(this)}\n ondrop={this.onDrop.bind(this)}\n >\n {app.translator.trans('fof-upload.lib.upload-shared-file-modal.dropzone')}\n <input\n type=\"file\"\n multiple\n onchange={this.onFileChange.bind(this)}\n style={{ opacity: 0, position: 'absolute', left: '-9999px' }}\n oncreate={(vnode) => {\n this.fileInput = vnode.dom;\n }}\n />\n </div>\n <div className=\"UploadSharedFileModal-files\">\n {this.files.map((file: File) => {\n const isImage = file.type.startsWith('image/');\n return (\n <div className=\"UploadedFile\">\n {isImage ? <img src={URL.createObjectURL(file)} alt={file.name} /> : <i className={mimeToIcon(file.type)}></i>}\n <div className=\"UploadedFile-name\">{file.name}</div>\n {/* Remove button */}\n <Button\n className=\"Button Button--icon Button--link UploadedFile-remove\"\n icon=\"fas fa-times\"\n onclick={() => {\n this.files = this.files.filter((f) => f !== file);\n }}\n />\n </div>\n );\n })}\n </div>\n <div className=\"UploadSharedFileModal-options Form-group\">\n <Switch state={this.options.hidden} onchange={(value: boolean) => (this.options.hidden = value)}>\n {app.translator.trans('fof-upload.lib.upload-shared-file-modal.hide-from-media-gallery')}\n </Switch>\n </div>\n <div className=\"UploadSharedFileModal-submit App-primaryControl\">\n <Button\n className=\"Button Button--primary\"\n loading={this.loading}\n onclick={this.upload.bind(this)}\n disabled={!this.files.length || this.loading}\n >\n {app.translator.trans('fof-upload.lib.upload-shared-file-modal.upload')}\n </Button>\n </div>\n </div>\n );\n }\n\n async upload() {\n this.loading = true;\n m.redraw();\n\n const formData = new FormData();\n\n // Append each file to the form data\n this.files.forEach((file) => {\n formData.append('files[]', file);\n });\n\n Object.keys(this.options).forEach((key) => {\n formData.append(`options[${key}]`, this.options[key]);\n });\n\n const results = await app.request<ApiResponsePlural<File>>({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/fof/upload',\n serialize: (raw: FormData) => raw, // Prevent mithril from trying to serialize FormData\n body: formData,\n });\n\n const uploadedFiles = app.store.pushPayload(results);\n\n this.attrs.onUploadComplete(uploadedFiles);\n this.files = [];\n this.hide();\n\n this.loading = false;\n m.redraw();\n }\n}\n","import app from 'flarum/common/app';\nimport File from '../models/File';\nimport AbstractFileList from './AbstractFIleList';\n\nexport default class SharedFileList extends AbstractFileList {\n public loadFileList(): void {\n this.fileState.loadResults();\n }\n\n hasMoreResults() {\n return this.fileState.hasMoreResults();\n }\n\n loadMore() {\n this.fileState.loadMore();\n }\n\n isLoading(): boolean {\n return this.fileState.isLoading();\n }\n\n fileCollection(): File[] {\n return this.fileState.files;\n }\n}\n","import app from 'flarum/common/app';\nimport User from 'flarum/common/models/User';\nimport File from '../models/File';\nimport { ApiQueryParamsPlural, ApiResponsePlural } from 'flarum/common/Store';\n\nexport default class FileListState {\n public user: User | null;\n public files: File[];\n private moreResults: boolean;\n private loading: boolean;\n private sharedFiles: boolean;\n\n constructor(sharedFiles: boolean = false) {\n this.user = null;\n this.files = [];\n this.moreResults = false;\n this.loading = false;\n this.sharedFiles = sharedFiles;\n }\n\n /**\n * Set the user and load their file list.\n * @param user The user whose files to load.\n */\n public setUser(user: User): void {\n if (user === this.user) return;\n\n this.user = user;\n this.files = [];\n this.loadResults();\n }\n\n public refresh(): void {\n this.files = [];\n this.loadResults();\n m.redraw();\n }\n\n /**\n * Load more files for the current user, starting from the given offset.\n * @param offset The starting index for loading more files.\n * @returns A promise resolving to the loaded files.\n */\n public async loadResults(offset: number = 0): Promise<ApiResponsePlural<File>> {\n if (!this.sharedFiles && !this.user) return Promise.reject('User not set');\n\n this.loading = true;\n\n let route: string = 'fof/uploads';\n let params: ApiQueryParamsPlural = {};\n\n if (!this.sharedFiles && this.user) {\n params = {\n filter: { user: this.user.id() },\n page: { offset },\n } as ApiQueryParamsPlural;\n } else {\n route = 'fof/upload/shared-files';\n params = {\n page: { offset },\n } as ApiQueryParamsPlural;\n }\n\n const results = await app.store.find<File[]>(route, params);\n\n return this.parseResults(results);\n }\n\n /**\n * Load the next set of results.\n */\n public async loadMore(): Promise<ApiResponsePlural<File>> {\n this.loading = true;\n return this.loadResults(this.files.length);\n }\n\n private parseResults(results: ApiResponsePlural<File>): ApiResponsePlural<File> {\n this.files = results;\n this.loading = false;\n this.moreResults = !!results.payload?.links?.next;\n m.redraw();\n return results;\n }\n\n /**\n * Add files to the beginning of the list.\n * @param files The files to be added.\n */\n public addToList(files: File | File[]): void {\n if (Array.isArray(files)) {\n this.files.unshift(...files);\n } else {\n this.files.unshift(files);\n }\n m.redraw();\n }\n\n /**\n * Remove files from the list.\n * @param files The files to be removed.\n */\n public removeFromList(files: File | File[]): void {\n if (Array.isArray(files)) {\n this.files = this.files.filter((file) => !files.includes(file));\n } else {\n this.files = this.files.filter((file) => file !== files);\n }\n\n m.redraw();\n }\n\n /**\n * Check if there are files in the list.\n * @returns True if there are files, false otherwise.\n */\n public hasFiles(): boolean {\n return this.files.length > 0;\n }\n\n /**\n * Check if the file list is currently loading.\n * @returns True if loading, false otherwise.\n */\n public isLoading(): boolean {\n return this.loading;\n }\n\n /**\n * Check if there are more files to load.\n * @returns True if there are more files, false otherwise.\n */\n public hasMoreResults(): boolean {\n return this.moreResults;\n }\n\n /**\n * Check if the user has no files and the list is not loading.\n * @returns True if the list is empty and not loading, false otherwise.\n */\n public empty(): boolean {\n return !this.hasFiles() && !this.isLoading();\n }\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport UploadButton from './UploadButton';\nimport UserFileList from '../../common/components/UserFileList';\nimport DragAndDrop from './DragAndDrop';\nimport UploadSharedFileModal from '../../common/components/UploadSharedFileModal';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport SharedFileList from '../../common/components/SharedFileList';\nimport FileListState from '../../common/states/FileListState';\n\nexport default class FileManagerModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n // Initialize upload managers\n this.uploader = vnode.attrs.uploader;\n\n // Current selected files\n this.selectedFiles = [];\n\n // Allow multiselect\n this.multiSelect = vnode.attrs.multiSelect === undefined ? true : vnode.attrs.multiSelect;\n\n // Restrict file selection to specific types\n this.restrictFileType = vnode.attrs.restrictFileType || null;\n\n // Drag & drop\n this.dragDrop = null;\n\n this.selectedFilesLibrary = vnode.attrs.defaultFilesLibrary || 'user';\n\n this.sharedUploads = null;\n\n this.userFileState = new FileListState();\n this.sharedFileState = new FileListState(true);\n\n this.uploader.setState(this.userFileState);\n\n // Initialize uploads\n this.onUpload();\n }\n\n className() {\n return 'Modal--large fof-file-manager-modal';\n }\n\n /**\n * Initialize drag & drop\n */\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.dragDrop = new DragAndDrop((files) => this.uploader.upload(files, false), this.$().find('.Modal-content')[0]);\n }\n\n /**\n * Remove events from modal content\n */\n onremove() {\n if (this.dragDrop) {\n this.dragDrop.unload();\n }\n }\n\n view() {\n const fileCount = this.selectedFiles.length;\n const { hideUser, hideShared } = this.attrs;\n\n return (\n <div className={`Modal modal-dialog ${this.className()}`}>\n <div className=\"Modal-content\">\n <div className=\"fof-modal-buttons App-backControl\">\n {!hideUser && this.selectedFilesLibrary === 'user' && (\n <UploadButton uploader={this.uploader} disabled={this.userFileState.isLoading()} isMediaUploadButton />\n )}\n {app.session.user && app.session.user.uploadSharedFiles() && !hideShared && this.selectedFilesLibrary === 'shared' && (\n <Button\n className=\"Button\"\n icon=\"fas fa-file-upload\"\n onclick={() => {\n this.showUploadModal();\n }}\n >\n {app.translator.trans('fof-upload.forum.buttons.upload')}\n </Button>\n )}\n </div>\n\n <div className=\"fof-drag-and-drop\">\n <div className=\"fof-drag-and-drop-release\">\n <i className=\"fas fa-cloud-upload-alt\" />\n\n {app.translator.trans('fof-upload.lib.file_list.release_to_upload')}\n </div>\n </div>\n\n <div className=\"Modal-header\">\n <h3 className=\"App-titleControl App-titleControl--text\">{app.translator.trans('fof-upload.forum.media_manager')}</h3>\n {app.session.user?.accessSharedFiles() && !hideUser && !hideShared && (\n <div className=\"LibrarySelection\">{this.fileLibraryButtonItems().toArray()}</div>\n )}\n </div>\n\n {this.alertAttrs && (\n <div className=\"Modal-alert\">\n <Alert {...this.alertAttrs} />\n </div>\n )}\n\n <div className=\"Modal-body\">\n {this.selectedFilesLibrary === 'user' && this.userFilesContent()}\n {this.selectedFilesLibrary === 'shared' && this.sharedFilesContent()}\n </div>\n\n <div className=\"Modal-footer\">\n <Button onclick={this.hide.bind(this)} className=\"Button\">\n {app.translator.trans('fof-upload.forum.buttons.cancel')}\n </Button>\n\n <Button\n onclick={this.onSelect.bind(this)}\n disabled={this.selectedFiles.length === 0 || (!this.multiSelect && this.selectedFiles.length > 1)}\n className=\"Button Button--primary\"\n >\n {app.translator.trans('fof-upload.lib.file_list.confirm_selection_btn', { fileCount })}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n fileLibraryButtonItems() {\n const items = new ItemList();\n\n items.add(\n 'user',\n <Button className={`Button Button--flat ${this.selectedFilesLibrary === 'user' ? 'active' : ''}`} onclick={() => this.setLibrary('user')}>\n {app.translator.trans('fof-upload.forum.buttons.media')}\n </Button>\n );\n\n items.add(\n 'shared',\n <Button className={`Button Button--flat ${this.selectedFilesLibrary === 'shared' ? 'active' : ''}`} onclick={() => this.setLibrary('shared')}>\n {app.translator.trans('fof-upload.forum.buttons.shared_media')}\n </Button>\n );\n\n return items;\n }\n\n setLibrary(library) {\n this.selectedFilesLibrary = library;\n m.redraw();\n }\n\n userFilesContent() {\n return (\n <UserFileList\n user={this.attrs.user}\n selectable\n onFileSelect={this.onFileSelect.bind(this)}\n selectedFiles={this.selectedFiles}\n restrictFileType={this.restrictFileType}\n fileState={this.userFileState}\n onDelete={this.onDelete.bind(this)}\n />\n );\n }\n\n sharedFilesContent() {\n return (\n <SharedFileList\n selectable\n onFileSelect={this.onFileSelect.bind(this)}\n selectedFiles={this.selectedFiles}\n restrictFileType={this.restrictFileType}\n user={this.attrs.user}\n fileState={this.sharedFileState}\n onDelete={this.onDelete.bind(this)}\n />\n );\n }\n\n /**\n * Add or remove file from selected files\n *\n * @param {File} file\n */\n onFileSelect(file) {\n const itemPosition = this.selectedFiles.indexOf(file.id());\n\n if (itemPosition >= 0) {\n this.selectedFiles.splice(itemPosition, 1);\n } else {\n if (this.multiSelect) {\n this.selectedFiles.push(file.id());\n } else {\n this.selectedFiles = [file.id()];\n }\n }\n }\n\n /**\n * Add files to file list after upload\n */\n onUpload() {\n this.uploader.on('success', ({ file }) => {\n if (this.multiSelect) {\n this.selectedFiles.push(file.id());\n } else {\n this.selectedFiles = [file.id()];\n }\n });\n }\n\n /**\n * Add selected files to the composer\n */\n onSelect() {\n this.hide();\n\n // Custom callback\n if (this.attrs.onSelect) {\n this.attrs.onSelect(this.selectedFiles);\n\n return;\n }\n\n // Add selected files to composer\n this.selectedFiles.map((fileId) => {\n const file = app.store.getById('files', fileId) || app.store.getById('shared-files', fileId);\n\n app.composer.editor.insertAtCursor(file.bbcode() + '\\n', false);\n });\n }\n\n showUploadModal() {\n app.modal.show(\n UploadSharedFileModal,\n {\n onUploadComplete: (files) => {\n this.sharedFileState.addToList(files);\n },\n },\n true\n );\n }\n\n onDelete(file) {\n this.sharedFileState.removeFromList(file);\n this.userFileState.removeFromList(file);\n }\n}\n","import app from 'flarum/forum/app';\nimport Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport FileManagerModal from './FileManagerModal';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\ninterface FileManagerButtonAttrs extends ComponentAttrs {\n uploader: any;\n}\n\nexport default class FileManagerButton extends Component<FileManagerButtonAttrs> {\n view() {\n return (\n <Tooltip text={app.translator.trans('fof-upload.forum.buttons.media')}>\n {Button.component({\n className: 'Button fof-upload-button Button--icon',\n onclick: this.fileManagerButtonClicked.bind(this),\n icon: 'fas fa-photo-video',\n })}\n </Tooltip>\n );\n }\n\n /**\n * Event handler for upload button being clicked\n */\n fileManagerButtonClicked(e: PointerEvent) {\n e.preventDefault();\n\n // Open dialog\n app.modal.show(FileManagerModal, {\n uploader: this.attrs.uploader,\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","import Model from 'flarum/common/Model';\n\nexport default class File extends Model {\n baseName() {\n return Model.attribute<string>('baseName').call(this);\n }\n\n path() {\n return Model.attribute<string>('path').call(this);\n }\n\n url() {\n return Model.attribute<string>('url').call(this);\n }\n\n size() {\n return Model.attribute<number>('size').call(this);\n }\n\n type() {\n return Model.attribute<string>('type').call(this);\n }\n\n humanSize() {\n return Model.attribute<string>('humanSize').call(this);\n }\n\n createdAt() {\n return Model.attribute('createdAt', Model.transformDate).call(this);\n }\n\n uuid() {\n return Model.attribute<string>('uuid').call(this);\n }\n\n tag() {\n return Model.attribute<string>('tag').call(this);\n }\n\n hidden() {\n return Model.attribute<boolean>('hidden').call(this);\n }\n\n bbcode() {\n return Model.attribute<string>('bbcode').call(this);\n }\n\n isShared() {\n return Model.attribute<boolean>('shared').call(this);\n }\n\n isPrivateShared() {\n return Model.attribute<boolean>('isPrivateShared').call(this);\n }\n\n canViewInfo() {\n return Model.attribute<boolean>('canViewInfo').call(this);\n }\n\n canHide() {\n return Model.attribute<boolean>('canHide').call(this);\n }\n\n canDelete() {\n return Model.attribute<boolean>('canDelete').call(this);\n }\n\n apiEndpoint() {\n return '/fof/uploads' + (this.exists ? '/' + this.id() : '');\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport File from './models/File';\n\nexport default [\n new Extend.Store() //\n .add('files', File)\n .add('shared-files', File),\n];\n","import app from 'flarum/forum/app';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport UserFileList from '../../common/components/UserFileList';\nimport type Mithril from 'mithril';\nimport User from 'flarum/common/models/User';\nimport FileListState from '../../common/states/FileListState';\n\nexport default class UploadsUserPage extends UserPage {\n oninit(vnode: Mithril.Vnode) {\n super.oninit(vnode);\n\n this.user = null;\n\n this.loadUser(m.route.param('username'));\n }\n\n content() {\n const fileState = new FileListState();\n if (app.session.user && (app.session.user.viewOthersMediaLibrary() || this.user === app.session.user)) {\n return (\n this.user &&\n UserFileList.component({\n user: this.user,\n selectable: false,\n downloadOnClick: true,\n fileState,\n })\n );\n } else {\n return null;\n }\n }\n\n show(user: User) {\n super.show(user);\n this.user = user;\n }\n}\n","import User from 'flarum/common/models/User';\nimport { default as extend } from '../common/extend';\nimport Extend from 'flarum/common/extenders';\nimport UploadsUserPage from './components/UploadsUserPage';\n\nexport default [\n ...extend,\n\n // Not using the new extender yet, thinking about if to change the serialized names,\n // or the js property names, as we can't change the key->attribute name via the extender,\n // like we used to do with ie `User.prototype.viewOthersMediaLibrary = Model.attribute('fof-upload-viewOthersMediaLibrary');`\n // new Extend.Model(User) //\n // .attribute<boolean>('fof-upload-viewOthersMediaLibrary')\n // .attribute<boolean>('fof-upload-deleteOthersMediaLibrary')\n // .attribute<number>('fof-upload-uploadCountCurrent')\n // .attribute<number>('fof-upload-uploadCountAll'),\n\n new Extend.Routes() //\n .add('user.uploads', '/u/:username/uploads', UploadsUserPage),\n];\n","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}","import Component, { ComponentAttrs } from 'flarum/common/Component';\nimport Button from 'flarum/common/components/Button';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport type Mithril from 'mithril';\nimport mimeToIcon from '../mimeToIcon';\nimport File from '../models/File';\nimport icon from 'flarum/common/helpers/icon';\nimport app from 'flarum/common/app';\nimport classList from 'flarum/common/utils/classList';\n\ninterface CustomAttrs extends ComponentAttrs {\n file: File;\n selectable: boolean;\n fileClassNames: string;\n onDelete: (file: File) => void | undefined;\n onFileSelect: (file: File) => void | undefined;\n}\n\nexport default class UploadedFile extends Component<CustomAttrs> {\n file!: File;\n callback!: () => void | undefined;\n imageLoaded: boolean = true;\n\n oninit(vnode: Mithril.Vnode<CustomAttrs, this>) {\n super.oninit(vnode);\n\n this.file = this.attrs.file;\n }\n\n view() {\n const isImage = this.file.type().startsWith('image/');\n const fileIcon = mimeToIcon(this.file.type());\n const errorIcon = 'fas fa-exclamation-triangle';\n const statusIcon = this.file.isPrivateShared() ? 'fas fa-lock' : 'fas fa-unlock';\n\n return (\n <div className=\"UploadedFile\" key={this.file.uuid()}>\n <div className=\"UploadedFile--sharestatus\">\n <span>\n {icon(statusIcon)}\n {this.file.baseName()}\n </span>\n </div>\n <div className=\"UploadedFile--preview\" onclick={() => this.onFileClick(this.file)}>\n {isImage ? (\n this.imageLoaded ? (\n <img\n className={this.attrs.fileClassNames}\n src={this.file.url()}\n loading=\"lazy\"\n onerror={this.handleImageError}\n onload={this.handleImageLoad}\n alt={this.file.baseName()}\n />\n ) : (\n icon(errorIcon, { className: 'icon-fallback' }) // Error icon for failed image load\n )\n ) : (\n icon(fileIcon, { className: 'icon-fallback' }) // Icon representing the file type\n )}\n </div>\n <div className=\"UploadedFile--actions\">{this.actionItems().toArray()}</div>\n </div>\n );\n }\n\n actionItems(): ItemList<Mithril.Children> {\n const items = new ItemList<Mithril.Children>();\n\n items.add(\n 'view-info',\n <Button className=\"Button Button--icon\" icon=\"fas fa-info-circle\" onclick={() => this.viewFileInfo()} aria-label=\"info\" />\n );\n\n items.add(\n 'download',\n <Button className=\"Button Button--icon\" icon=\"fas fa-download\" onclick={() => window.open(this.file.url())} aria-label=\"download\" />\n );\n\n const hideFileIcon = this.file.isPrivateShared() ? 'fas fa-lock' : this.file.hidden() ? 'fas fa-eye' : 'fas fa-eye-slash';\n items.add('hide-file', <Button className=\"Button Button--icon\" icon={hideFileIcon} onclick={() => this.hideFile()} aria-label=\"hide\" />);\n\n items.add('delete', <Button className=\"Button Button--icon\" icon=\"fas fa-trash\" onclick={() => this.confirmDelete()} aria-label=\"delete\" />);\n\n return items;\n }\n\n async confirmDelete() {\n let result = confirm('Are you sure you want to delete this file?');\n\n if (result) {\n const uuid = this.file.uuid();\n await app.request({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + '/fof/upload/delete/' + uuid,\n });\n\n if (this.attrs.onDelete) {\n this.attrs.onDelete(this.file);\n }\n }\n }\n\n viewFileInfo() {\n // TODO:\n console.log('view file info');\n }\n\n hideFile() {\n // TODO:\n console.log('hide file');\n }\n\n // Function to call when image fails to load\n handleImageError = () => {\n this.imageLoaded = false;\n m.redraw();\n };\n\n // Function to call when image loads successfully\n handleImageLoad = () => {\n this.imageLoaded = true;\n m.redraw();\n };\n\n onFileClick(file: File) {\n if (this.attrs.onFileSelect) {\n this.attrs.onFileSelect(file);\n return;\n }\n }\n}\n","import Uploader from '../handler/Uploader';\nimport DragAndDrop from './DragAndDrop';\nimport FileManagerButton from './FileManagerButton';\nimport FileManagerModal from './FileManagerModal';\nimport UploadButton from './UploadButton';\nimport { commonComponents } from '../../common/components';\n\nexport const components = {\n ...commonComponents,\n DragAndDrop,\n FileManagerButton,\n FileManagerModal,\n Uploader,\n UploadButton,\n};\n","import UploadSharedFileModal from './UploadSharedFileModal';\nimport UploadedFile from './UploadedFile';\nimport UserFileList from './UserFileList';\n\nexport const commonComponents = {\n UploadedFile,\n UploadSharedFileModal,\n UserFileList,\n};\n","import app from 'flarum/forum/app';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport downloadButtonInteraction from './downloadButtonInteraction';\nimport addUploadButton from './addUploadButton';\nimport addUserPageButton from './addUserPageButton';\n\nexport { default as extend } from './extend';\nexport * from './components';\n\napp.initializers.add('fof-upload', () => {\n // Leaving these here for now.\n // @see ./extend.ts\n User.prototype.viewOthersMediaLibrary = Model.attribute('fof-upload-viewOthersMediaLibrary');\n User.prototype.deleteOthersMediaLibrary = Model.attribute('fof-upload-deleteOthersMediaLibrary');\n User.prototype.uploadCountCurrent = Model.attribute('fof-upload-uploadCountCurrent');\n User.prototype.uploadCountAll = Model.attribute('fof-upload-uploadCountAll');\n User.prototype.uploadSharedFiles = Model.attribute('fof-upload-uploadSharedFiles');\n User.prototype.accessSharedFiles = Model.attribute('fof-upload-accessSharedFiles');\n\n //app.fileListState = new FileListState();\n\n addUploadButton();\n downloadButtonInteraction();\n addUserPageButton();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport TextEditor from 'flarum/common/components/TextEditor';\nimport UploadButton from './components/UploadButton';\nimport DragAndDrop from './components/DragAndDrop';\nimport PasteClipboard from './components/PasteClipboard';\nimport Uploader from './handler/Uploader';\nimport FileManagerButton from './components/FileManagerButton';\n\nexport default function () {\n extend(TextEditor.prototype, 'oninit', function () {\n this.uploader = new Uploader();\n });\n extend(TextEditor.prototype, 'controlItems', function (items) {\n if (!app.forum.attribute('fof-upload.canUpload')) return;\n\n const composerButtonVisiblity = app.forum.attribute('fof-upload.composerButtonVisiblity');\n\n // Add media button\n if (composerButtonVisiblity === 'both' || composerButtonVisiblity === 'media-btn') {\n items.add(\n 'fof-upload-media',\n FileManagerButton.component({\n uploader: this.uploader,\n })\n );\n }\n\n // Add upload button\n if (composerButtonVisiblity === 'both' || composerButtonVisiblity === 'upload-btn') {\n items.add(\n 'fof-upload',\n UploadButton.component({\n uploader: this.uploader,\n })\n );\n }\n });\n\n extend(TextEditor.prototype, 'oncreate', function (f_, vnode) {\n if (!app.forum.attribute('fof-upload.canUpload')) return;\n\n this.uploader.on('success', ({ file, addBBcode }) => {\n if (!addBBcode) return;\n\n this.attrs.composer.editor.insertAtCursor(file.bbcode() + '\\n', false);\n\n // We wrap this in a typeof check to prevent it running when a user\n // is creating a new discussion. There's nothing to preview in a new\n // discussion, so the `preview` function isn't defined.\n if (typeof this.attrs.preview === 'function') {\n // Scroll the preview into view\n // preview() causes the composer to close on mobile, but we don't want that. We want only the scroll\n // We work around that by temporarily patching the isFullScreen method\n const originalIsFullScreen = app.composer.isFullScreen;\n\n app.composer.isFullScreen = () => false;\n\n this.attrs.preview();\n\n app.composer.isFullScreen = originalIsFullScreen;\n }\n });\n\n // Gracefully fail if the TextEditor was used in a non-Composer context\n // Using a custom method to retrieve the target allows other extensions to still use this feature by returning an alternate container\n const dragAndDropTarget = this.fofUploadDragAndDropTarget();\n\n if (dragAndDropTarget) {\n this.dragAndDrop = new DragAndDrop((files) => this.uploader.upload(files), dragAndDropTarget);\n }\n\n new PasteClipboard((files) => this.uploader.upload(files), this.$('.TextEditor-editor')[0]);\n });\n\n extend(TextEditor.prototype, 'onremove', function (f_, vnode) {\n if (!app.forum.attribute('fof-upload.canUpload')) return;\n\n if (this.dragAndDrop) {\n this.dragAndDrop.unload();\n }\n });\n\n TextEditor.prototype.fofUploadDragAndDropTarget = function () {\n return this.$().parents('.Composer')[0];\n };\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Post from 'flarum/forum/components/Post';\n\n/* global $ */\n\nexport default function () {\n extend(Post.prototype, 'oncreate', function () {\n this.$('[data-fof-upload-download-uuid]')\n .unbind('click')\n .on('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (!app.forum.attribute('fof-upload.canDownload')) {\n alert(app.translator.trans('fof-upload.forum.states.unauthorized'));\n return;\n }\n\n let url = app.forum.attribute('apiUrl') + '/fof/download';\n\n url += '/' + encodeURIComponent(e.currentTarget.dataset.fofUploadDownloadUuid);\n url += '/' + encodeURIComponent(this.attrs.post.id());\n url += '/' + encodeURIComponent(app.session.csrfToken);\n\n window.open(url);\n });\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\n\nexport default function addUserPageButton() {\n extend(UserPage.prototype, 'navItems', function (items) {\n const canUpload = !!app.forum.attribute('fof-upload.canUpload');\n const hasUploads = !!this.user.uploadCountCurrent();\n\n if (app.session.user && (app.session.user.viewOthersMediaLibrary() || (this.user === app.session.user && (canUpload || hasUploads)))) {\n const uploadCount = this.user.uploadCountCurrent();\n\n items.add(\n 'uploads',\n LinkButton.component(\n {\n href: app.route('user.uploads', {\n username: this.user.slug(),\n }),\n name: 'uploads',\n icon: 'fas fa-file-upload',\n },\n [\n this.user === app.session.user\n ? app.translator.trans('fof-upload.forum.buttons.media')\n : app.translator.trans('fof-upload.forum.buttons.user_uploads'),\n ' ',\n uploadCount > 0 ? <span className=\"Button-badge\">{uploadCount}</span> : '',\n ]\n ),\n 80\n );\n }\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/computed'];","import Model from 'flarum/common/Model';\nimport computed from 'flarum/common/utils/computed';\n\nexport default class Policy extends Model {\n sort = Model.attribute('sort');\n name = Model.attribute('name');\n url = Model.attribute('url');\n update_message = Model.attribute('update_message');\n terms_updated_at = Model.attribute('terms_updated_at');\n form_key = computed('id', (id) => 'fof_terms_policy_' + id);\n\n apiEndpoint() {\n return '/fof/terms/policies' + (this.exists ? '/' + this.data.id : '');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","export default function (items, attr = 'sort') {\n return items.sort((a, b) => a[attr]() - b[attr]());\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport sortByAttribute from '../../common/helpers/sortByAttribute';\n\n/* global m, dayjs */\n\nexport default class AcceptPoliciesModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.store.all('fof-terms-policies').forEach((policy) => {\n this[policy.form_key()] = false;\n });\n }\n\n title() {\n return app.translator.trans('fof-terms.forum.accept-modal.title');\n }\n\n content() {\n return m('.Modal-body', this.body());\n }\n\n body() {\n const policies = sortByAttribute(\n app.store.all('fof-terms-policies').filter((policy) => {\n const state = app.session.user.fofTermsPoliciesState()[policy.id()];\n\n return !state || state.has_update;\n })\n );\n\n if (policies.length === 0) {\n return Button.component(\n {\n className: 'Button',\n onclick() {\n app.modal.close();\n },\n },\n app.translator.trans('fof-terms.forum.accept-modal.close')\n );\n }\n\n return policies.map((policy) =>\n m('div', [\n m('h2', policy.name()),\n app.forum.attribute('fof-terms.hide-updated-at')\n ? null\n : m(\n 'p',\n policy.terms_updated_at()\n ? app.translator.trans('fof-terms.forum.accept-modal.updated-at', {\n date: dayjs(policy.terms_updated_at()).format(app.forum.attribute('fof-terms.date-format')),\n })\n : app.translator.trans('fof-terms.forum.accept-modal.updated-recently')\n ),\n policy.update_message() ? m('p', policy.update_message()) : null,\n m(\n '.Form-group',\n m(\n '.FoF-Terms-Check.FoF-Terms-Check--login',\n m('label.checkbox', [\n m('input', {\n type: 'checkbox',\n checked: this[policy.form_key()],\n onchange: () => {\n this[policy.form_key()] = !this[policy.form_key()];\n },\n }),\n app.translator.trans('fof-terms.forum.accept-modal.i-accept', {\n policy: policy.name(),\n a: policy.url()\n ? m('a', {\n href: policy.url(),\n target: '_blank',\n })\n : m('span'),\n }),\n ])\n )\n ),\n Button.component(\n {\n className: 'Button Button--primary',\n disabled: !this[policy.form_key()],\n onclick: () => {\n // We need to save the \"must accept\" property before performing the request\n // Because an updated user serializer will be returned\n const hadToAcceptToInteract = app.session.user.fofTermsPoliciesMustAccept();\n\n app\n .request({\n url: app.forum.attribute('apiUrl') + policy.apiEndpoint() + '/accept',\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then((updated) => {\n app.store.pushPayload(updated);\n\n // If this was the last policy to accept, close the modal\n if (policies.length === 1) {\n if (hadToAcceptToInteract) {\n // If the user was previously not allowed to interact with the forum,\n // we refresh to get updated permissions in the frontend\n window.location.reload();\n } else {\n app.modal.close();\n }\n }\n\n m.redraw();\n });\n },\n },\n app.translator.trans('fof-terms.forum.accept-modal.accept')\n ),\n ])\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SignUpModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","import app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport listItems from 'flarum/common/helpers/listItems';\nimport AcceptPoliciesModal from './AcceptPoliciesModal';\n\n/* global m */\n\nlet temporarilyHidden = false;\n\n/**\n * Renders similarly to Flarum's Alert, but with an additional .container inside\n */\nexport default class UpdateAlert {\n shouldShowAlert() {\n if (temporarilyHidden) {\n return false;\n }\n\n const user = app.session.user;\n\n return user && user.fofTermsPoliciesHasUpdate();\n }\n\n view() {\n if (!this.shouldShowAlert()) {\n return m('div');\n }\n\n const controls = [\n Button.component(\n {\n className: 'Button Button--link',\n onclick: () => {\n app.modal.show(AcceptPoliciesModal);\n },\n },\n app.translator.trans('fof-terms.forum.update-alert.review')\n ),\n ];\n\n const dismissControl = [];\n\n if (!app.session.user.fofTermsPoliciesMustAccept()) {\n dismissControl.push(\n Button.component({\n icon: 'fas fa-times',\n className: 'Button Button--link Button--icon Alert-dismiss',\n onclick: () => {\n temporarilyHidden = true;\n },\n })\n );\n }\n\n return m(\n '.Alert.Alert-info',\n m('.container', [\n m(\n 'span.Alert-body',\n app.session.user.fofTermsPoliciesMustAccept()\n ? app.translator.trans('fof-terms.forum.update-alert.must-accept-message')\n : app.translator.trans('fof-terms.forum.update-alert.can-accept-message')\n ),\n m('ul.Alert-controls', listItems(controls.concat(dismissControl))),\n ])\n );\n }\n}\n","import { override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport UpdateAlert from './components/UpdateAlert';\n\n/* global m */\n\n// This single method will be used to inject the alert into existing components\n// If the view is already an array, we add our content at the start\n// If it isn't an array we wrap the content into a new array\nfunction addAlertToContent(original, ...originalArgs) {\n const existing = original(...originalArgs);\n const additional = m(UpdateAlert);\n\n // if the existing content is an array, add to it\n // This should only happen with the hero() override as other extensions might return an array there\n if (Array.isArray(existing)) {\n existing.unshift(additional);\n\n return existing;\n }\n\n // Otherwise return a new list of elements\n // Use a container div otherwise when extending view() this will prevent the config() method from running\n // as the Component class won't be able to bind config() to an array\n // We could also add to vnode.children but this could cause weird styling if another extension or custom styles\n // change the look of the base page content by targeting the original view root element based on its class\n // By using a new outer container we make sure the alert always stays full width and unaffected by the page view under it\n return m('div', [additional, existing]);\n}\n\nexport default function () {\n // There's no single place we can inject the banner\n // So we use a few different points so it's visible on most pages\n override(IndexPage.prototype, 'hero', addAlertToContent);\n override(DiscussionPage.prototype, 'view', addAlertToContent);\n\n // Covers user profile and settings\n override(UserPage.prototype, 'view', addAlertToContent);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","import app from 'flarum/forum/app';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport Modal from 'flarum/common/components/Modal';\nimport sortByAttribute from '../../common/helpers/sortByAttribute';\n\n/* global m */\n\nexport default class UserPoliciesStateModal extends Modal {\n title() {\n return app.translator.trans('fof-terms.forum.state-modal.title', {\n username: this.attrs.user.username(),\n });\n }\n\n content() {\n return m(\n '.Modal-body',\n m(\n 'ul',\n sortByAttribute(app.store.all('fof-terms-policies')).map((policy) => {\n const state = this.attrs.user.fofTermsPoliciesState()[policy.id()];\n\n return m('li', [\n policy.name() + ': ',\n state && state.accepted_at\n ? app.translator.trans('fof-terms.forum.state-modal.accepted-at', {\n date: humanTime(state.accepted_at),\n })\n : app.translator.trans('fof-terms.forum.state-modal.not-accepted'),\n ]);\n })\n )\n );\n }\n}\n","import AcceptPoliciesModal from './AcceptPoliciesModal';\nimport UpdateAlert from './UpdateAlert';\nimport UserPoliciesStateModal from './UserPoliciesStateModal';\n\nexport const components = {\n AcceptPoliciesModal,\n UpdateAlert,\n UserPoliciesStateModal,\n};\n","import Policy from './Policy';\n\nexport const models = {\n Policy,\n};\n","import sortByAttribute from './sortByAttribute';\n\nexport const helpers = {\n sortByAttribute,\n};\n","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport User from 'flarum/common/models/User';\nimport Policy from '../common/models/Policy';\nimport addAcceptModal from './addAcceptModal';\nimport addFieldsToRegister from './addFieldsToRegister';\nimport addUpdateAlert from './addUpdateAlert';\nimport addUserPoliciesStateControl from './addUserPoliciesStateControl';\n\nexport * from './components';\nexport * from '../common/models';\nexport * from '../common/helpers';\n\napp.initializers.add('fof-terms', () => {\n app.store.models['fof-terms-policies'] = Policy;\n\n User.prototype.fofTermsPoliciesState = Model.attribute('fofTermsPoliciesState');\n User.prototype.fofTermsPoliciesHasUpdate = Model.attribute('fofTermsPoliciesHasUpdate');\n User.prototype.fofTermsPoliciesMustAccept = Model.attribute('fofTermsPoliciesMustAccept');\n User.prototype.seeFoFTermsPoliciesState = Model.attribute('seeFoFTermsPoliciesState');\n\n addAcceptModal();\n addFieldsToRegister();\n addUpdateAlert();\n addUserPoliciesStateControl();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/common/components/IndexPage';\nimport AcceptPoliciesModal from './components/AcceptPoliciesModal';\n\nexport default function () {\n let initialized = false;\n\n extend(Page.prototype, 'oninit', function () {\n if (initialized) {\n return;\n }\n\n // We only show the modal if the first page loaded was the index page\n // And that new updates are available\n // And that the user *must* accept them\n if (app.current.matches(IndexPage)) {\n const user = app.session.user;\n\n if (user && user.fofTermsPoliciesMustAccept()) {\n // Timeout is necessary because there is a redraw error otherwise\n setTimeout(() => {\n app.modal.show(AcceptPoliciesModal);\n }, 0);\n }\n }\n\n initialized = true;\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport SignUpModal from 'flarum/forum/components/SignUpModal';\nimport sortByAttribute from '../common/helpers/sortByAttribute';\n\n/* global m */\n\nexport default function () {\n extend(SignUpModal.prototype, 'oninit', function () {\n this.fofTermsPolicies = sortByAttribute(app.store.all('fof-terms-policies'));\n\n this.fofTermsPolicies.forEach((policy) => {\n this[policy.form_key()] = false;\n });\n });\n\n extend(SignUpModal.prototype, 'fields', function (fields) {\n const legalText = app.forum.attribute('fof-terms.signup-legal-text');\n\n if (legalText) {\n fields.add('fof-terms-legal-text', m('.Form-group', m('.FoF-Terms-SignUp-Legal.Alert', legalText)));\n }\n\n this.fofTermsPolicies.forEach((policy) => {\n fields.add(\n 'fof-terms-policy-' + policy.id(),\n m(\n '.Form-group',\n m(\n '.FoF-Terms-Check.FoF-Terms-Check--signup',\n m('label.checkbox', [\n m('input', {\n type: 'checkbox',\n checked: this[policy.form_key()],\n onchange: () => {\n this[policy.form_key()] = !this[policy.form_key()];\n },\n disabled: this.loading,\n }),\n app.translator.trans('fof-terms.forum.signup.i-accept', {\n policy: policy.name(),\n a: policy.url()\n ? m('a', {\n href: policy.url(),\n target: '_blank',\n })\n : m('span'),\n }),\n ])\n )\n )\n );\n });\n });\n\n extend(SignUpModal.prototype, 'submitData', function (data) {\n this.fofTermsPolicies.forEach((policy) => {\n data[policy.form_key()] = this[policy.form_key()];\n });\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\nimport UserPoliciesStateModal from './components/UserPoliciesStateModal';\n\nexport default function () {\n extend(UserControls, 'moderationControls', (items, user) => {\n if (app.forum.attribute('fof-terms.canSeeUserPoliciesState')) {\n items.add(\n 'fof-terms.state',\n Button.component(\n {\n icon: 'fas fa-paperclip',\n onclick() {\n app.modal.show(UserPoliciesStateModal, { user });\n },\n },\n app.translator.trans('fof-terms.forum.user_controls.state_button')\n )\n );\n }\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class DiscussionCreatedNotification extends Notification {\n icon() {\n // Same as create discussion button on purpose.\n return 'fas fa-edit';\n }\n\n href() {\n const notification = this.attrs.notification;\n\n return app.route.discussion(notification.subject());\n }\n\n content() {\n return app.translator.trans('fof-subscribed.forum.notifications.discussion_created_text', { user: this.attrs.notification.fromUser() });\n }\n\n excerpt() {\n return null;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostCreatedNotification extends Notification {\n icon() {\n return 'fas fa-edit';\n }\n\n href() {\n const notification = this.attrs.notification;\n const post = notification.subject();\n\n return app.route.discussion(post.discussion(), post.postNumber);\n }\n\n content() {\n return app.translator.trans('fof-subscribed.forum.notifications.post_created_text', { user: this.attrs.notification.fromUser() });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class UserCreatedNotification extends Notification {\n icon() {\n return 'fas fa-user-plus';\n }\n\n href() {\n const notification = this.attrs.notification;\n\n return app.route.user(notification.subject());\n }\n\n content() {\n return app.translator.trans('fof-subscribed.forum.notifications.user_created_text', { user: this.attrs.notification.fromUser() });\n }\n\n excerpt() {\n return null;\n }\n}\n","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostUnapprovedNotification extends Notification {\n icon() {\n return 'fas fa-gavel';\n }\n\n href() {\n const notification = this.attrs.notification;\n const post = notification.subject();\n\n return app.route.discussion(post.discussion(), post.number());\n }\n\n content() {\n return app.translator.trans('fof-subscribed.forum.notifications.post_unapproved_text', { user: this.attrs.notification.fromUser() });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default class PostFlaggedNotification extends Notification {\n icon() {\n return 'fas fa-flag';\n }\n\n href() {\n const notification = this.attrs.notification;\n const post = notification.subject();\n\n return app.route.discussion(post.discussion(), post.postNumber);\n }\n\n content() {\n return app.translator.trans('fof-subscribed.forum.notifications.post_flagged_text', { user: this.attrs.notification.fromUser() });\n }\n\n excerpt() {\n return truncate(this.attrs.notification.subject().contentPlain(), 200);\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport DiscussionCreatedNotification from './notifications/DiscussionCreatedNotification';\nimport PostCreatedNotification from './notifications/PostCreatedNotification';\nimport UserCreatedNotification from './notifications/UserCreatedNotification';\nimport PostUnapprovedNotification from './notifications/PostUnapprovedNotification';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport PostFlaggedNotification from './notifications/PostFlaggedNotification';\n\napp.initializers.add('fof-subscribed', () => {\n app.notificationComponents.discussionCreated = DiscussionCreatedNotification;\n app.notificationComponents.postCreated = PostCreatedNotification;\n app.notificationComponents.userCreated = UserCreatedNotification;\n app.notificationComponents.postUnapproved = PostUnapprovedNotification;\n app.notificationComponents.postFlagged = PostFlaggedNotification;\n\n User.prototype.canSubscribeDiscussionCreated = Model.attribute('canSubscribeDiscussionCreated');\n User.prototype.canSubscribePostCreated = Model.attribute('canSubscribePostCreated');\n User.prototype.canSubscribePostUnapproved = Model.attribute('canSubscribePostUnapproved');\n User.prototype.canSubscribeUserCreated = Model.attribute('canSubscribeUserCreated');\n User.prototype.canSubscribePostFlagged = Model.attribute('canSubscribePostFlagged');\n\n extend(NotificationGrid.prototype, 'notificationTypes', (items: ItemList) => {\n const currentUser = app.session?.user;\n\n if (currentUser?.canSubscribeDiscussionCreated()) {\n items.add(\n 'discussionCreated',\n {\n name: 'discussionCreated',\n icon: 'fas fa-pencil-alt',\n label: app.translator.trans('fof-subscribed.forum.settings.notify_discussion_created_label'),\n },\n 5\n );\n }\n\n if (currentUser?.canSubscribePostCreated()) {\n items.add(\n 'postCreated',\n {\n name: 'postCreated',\n icon: 'fas fa-pencil-alt',\n label: app.translator.trans('fof-subscribed.forum.settings.notify_post_created_label'),\n },\n 4\n );\n }\n\n if (currentUser?.canSubscribePostUnapproved()) {\n items.add(\n 'postUnapproved',\n {\n name: 'postUnapproved',\n icon: 'fas fa-check',\n label: app.translator.trans('fof-subscribed.forum.settings.notify_post_unapproved_label'),\n },\n -10\n );\n }\n\n if (currentUser?.canSubscribeUserCreated()) {\n items.add(\n 'userCreated',\n {\n name: 'userCreated',\n icon: 'fas fa-user-plus',\n label: app.translator.trans('fof-subscribed.forum.settings.notify_user_created_label'),\n },\n -10\n );\n }\n\n if (currentUser?.canSubscribePostFlagged()) {\n items.add(\n 'postFlagged',\n {\n name: 'postFlagged',\n icon: 'fas fa-flag',\n label: app.translator.trans('fof-subscribed.forum.settings.notify_post_flagged_label'),\n },\n -10\n );\n }\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/withAttr'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Dropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","import Dropdown from 'flarum/common/components/Dropdown';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport icon from 'flarum/common/helpers/icon';\nimport classList from 'flarum/common/utils/classList';\n\nexport default class IconSelectorComponent extends Dropdown {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.className = 'icondropdown';\n attrs.buttonClassName = 'Button Button--icon';\n attrs.menuClassName = 'social-dropdown-menu';\n }\n\n oninit(vnode) {\n super.oninit(vnode);\n\n this.icons = {\n social: [\n 'fas fa-envelope',\n 'fas fa-globe',\n 'fab fa-amazon',\n 'fab fa-angellist',\n 'fab fa-apple',\n 'fab fa-behance',\n 'fab fa-bitbucket',\n 'fab fa-codepen',\n 'fab fa-connectdevelop',\n 'fab fa-dashcube',\n 'fab fa-delicious',\n 'fab fa-deviantart',\n 'fab fa-digg',\n 'fab fa-discord',\n 'fab fa-dribbble',\n 'fab fa-dropbox',\n 'fab fa-drupal',\n 'fab fa-facebook',\n 'fab fa-flickr',\n 'fab fa-foursquare',\n 'fab fa-get-pocket',\n 'fab fa-git',\n 'fab fa-github',\n 'fab fa-github-alt',\n 'fab fa-google',\n 'fab fa-google-plus',\n 'fab fa-google-wallet',\n 'fab fa-hacker-news',\n 'fab fa-instagram',\n 'fab fa-ioxhost',\n 'fab fa-joomla',\n 'fab fa-jsfiddle',\n 'fab fa-lastfm',\n 'fab fa-leanpub',\n 'fab fa-linkedin',\n 'fab fa-mastodon',\n 'fab fa-medium',\n 'fab fa-odnoklassniki',\n 'fab fa-opencart',\n 'fab fa-pagelines',\n 'fab fa-paypal',\n 'fab fa-pied-piper-alt',\n 'fab fa-pinterest-p',\n 'fab fa-playstation',\n 'fab fa-qq',\n 'fab fa-reddit',\n 'fab fa-renren',\n 'fab fa-sellsy',\n 'fas fa-share-alt',\n 'fab fa-shirtsinbulk',\n 'fab fa-simplybuilt',\n 'fab fa-skyatlas',\n 'fab fa-skype',\n 'fab fa-slack',\n 'fab fa-slideshare',\n 'fab fa-soundcloud',\n 'fab fa-spotify',\n 'fab fa-stack-exchange',\n 'fab fa-stack-overflow',\n 'fab fa-steam',\n 'fab fa-stumbleupon',\n 'fab fa-telegram',\n 'fab fa-tencent-weibo',\n 'fab fa-trello',\n 'fab fa-tripadvisor',\n 'fab fa-tumblr',\n 'fab fa-twitch',\n 'fab fa-twitter',\n 'fab fa-viacoin',\n 'fab fa-vimeo',\n 'fab fa-vine',\n 'fab fa-vk',\n 'fab fa-weibo',\n 'fab fa-weixin',\n 'fab fa-whatsapp',\n 'fab fa-wordpress',\n 'fab fa-xbox',\n 'fab fa-xing',\n 'fab fa-y-combinator',\n 'fab fa-yandex',\n 'fab fa-yandex-international',\n 'fab fa-yelp',\n 'fab fa-youtube',\n ],\n };\n }\n\n view(vnode) {\n vnode.children = this.items().toArray();\n\n return super.view(vnode);\n }\n\n getButtonContent() {\n const ic = (str) => icon(str, { className: 'icondropdown-activeIcon fa-fw' });\n\n return [\n /^favicon(-\\w+)?$/.test(this.attrs.selection())\n ? this.attrs.allowsExternal\n ? [\n <img\n className={classList({\n 'icondropdown-activeIcon': true,\n 'social-greyscale-button': this.attrs.selection() === 'favicon-grey',\n 'social-button': !this.attrs.selection() === 'favicon-grey',\n })}\n alt=\"\"\n src={this.attrs.favicon()}\n onerror={() => {\n this.attrs.favicon('none');\n this.select(this.icons.social[0]);\n }}\n />,\n ]\n : ic('fas fa-globe')\n : ic(this.attrs.selection()),\n this.attrs.caretIcon ? icon(this.attrs.caretIcon, { className: 'Button-caret' }) : '',\n ];\n }\n\n items() {\n const items = new ItemList();\n\n if (this.attrs.favicon() !== 'none' && this.attrs.allowsExternal) {\n items.add(\n 'favicon',\n <div\n onclick={() => this.select('favicon')}\n role=\"button\"\n className={classList({\n 'iconpicker-item': true,\n 'iconpicker-item--highlighted': this.attrs.selection() === 'favicon',\n })}\n title=\"Favicon\"\n >\n <img\n className={`iconpicker-image-${this.attrs.index()}`}\n alt=\"favicon\"\n style={{ width: '14px', height: '14px', margin: '0 2px 0 2px' }}\n src={this.attrs.favicon()}\n />\n </div>,\n 102\n );\n\n items.add(\n 'favicon-grey',\n <div\n onclick={() => this.select('favicon-grey')}\n role=\"button\"\n className={classList({\n 'iconpicker-item iconpicker-item--invertColors': true,\n 'iconpicker-item--highlighted': this.attrs.selection() === 'favicon-grey',\n })}\n title=\"Grey Favicon\"\n >\n <img\n className={`social-greyscale-button iconpicker-image-${this.attrs.index()}`}\n alt=\"favicon\"\n style={{ width: '14px', height: '14px', margin: '0 2px 0 2px' }}\n src={this.attrs.favicon()}\n />\n </div>,\n 101\n );\n }\n\n this.icons.social.forEach((curIcon) => {\n items.add(\n curIcon.replace(/ /, '-'),\n <div\n onclick={() => this.select(curIcon)}\n className={classList({ 'iconpicker-item': true, 'iconpicker-item--highlighted': this.attrs.selection() === curIcon })}\n role=\"button\"\n title={`.${curIcon}`}\n >\n {icon(curIcon, { className: 'social-icon fa-fw' })}\n </div>,\n 100\n );\n });\n\n return items;\n }\n\n select(icon) {\n this.attrs.selection(icon);\n }\n}\n","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport withAttr from 'flarum/common/utils/withAttr';\nimport extractUriHost from '../helpers/extractUriHost';\nimport isValidUrl from '../helpers/isValidUrl';\nimport IconSelectorComponent from './IconSelectorComponent';\n\nexport default class WebsiteInputComponent extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.button = this.attrs.button;\n\n this.allowsExternal = app.forum.attribute('fof-socialprofile.allow_external_favicons');\n }\n\n view(vnode) {\n return (\n <div className=\"Form-group form-group-social\" id={`socialgroup-${this.button.index()}`}>\n <input\n type=\"text\"\n className=\"FormControl SocialFormControl SocialFormControl-title\"\n placeholder={app.translator.trans('fof-socialprofile.forum.edit.title')}\n tabIndex={(this.button.index() + 1) * 2 - 1}\n bidi={this.button.title}\n />\n\n {IconSelectorComponent.component({\n selection: this.button.icon,\n favicon: this.button.favicon,\n index: this.button.index,\n allowsExternal: this.allowsExternal,\n })}\n\n <input\n type=\"text\"\n className=\"FormControl SocialFormControl SocialFormControl-url\"\n placeholder={app.translator.trans('fof-socialprofile.forum.edit.url')}\n tabIndex={(this.button.index() + 1) * 2}\n value={this.button.url()}\n onchange={withAttr('value', this.onUrlChange.bind(this))}\n />\n\n <input\n type=\"hidden\"\n className=\"FormControl SocialFormControl SocialFormControl-icon\"\n id={`icon${this.button.index()}-icon`}\n bidi={this.button.icon}\n />\n\n <input\n type=\"hidden\"\n className=\"SocialFormControl SocialFormControl-favicon\"\n id={`icon${this.button.index()}-favicon`}\n bidi={this.button.favicon}\n />\n </div>\n );\n }\n\n onUrlChange(value) {\n this.button.url(value);\n\n if (!this.allowsExternal) {\n return;\n }\n\n clearTimeout(this.waitUntilFinished);\n\n if (this.button.icon() !== 'fas fa-circle-notch fa-spin') {\n this.button.icon('fas fa-circle-notch fa-spin');\n this.button.favicon('none');\n }\n\n this.waitUntilFinished = setTimeout(() => {\n if (isValidUrl(this.button.url())) {\n const iconurl = `https://icons.duckduckgo.com/ip3/${extractUriHost(this.button.url())}.ico`;\n\n this.button.favicon(iconurl);\n this.button.icon('favicon');\n\n m.redraw();\n } else {\n this.button.icon('fas fa-globe');\n this.button.favicon('none');\n m.redraw();\n }\n }, 1000);\n }\n}\n","/**\n * Verifies if a string is a valid URL (http/https only).\n *\n * @param {string} url URL to test\n */\nexport default function isValidUrl(url) {\n let urlInstance;\n\n try {\n urlInstance = new URL(url);\n } catch (_) {\n return false;\n }\n\n return ['http:', 'https:'].includes(urlInstance.protocol);\n}\n","/**\n * Extracts the host of a specified URI. Returns `null` if the URL is invalid.\n *\n * @example\n * // www.google.com\n * extractBaseUrl(\"https://www.google.com/search?q=flarum\")\n *\n * @example\n * // discuss.flarum.org\n * extractBaseUrl(\"https://discuss.flarum.org/u/admin\")\n *\n * @example\n * // null\n * extractBaseUrl(\"javascript:alert('hello!')\")\n *\n * @param {string|null} url URL to extract base from\n */\nexport default function extractUriHost(url) {\n let urlInstance;\n\n try {\n urlInstance = new URL(url);\n } catch (_) {\n return null;\n }\n\n if (['http:', 'https:'].includes(urlInstance.protocol)) {\n return urlInstance.host;\n }\n\n return null;\n}\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\nimport WebsiteInputComponent from './WebsiteInputComponent';\n\nexport default class SocialButtonsModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.buttons = [];\n const buttons = this.attrs.user.socialButtons();\n\n if (buttons.length) {\n buttons.forEach((button, index) => {\n if (button && button.title) {\n this.createButtonObject(index, button);\n }\n });\n } else {\n this.createButtonObject(0);\n }\n }\n\n className() {\n return 'SocialButtonsModal Modal--small';\n }\n\n title() {\n return app.translator.trans('fof-socialprofile.forum.edit.headtitle');\n }\n\n content() {\n const areAnyIconsBeingFetched = this.buttons.some((button) => button.icon() === 'fas fa-circle-notch fa-spin');\n\n return (\n <div className=\"Modal-body\">\n <div className=\"Form\">\n {this.buttons.map((button) => WebsiteInputComponent.component({ button }))}\n\n <div className=\"Form-group\" id=\"submit-button-group\">\n <div className=\"Button Button--primary EditSocialButtons-add\" style=\"margin-left: 1%;\" onclick={this.addSocialButton.bind(this)}>\n <i className=\"fas fa-fw fa-plus\" />\n </div>\n\n <div className=\"Button Button--primary EditSocialButtons-del\" style=\"margin-left: 1%;\" onclick={this.delSocialButton.bind(this)}>\n <i className=\"fas fa-fw fa-minus\" />\n </div>\n\n {Button.component(\n {\n type: 'submit',\n style: 'float: right;',\n className: 'Button Button--primary EditSocialButtons-save',\n loading: this.loading,\n // Disable save button if favicons are being fetched\n disabled: areAnyIconsBeingFetched,\n title: areAnyIconsBeingFetched ? app.translator.trans('fof-socialprofile.forum.edit.save_disabled_fetching_favicons') : null,\n },\n app.translator.trans('fof-socialprofile.forum.edit.submit')\n )}\n </div>\n </div>\n </div>\n );\n }\n\n data() {\n const buttons = [];\n\n this.buttons.forEach((button) => {\n if (button && button.title() && button.url()) {\n buttons.push({\n title: button.title(),\n url: button.url(),\n icon: button.icon(),\n favicon: button.favicon(),\n });\n }\n });\n\n return {\n socialButtons: JSON.stringify(buttons),\n };\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n this.attrs.user\n .save(this.data(), { errorHandler: this.onerror.bind(this) })\n .then(this.hide.bind(this))\n .then($('#app').trigger('refreshSocialButtons', [this.data().socialButtons]))\n .catch(() => {\n this.loading = false;\n m.redraw();\n });\n }\n\n addSocialButton() {\n this.createButtonObject(this.buttons.length);\n\n m.redraw();\n\n $('document').ready(() => {\n $(`#socialgroup-${this.buttons.length - 1}`).slideDown();\n });\n }\n\n delSocialButton() {\n const curdel = this.buttons.length - 1;\n\n $(`#socialgroup-${curdel}`).slideUp('normal', () => {\n this.buttons.splice(curdel, 1);\n m.redraw();\n });\n }\n\n createButtonObject(key, button = null) {\n if (button == null) {\n this.buttons[key] = {};\n this.buttons[key].index = Stream(key);\n this.buttons[key].favicon = Stream('none');\n this.buttons[key].title = Stream('');\n this.buttons[key].url = Stream('');\n this.buttons[key].icon = Stream('fas fa-globe');\n } else {\n this.buttons[key] = {};\n this.buttons[key].index = Stream(key);\n this.buttons[key].favicon = Stream(button.favicon);\n this.buttons[key].title = Stream(button.title);\n this.buttons[key].url = Stream(button.url);\n this.buttons[key].icon = Stream(button.icon);\n }\n }\n}\n","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport User from 'flarum/common/models/User';\nimport { extend } from 'flarum/common/extend';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport Badge from 'flarum/common/components/Badge';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport classList from 'flarum/common/utils/classList';\n\nimport SocialButtonsModal from './components/SocialButtonsModal';\n\napp.initializers.add('fof/socialprofile', () => {\n User.prototype.socialButtons = Model.attribute('socialButtons', (str) => JSON.parse(str || '[]'));\n User.prototype.canViewSocialProfile = Model.attribute('canViewSocialProfile');\n User.prototype.canEditSocialProfile = Model.attribute('canEditSocialProfile');\n\n extend(UserCard.prototype, 'infoItems', function (items) {\n const user = this.attrs.user;\n\n if (!user.canViewSocialProfile()) {\n return;\n }\n\n this.canEdit = user.canEditSocialProfile();\n this.buttons = this.attrs.user.socialButtons();\n\n const buttonList = new ItemList();\n\n if (this.buttons.length) {\n this.buttons.forEach((button, index) => {\n if (button && button.title && button.icon && button.url) {\n let buttonStyle = {};\n let buttonClassName = classList({\n [`social-button ${button.icon}-${index} social-icon-${index}`]: true,\n 'social-greyscale-button': button.icon === 'favicon-grey',\n });\n\n if (button.icon === 'favicon' || button.icon === 'favicon-grey') {\n if (app.forum.attribute('fof-socialprofile.allow_external_favicons')) {\n buttonStyle = {\n backgroundImage: `url(\"${button.favicon}\")`,\n backgroundSize: '60%',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n };\n } else {\n buttonClassName += ' fas fa-globe';\n }\n }\n\n buttonList.add(\n `social-icon-${index}`,\n <a href={button.url} target=\"_blank\" rel=\"noreferrer noopener nofollow\">\n {Badge.component({\n className: classList({ [buttonClassName]: true, 'social-icon--deleting': this.deleting }),\n type: `social`,\n icon: button.icon,\n label: button.title,\n style: buttonStyle,\n })}\n </a>\n );\n }\n });\n\n if (this.canEdit) {\n buttonList.add(\n 'settings social-button',\n Badge.component({\n type: 'social social-settings',\n icon: 'fas fa-cog',\n label: app.translator.trans('fof-socialprofile.forum.edit.edit'),\n onclick: () => {\n app.modal.show(SocialButtonsModal, { user: this.attrs.user });\n },\n }),\n -1\n );\n }\n } else if (this.canEdit) {\n buttonList.add(\n 'settings social-button',\n Badge.component({\n type: 'social null-social-settings',\n icon: 'fas fa-plus',\n label: app.translator.trans('fof-socialprofile.forum.edit.add'),\n onclick: () => {\n app.modal.show(SocialButtonsModal, { user: this.attrs.user });\n },\n }),\n -1\n );\n }\n\n if (buttonList.toArray().length > 0) {\n items.add('fofsocialprofile', buttonList.toArray(), 20);\n }\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/SplitDropdown'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","import app from 'flarum/forum/app';\nimport { getPlainContent, truncate } from 'flarum/common/utils/string';\nimport pupa from 'pupa';\n\nexport const networks = {\n facebook: '//facebook.com/sharer/sharer.php?u={url}',\n twitter: '//twitter.com/share?url={url}&text={title}',\n linkedin: '//linkedin.com/shareArticle?mini=true&url={url}&title={title}&summary={description}',\n reddit: '//www.reddit.com/submit?url={url}&title={title}',\n whatsapp: '//api.whatsapp.com/send/?phone&text={title}%20{url}',\n telegram: '//telegram.me/share/url?url={url}&text={title}',\n\n vkontakte: '//vk.com/share.php?url={url}&title={title}&description={description}',\n odnoklassniki: '//connect.ok.ru/offer?url={url}',\n my_mail: '//connect.mail.ru/share?url={url}&title={title}&description={description}',\n qq: '//connect.qq.com/widget/shareqq/iframe_index.html?url={url}&title={title}',\n qzone: '//sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={url}&summary={description}&title={title}',\n\n native: (data) => navigator.share(getNativeData(data)),\n};\nexport const networkIcons = {\n vkontakte: 'fab fa-vk',\n my_mail: 'fas fa-at',\n qq: 'fab fa-qq',\n qzone: 'fas fa-star',\n native: 'fas fa-share-square',\n};\n\nexport const data = (discussion) => {\n const url = discussion.shareUrl();\n const title = app.title;\n const description = (discussion.firstPost() && truncate(getPlainContent(discussion.firstPost()?.contentHtml()), 150, 0)) || '';\n\n return { url, title, description };\n};\n\nexport const getNativeData = ({ title, description, url }) => ({ title, text: description, url });\n\nexport const canNativeShare = (discussion) => {\n return navigator.canShare?.(getNativeData(discussion));\n};\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}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\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 Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","const _htmlEscape = string => string\n\t.replace(/&/g, '&')\n\t.replace(/\"/g, '"')\n\t.replace(/'/g, ''')\n\t.replace(/</g, '<')\n\t.replace(/>/g, '>');\n\nconst _htmlUnescape = htmlString => htmlString\n\t.replace(/>/g, '>')\n\t.replace(/</g, '<')\n\t.replace(/�?39;/g, '\\'')\n\t.replace(/"/g, '\"')\n\t.replace(/&/g, '&');\n\nexport function htmlEscape(strings, ...values) {\n\tif (typeof strings === 'string') {\n\t\treturn _htmlEscape(strings);\n\t}\n\n\tlet output = strings[0];\n\tfor (const [index, value] of values.entries()) {\n\t\toutput = output + _htmlEscape(String(value)) + strings[index + 1];\n\t}\n\n\treturn output;\n}\n\nexport function htmlUnescape(strings, ...values) {\n\tif (typeof strings === 'string') {\n\t\treturn _htmlUnescape(strings);\n\t}\n\n\tlet output = strings[0];\n\tfor (const [index, value] of values.entries()) {\n\t\toutput = output + _htmlUnescape(String(value)) + strings[index + 1];\n\t}\n\n\treturn output;\n}\n","import {htmlEscape} from 'escape-goat';\n\nexport class MissingValueError extends Error {\n\tconstructor(key) {\n\t\tsuper(`Missing a value for ${key ? `the placeholder: ${key}` : 'a placeholder'}`, key);\n\t\tthis.name = 'MissingValueError';\n\t\tthis.key = key;\n\t}\n}\n\nexport default function pupa(template, data, {ignoreMissing = false, transform = ({value}) => value} = {}) {\n\tif (typeof template !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\` in the first argument, got \\`${typeof template}\\``);\n\t}\n\n\tif (typeof data !== 'object') {\n\t\tthrow new TypeError(`Expected an \\`object\\` or \\`Array\\` in the second argument, got \\`${typeof data}\\``);\n\t}\n\n\tconst replace = (placeholder, key) => {\n\t\tlet value = data;\n\t\tfor (const property of key.split('.')) {\n\t\t\tvalue = value ? value[property] : undefined;\n\t\t}\n\n\t\tconst transformedValue = transform({value, key});\n\t\tif (transformedValue === undefined) {\n\t\t\tif (ignoreMissing) {\n\t\t\t\treturn placeholder;\n\t\t\t}\n\n\t\t\tthrow new MissingValueError(key);\n\t\t}\n\n\t\treturn String(transformedValue);\n\t};\n\n\tconst composeHtmlEscape = replacer => (...args) => htmlEscape(replacer(...args));\n\n\t// The regex tries to match either a number inside `{{ }}` or a valid JS identifier or key path.\n\tconst doubleBraceRegex = /{{(\\d+|[a-z$_][\\w\\-$]*?(?:\\.[\\w\\-$]*?)*?)}}/gi;\n\n\tif (doubleBraceRegex.test(template)) {\n\t\ttemplate = template.replace(doubleBraceRegex, composeHtmlEscape(replace));\n\t}\n\n\tconst braceRegex = /{(\\d+|[a-z$_][\\w\\-$]*?(?:\\.[\\w\\-$]*?)*?)}/gi;\n\n\treturn template.replace(braceRegex, replace);\n}\n","import app from 'flarum/forum/app';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Button from 'flarum/common/components/Button';\nimport classList from 'flarum/common/utils/classList';\nimport { data, networkIcons, networks } from './share';\nimport pupa from 'pupa';\n\nexport const getNetworkButton = ({ network, discussion, isRounded = false }) => {\n return (\n <Button\n className={classList(`Button Button--block Share--${network}`, isRounded && 'Button--rounded')}\n icon={`${networkIcons[network] || `fab fa-${network}`} fa-lg fa-fw`}\n onclick={onNetworkButtonClick.bind(this, network, discussion)}\n >\n {app.translator.trans(`fof-share-social.lib.networks.${network}`)}\n </Button>\n );\n};\n\nexport const onNetworkButtonClick = (network, discussion) => {\n const payload = data(discussion);\n const action = networks[network];\n\n if (typeof action === 'function') {\n return action(payload);\n }\n\n const width = 1000;\n const height = 500;\n const top = $(window).height() / 2 - height / 2;\n const left = $(window).width() / 2 - width / 2;\n const windowParams = `width=${width}, height= ${height}, top=${top}, left=${left}, status=no, scrollbars=no, resizable=no`;\n\n for (const dataKey in payload) {\n payload[dataKey] = encodeURIComponent(payload[dataKey]);\n }\n\n window.open(pupa(action, payload), app.title, windowParams);\n};\n\nexport const getNetworkButtons = (discussion, isRounded) => {\n const list = new ItemList();\n const networks = app.forum.attribute('fof-share-social.networks');\n const def = app.forum.attribute('fof-share-social.default');\n\n for (const network of networks) {\n // Do not add native share option if not supported\n if (network === 'native' && !navigator.canShare?.(data(discussion))) continue;\n\n list.add(network, getNetworkButton({ network, discussion, isRounded }));\n }\n\n if (list.has(def)) {\n list.setPriority(def, 1000);\n }\n\n return list;\n};\n","import app from 'flarum/forum/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport icon from 'flarum/common/helpers/icon';\n\nimport { getNetworkButtons } from '../util/networks';\n\nexport default class ShareModal extends Modal {\n oninit(vdom) {\n super.oninit(vdom);\n\n this.networks = this.attrs.networks;\n this.discussion = this.attrs.discussion;\n }\n\n className() {\n return 'FofShareSocialModal Modal--small';\n }\n\n title() {\n return app.translator.trans('fof-share-social.forum.modal.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <div className=\"Form-group\">{this.shareItems().toArray()}</div>\n </div>\n </div>\n );\n }\n\n shareItems() {\n const items = getNetworkButtons(this.discussion, true);\n const plainCopy = app.forum.attribute('fof-share-social.plain-copy');\n\n if (plainCopy) {\n items.add(\n 'plain-copy',\n <div className=\"ShareUrl\">\n <input className=\"FormControl\" type=\"text\" value={this.discussion.shareUrl()} />\n <Button\n className={'Button Button--primary'}\n aria-label={app.translator.trans('fof-share-social.forum.modal.copy_button')}\n onclick={this.copy.bind(this)}\n >\n {icon('fas fa-copy fa-check')}\n </Button>\n </div>\n );\n }\n\n return items;\n }\n\n onclick(network) {\n return share(network);\n }\n\n copy() {\n const copyText = document.querySelector('.ShareUrl input');\n copyText.select();\n copyText.setSelectionRange(0, 99999);\n document.execCommand('copy');\n this.toggleCopyIcon();\n }\n\n toggleCopyIcon() {\n const copyButton = document.querySelector('.ShareUrl button i');\n copyButton.classList.toggle('fa-copy');\n setTimeout(() => {\n copyButton.classList.toggle('fa-copy');\n }, 3000);\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport SplitDropdown from 'flarum/common/components/SplitDropdown';\n\nimport ShareModal from './components/ShareModal';\nimport { getNativeData } from './util/share';\nimport { getNetworkButtons } from './util/networks';\n\nconst getNetworks = () => {\n let cache = null;\n\n return (networks, def) => {\n if (cache) return cache;\n\n cache = [...networks];\n const index = cache.indexOf(def);\n\n if (index !== -1) {\n cache.splice(index, 1);\n cache.unshift(def);\n }\n\n return cache;\n };\n};\n\napp.initializers.add('fof/share-social', () => {\n Discussion.prototype.shareUrl = Model.attribute('shareUrl');\n\n extend(DiscussionPage.prototype, 'sidebarItems', function (items) {\n const networks = app.forum.attribute('fof-share-social.networks');\n const def = app.forum.attribute('fof-share-social.default');\n\n const isNativeShare = def === 'native';\n const canNativeShare = isNativeShare && navigator.canShare?.(getNativeData(this.discussion));\n\n if (def && (!isNativeShare || canNativeShare)) {\n const list = getNetworkButtons(this.discussion);\n\n // Use default share button text for native sharing\n if (isNativeShare) {\n list.get('native').children = app.translator.trans('fof-share-social.forum.discussion.share_button');\n }\n\n if (list.isEmpty()) return;\n\n items.add(\n 'share-social',\n <SplitDropdown\n icon=\"fas fa-share-alt\"\n buttonClassName=\"Button--share\"\n accessibleToggleLabel={app.translator.trans('fof-share-social.forum.discussion.share_dropdown_accessible_label')}\n lazyDraw={true}\n >\n {list.toArray()}\n </SplitDropdown>\n );\n } else {\n items.add(\n 'share-social',\n <Button\n class=\"Button Button-icon Button--share\"\n icon=\"fas fa-share-alt\"\n onclick={() =>\n app.modal.show(ShareModal, {\n networks,\n discussion: this.discussion,\n })\n }\n >\n {app.translator.trans('fof-share-social.forum.discussion.share_button')}\n </Button>,\n -1\n );\n }\n });\n});\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n 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 function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\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 if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ReplyComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\n\nexport default class RecaptchaState {\n constructor(settings, callback, errorCallback = null) {\n this.settings = settings;\n this.callback = callback;\n this.errorCallback =\n errorCallback ||\n ((alertAttrs) => {\n // By default, the alert will just be shown globally\n app.alerts.show(alertAttrs);\n });\n this.widgetId = null;\n\n this.type = this.settings['fof-recaptcha.type'];\n }\n\n render(element) {\n this.widgetId = grecaptcha.render(element, {\n sitekey: this.settings['fof-recaptcha.credentials.site'],\n theme: !!Number(this.settings['theme_dark_mode']) ? 'dark' : 'light',\n type: this.type,\n size: this.settings['fof-recaptcha.type'] === 'invisible' ? 'invisible' : 'normal',\n callback: this.callback,\n 'error-callback': () => {\n // Similarly to error.alert, we create an alert payload that can then be shown in-context depending where the code is called from\n const alertAttrs = {\n type: 'error',\n content: app.translator.trans('fof-recaptcha.forum.error'),\n };\n this.errorCallback(alertAttrs);\n },\n });\n }\n\n getResponse() {\n return grecaptcha.getResponse(this.widgetId);\n }\n\n execute() {\n return grecaptcha.execute(this.widgetId);\n }\n\n reset() {\n return grecaptcha.reset(this.widgetId);\n }\n\n isInvisible() {\n return this.type === 'invisible';\n }\n}\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\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 if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\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 function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","/**\n * Simple resource loader based on David Walsh's tutorial\n * https://davidwalsh.name/javascript-loader\n * https://davidwalsh.name/javascript-functions\n */\nexport default (function() {\n // Function which returns a function\n function _load(tag) {\n return function(url) {\n // This promise will be used by Promise.all to determine success or failure\n return new Promise(function(resolve, reject) {\n var element = document.createElement(tag);\n var parent = \"body\";\n var attr = \"src\";\n\n // Important success and error for the promise\n element.onload = function() {\n resolve(url);\n };\n element.onerror = function() {\n reject(url);\n };\n\n // Need to set different attributes depending on tag type\n switch (tag) {\n case \"script\":\n element.async = true;\n break;\n case \"link\":\n element.type = \"text/css\";\n element.rel = \"stylesheet\";\n attr = \"href\";\n parent = \"head\";\n }\n\n // Inject into document to kick off loading\n element[attr] = url;\n document[parent].appendChild(element);\n });\n };\n }\n\n return {\n css: _load(\"link\"),\n js: _load(\"script\"),\n img: _load(\"img\")\n };\n})();\n","import app from 'flarum/common/app';\nimport Component from 'flarum/common/Component';\nimport load from 'external-load';\n\nconst addResources = async () => {\n if (app.recaptchaLoaded) return;\n\n await load.js(`https://www.recaptcha.net/recaptcha/api.js?hl=${app.translator.getLocale()}&render=explicit`);\n\n app.recaptchaLoaded = true;\n};\n\nexport default class Recaptcha extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n }\n\n view() {\n return (\n <div className=\"Form-group\">\n <div className=\"g-recaptcha\" />\n </div>\n );\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n addResources().then(() => {\n const interval = setInterval(() => {\n if (window.recaptcha) {\n clearInterval(interval);\n this.attrs.state.render(vnode.dom.querySelector('.g-recaptcha'));\n }\n }, 250);\n });\n\n // It's possible to TAB into the reCAPTCHA iframe, and it's very confusing when using the invisible mode\n if (this.attrs.state.type === 'invisible') {\n const iframe = vnode.dom.querySelector('iframe');\n\n if (iframe) {\n iframe.tabIndex = -1;\n }\n }\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/forum/app';\nimport { extend, override } from 'flarum/common/extend';\nimport RecaptchaState from '../common/states/RecaptchaState';\nimport Recaptcha from '../common/components/Recaptcha';\n\nexport const isRecaptchaConfigured = () => app.forum.attribute('fof-recaptcha.configured');\nexport const canPostWithoutCaptcha = () => app.forum.attribute('postWithoutCaptcha');\nexport const shouldUseCaptcha = () => isRecaptchaConfigured() && !canPostWithoutCaptcha();\n\nexport default function (Composer) {\n extend(Composer.prototype, 'oninit', function () {\n if (!shouldUseCaptcha()) {\n return;\n }\n\n this.recaptcha = new RecaptchaState(app.forum.data.attributes, () => {\n if (this.recaptcha.isInvisible()) {\n // onsubmit is usually called without any argument.\n // We use the first argument to indicate the second call after invisible recaptcha\n this.onsubmit('recaptchaSecondStep');\n }\n });\n });\n\n extend(Composer.prototype, 'data', function (data) {\n if (!shouldUseCaptcha()) {\n return;\n }\n\n data['g-recaptcha-response'] = this.recaptcha.getResponse();\n });\n\n extend(Composer.prototype, 'headerItems', function (fields) {\n if (!shouldUseCaptcha()) {\n return;\n }\n\n fields.add(\n 'recaptcha',\n Recaptcha.component({\n state: this.recaptcha,\n }),\n -5\n );\n });\n\n // There's no onerror handler on composer classes, but we can react to loaded which is called after errors\n extend(Composer.prototype, 'loaded', function () {\n if (!shouldUseCaptcha()) {\n return;\n }\n\n this.recaptcha.reset();\n });\n\n override(Composer.prototype, 'onsubmit', function (original, argument1) {\n if (shouldUseCaptcha() && this.recaptcha.isInvisible() && argument1 !== 'recaptchaSecondStep') {\n this.loading = true;\n this.recaptcha.execute();\n return;\n }\n\n return original();\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ForgotPasswordModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/LogInModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SignUpModal'];","import app from 'flarum/forum/app';\nimport ForgotPasswordModal from 'flarum/forum/components/ForgotPasswordModal';\nimport LogInModal from 'flarum/forum/components/LogInModal';\nimport SignUpModal from 'flarum/forum/components/SignUpModal';\nimport { extend, override } from 'flarum/common/extend';\n\nimport RecaptchaState from '../common/states/RecaptchaState';\nimport Recaptcha from '../common/components/Recaptcha';\n\nexport const addRecaptchaToAuthModal = <T extends typeof ForgotPasswordModal | typeof LogInModal | typeof SignUpModal>({\n modal,\n type,\n dataMethod,\n}: {\n modal: T;\n type: string;\n dataMethod: string;\n}) => {\n const isEnabled = () => !!app.forum.attribute(`fof-recaptcha.${type}`);\n\n extend(modal.prototype, 'oninit', function () {\n if (!app.forum.attribute('fof-recaptcha.configured')) return;\n if (!isEnabled()) return;\n\n this.recaptcha = new RecaptchaState(\n app.forum.data.attributes,\n () => {\n if (this.recaptcha.isInvisible()) {\n // Create \"fake\" event so this works when other extensions extend onsubmit as well\n const event = new Event('submit');\n event.isRecaptchaSecondStep = true;\n this.onsubmit(event);\n }\n },\n (alertAttrs) => {\n // Removes the spinner on the submit button so we can try again\n this.loaded();\n this.alertAttrs = alertAttrs;\n }\n );\n });\n\n extend(modal.prototype, dataMethod, function (data) {\n if (!app.forum.attribute('fof-recaptcha.configured')) return;\n if (!isEnabled()) return;\n\n data['g-recaptcha-response'] = this.recaptcha.getResponse();\n });\n\n extend(modal.prototype, 'fields', function (fields) {\n if (!app.forum.attribute('fof-recaptcha.configured')) return;\n if (!isEnabled()) return;\n\n fields.add('recaptcha', <Recaptcha state={this.recaptcha} />, -5);\n });\n\n extend(modal.prototype, 'onerror', function (_, error) {\n if (!app.forum.attribute('fof-recaptcha.configured')) return;\n if (!isEnabled()) return;\n\n this.recaptcha.reset();\n\n // Set custom error message during login because no error comes back from /login when recaptcha fails\n if (type === 'signin' && error.alert && (!error.alert.content || !error.alert.content.length)) {\n error.alert.content = app.translator.trans('fof-recaptcha.forum.unknown_error');\n }\n });\n\n override(modal.prototype, 'onsubmit', function (original, e) {\n if (app.forum.attribute('fof-recaptcha.configured') && isEnabled() && this.recaptcha.isInvisible() && !e.isRecaptchaSecondStep) {\n // When recaptcha is invisible, onsubmit will be called two times\n // First time with normal event, we will call recaptcha.execute\n // Second time is called from recaptcha callback with a special isRecaptcha attribute\n e.preventDefault();\n this.loading = true;\n this.recaptcha.execute();\n return;\n }\n\n return original(e);\n });\n};\n\nexport default () => {\n addRecaptchaToAuthModal({ modal: ForgotPasswordModal, type: 'forgot', dataMethod: 'requestParams' });\n addRecaptchaToAuthModal({ modal: LogInModal, type: 'signin', dataMethod: 'loginParams' });\n addRecaptchaToAuthModal({ modal: SignUpModal, type: 'signup', dataMethod: 'submitData' });\n};\n","import app from 'flarum/forum/app';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\nimport ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport extendComposer from './extendComposer';\nimport extendAuthModals from './extendAuthModals';\n\napp.initializers.add('fof/recaptcha', () => {\n app.recaptchaLoaded = false;\n\n extendComposer(DiscussionComposer);\n extendComposer(ReplyComposer);\n extendAuthModals();\n});\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"module.exports:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","module.exports = require(\"regenerator-runtime\");\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","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"chunk~\" + \"modules\" + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t315: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmodule_exports\"] = self[\"webpackChunkmodule_exports\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/AvatarEditor'];","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}","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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","// TODO: including these in blob-util.ts causes typedoc to generate docs for them,\n// even with --excludePrivate \u00af\\_(\u30c4)_/\u00af\n/** @private */\nfunction loadImage(src, crossOrigin) {\n return new Promise(function (resolve, reject) {\n var img = new Image();\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n }\n img.onload = function () {\n resolve(img);\n };\n img.onerror = reject;\n img.src = src;\n });\n}\n/** @private */\nfunction imgToCanvas(img) {\n var canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n // copy the image contents to the canvas\n var context = canvas.getContext('2d');\n context.drawImage(img, 0, 0, img.width, img.height, 0, 0, img.width, img.height);\n return canvas;\n}\n\n/* global Promise, Image, Blob, FileReader, atob, btoa,\n BlobBuilder, MSBlobBuilder, MozBlobBuilder, WebKitBlobBuilder, webkitURL */\n/**\n * Shim for\n * [`new Blob()`](https://developer.mozilla.org/en-US/docs/Web/API/Blob.Blob)\n * to support\n * [older browsers that use the deprecated `BlobBuilder` API](http://caniuse.com/blob).\n *\n * Example:\n *\n * ```js\n * var myBlob = blobUtil.createBlob(['hello world'], {type: 'text/plain'});\n * ```\n *\n * @param parts - content of the Blob\n * @param properties - usually `{type: myContentType}`,\n * you can also pass a string for the content type\n * @returns Blob\n */\nfunction createBlob(parts, properties) {\n parts = parts || [];\n properties = properties || {};\n if (typeof properties === 'string') {\n properties = { type: properties }; // infer content type\n }\n try {\n return new Blob(parts, properties);\n }\n catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined'\n ? BlobBuilder : typeof MSBlobBuilder !== 'undefined'\n ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined'\n ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n/**\n * Shim for\n * [`URL.createObjectURL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL)\n * to support browsers that only have the prefixed\n * `webkitURL` (e.g. Android <4.4).\n *\n * Example:\n *\n * ```js\n * var myUrl = blobUtil.createObjectURL(blob);\n * ```\n *\n * @param blob\n * @returns url\n */\nfunction createObjectURL(blob) {\n return (typeof URL !== 'undefined' ? URL : webkitURL).createObjectURL(blob);\n}\n/**\n * Shim for\n * [`URL.revokeObjectURL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL)\n * to support browsers that only have the prefixed\n * `webkitURL` (e.g. Android <4.4).\n *\n * Example:\n *\n * ```js\n * blobUtil.revokeObjectURL(myUrl);\n * ```\n *\n * @param url\n */\nfunction revokeObjectURL(url) {\n return (typeof URL !== 'undefined' ? URL : webkitURL).revokeObjectURL(url);\n}\n/**\n * Convert a `Blob` to a binary string.\n *\n * Example:\n *\n * ```js\n * blobUtil.blobToBinaryString(blob).then(function (binaryString) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * @param blob\n * @returns Promise that resolves with the binary string\n */\nfunction blobToBinaryString(blob) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n var hasBinaryString = typeof reader.readAsBinaryString === 'function';\n reader.onloadend = function () {\n var result = reader.result || '';\n if (hasBinaryString) {\n return resolve(result);\n }\n resolve(arrayBufferToBinaryString(result));\n };\n reader.onerror = reject;\n if (hasBinaryString) {\n reader.readAsBinaryString(blob);\n }\n else {\n reader.readAsArrayBuffer(blob);\n }\n });\n}\n/**\n * Convert a base64-encoded string to a `Blob`.\n *\n * Example:\n *\n * ```js\n * var blob = blobUtil.base64StringToBlob(base64String);\n * ```\n * @param base64 - base64-encoded string\n * @param type - the content type (optional)\n * @returns Blob\n */\nfunction base64StringToBlob(base64, type) {\n var parts = [binaryStringToArrayBuffer(atob(base64))];\n return type ? createBlob(parts, { type: type }) : createBlob(parts);\n}\n/**\n * Convert a binary string to a `Blob`.\n *\n * Example:\n *\n * ```js\n * var blob = blobUtil.binaryStringToBlob(binaryString);\n * ```\n *\n * @param binary - binary string\n * @param type - the content type (optional)\n * @returns Blob\n */\nfunction binaryStringToBlob(binary, type) {\n return base64StringToBlob(btoa(binary), type);\n}\n/**\n * Convert a `Blob` to a binary string.\n *\n * Example:\n *\n * ```js\n * blobUtil.blobToBase64String(blob).then(function (base64String) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * @param blob\n * @returns Promise that resolves with the binary string\n */\nfunction blobToBase64String(blob) {\n return blobToBinaryString(blob).then(btoa);\n}\n/**\n * Convert a data URL string\n * (e.g. `'data:image/png;base64,iVBORw0KG...'`)\n * to a `Blob`.\n *\n * Example:\n *\n * ```js\n * var blob = blobUtil.dataURLToBlob(dataURL);\n * ```\n *\n * @param dataURL - dataURL-encoded string\n * @returns Blob\n */\nfunction dataURLToBlob(dataURL) {\n var type = dataURL.match(/data:([^;]+)/)[1];\n var base64 = dataURL.replace(/^[^,]+,/, '');\n var buff = binaryStringToArrayBuffer(atob(base64));\n return createBlob([buff], { type: type });\n}\n/**\n * Convert a `Blob` to a data URL string\n * (e.g. `'data:image/png;base64,iVBORw0KG...'`).\n *\n * Example:\n *\n * ```js\n * var dataURL = blobUtil.blobToDataURL(blob);\n * ```\n *\n * @param blob\n * @returns Promise that resolves with the data URL string\n */\nfunction blobToDataURL(blob) {\n return blobToBase64String(blob).then(function (base64String) {\n return 'data:' + blob.type + ';base64,' + base64String;\n });\n}\n/**\n * Convert an image's `src` URL to a data URL by loading the image and painting\n * it to a `canvas`.\n *\n * Note: this will coerce the image to the desired content type, and it\n * will only paint the first frame of an animated GIF.\n *\n * Examples:\n *\n * ```js\n * blobUtil.imgSrcToDataURL('http://mysite.com/img.png').then(function (dataURL) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * ```js\n * blobUtil.imgSrcToDataURL('http://some-other-site.com/img.jpg', 'image/jpeg',\n * 'Anonymous', 1.0).then(function (dataURL) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * @param src - image src\n * @param type - the content type (optional, defaults to 'image/png')\n * @param crossOrigin - for CORS-enabled images, set this to\n * 'Anonymous' to avoid \"tainted canvas\" errors\n * @param quality - a number between 0 and 1 indicating image quality\n * if the requested type is 'image/jpeg' or 'image/webp'\n * @returns Promise that resolves with the data URL string\n */\nfunction imgSrcToDataURL(src, type, crossOrigin, quality) {\n type = type || 'image/png';\n return loadImage(src, crossOrigin).then(imgToCanvas).then(function (canvas) {\n return canvas.toDataURL(type, quality);\n });\n}\n/**\n * Convert a `canvas` to a `Blob`.\n *\n * Examples:\n *\n * ```js\n * blobUtil.canvasToBlob(canvas).then(function (blob) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * Most browsers support converting a canvas to both `'image/png'` and `'image/jpeg'`. You may\n * also want to try `'image/webp'`, which will work in some browsers like Chrome (and in other browsers, will just fall back to `'image/png'`):\n *\n * ```js\n * blobUtil.canvasToBlob(canvas, 'image/webp').then(function (blob) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * @param canvas - HTMLCanvasElement\n * @param type - the content type (optional, defaults to 'image/png')\n * @param quality - a number between 0 and 1 indicating image quality\n * if the requested type is 'image/jpeg' or 'image/webp'\n * @returns Promise that resolves with the `Blob`\n */\nfunction canvasToBlob(canvas, type, quality) {\n if (typeof canvas.toBlob === 'function') {\n return new Promise(function (resolve) {\n canvas.toBlob(resolve, type, quality);\n });\n }\n return Promise.resolve(dataURLToBlob(canvas.toDataURL(type, quality)));\n}\n/**\n * Convert an image's `src` URL to a `Blob` by loading the image and painting\n * it to a `canvas`.\n *\n * Note: this will coerce the image to the desired content type, and it\n * will only paint the first frame of an animated GIF.\n *\n * Examples:\n *\n * ```js\n * blobUtil.imgSrcToBlob('http://mysite.com/img.png').then(function (blob) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * ```js\n * blobUtil.imgSrcToBlob('http://some-other-site.com/img.jpg', 'image/jpeg',\n * 'Anonymous', 1.0).then(function (blob) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * @param src - image src\n * @param type - the content type (optional, defaults to 'image/png')\n * @param crossOrigin - for CORS-enabled images, set this to\n * 'Anonymous' to avoid \"tainted canvas\" errors\n * @param quality - a number between 0 and 1 indicating image quality\n * if the requested type is 'image/jpeg' or 'image/webp'\n * @returns Promise that resolves with the `Blob`\n */\nfunction imgSrcToBlob(src, type, crossOrigin, quality) {\n type = type || 'image/png';\n return loadImage(src, crossOrigin).then(imgToCanvas).then(function (canvas) {\n return canvasToBlob(canvas, type, quality);\n });\n}\n/**\n * Convert an `ArrayBuffer` to a `Blob`.\n *\n * Example:\n *\n * ```js\n * var blob = blobUtil.arrayBufferToBlob(arrayBuff, 'audio/mpeg');\n * ```\n *\n * @param buffer\n * @param type - the content type (optional)\n * @returns Blob\n */\nfunction arrayBufferToBlob(buffer, type) {\n return createBlob([buffer], type);\n}\n/**\n * Convert a `Blob` to an `ArrayBuffer`.\n *\n * Example:\n *\n * ```js\n * blobUtil.blobToArrayBuffer(blob).then(function (arrayBuff) {\n * // success\n * }).catch(function (err) {\n * // error\n * });\n * ```\n *\n * @param blob\n * @returns Promise that resolves with the `ArrayBuffer`\n */\nfunction blobToArrayBuffer(blob) {\n return new Promise(function (resolve, reject) {\n var reader = new FileReader();\n reader.onloadend = function () {\n var result = reader.result || new ArrayBuffer(0);\n resolve(result);\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(blob);\n });\n}\n/**\n * Convert an `ArrayBuffer` to a binary string.\n *\n * Example:\n *\n * ```js\n * var myString = blobUtil.arrayBufferToBinaryString(arrayBuff)\n * ```\n *\n * @param buffer - array buffer\n * @returns binary string\n */\nfunction arrayBufferToBinaryString(buffer) {\n var binary = '';\n var bytes = new Uint8Array(buffer);\n var length = bytes.byteLength;\n var i = -1;\n while (++i < length) {\n binary += String.fromCharCode(bytes[i]);\n }\n return binary;\n}\n/**\n * Convert a binary string to an `ArrayBuffer`.\n *\n * ```js\n * var myBuffer = blobUtil.binaryStringToArrayBuffer(binaryString)\n * ```\n *\n * @param binary - binary string\n * @returns array buffer\n */\nfunction binaryStringToArrayBuffer(binary) {\n var length = binary.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n var i = -1;\n while (++i < length) {\n arr[i] = binary.charCodeAt(i);\n }\n return buf;\n}\n\nexport { createBlob, createObjectURL, revokeObjectURL, blobToBinaryString, base64StringToBlob, binaryStringToBlob, blobToBase64String, dataURLToBlob, blobToDataURL, imgSrcToDataURL, canvasToBlob, imgSrcToBlob, arrayBufferToBlob, blobToArrayBuffer, arrayBufferToBinaryString, binaryStringToArrayBuffer };\n","import app from 'flarum/forum/app';\n\nconst prepare = () => (__webpack_public_path__ = `${app.forum.attribute('assetsBaseUrl')}/extensions/fof-profile-image-crop/`);\n\nexport const loadCropper = async () => {\n try {\n prepare();\n\n return (await import(/* webpackChunkName: 'modules' */ 'cropperjs')).default;\n } catch (e) {\n console.error('[fof/profile-image-crop] An error occurred while loading `cropperjs`.', e);\n }\n\n return null;\n};\n\nexport const loadImageBlobReduce = async () => {\n try {\n prepare();\n\n return (await import(/* webpackChunkName: 'modules' */ 'image-blob-reduce')).default;\n } catch (e) {\n console.error('[fof/profile-image-crop] An error occurred while loading `image-blob-reduce`.', e);\n }\n\n return null;\n};\n","import app from 'flarum/forum/app';\n\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nimport { dataURLToBlob } from 'blob-util';\nimport { loadCropper, loadImageBlobReduce } from '../external/modules';\n\nexport default class ProfileImageCropModal extends Modal {\n static isDismissible = false;\n\n className() {\n return 'FofProfileImageCropModal Modal--small';\n }\n\n title() {\n return app.translator.trans('core.forum.user.avatar_upload_button');\n }\n\n oninit(vnode) {\n super.oninit(vnode);\n\n const reader = new FileReader();\n\n reader.addEventListener('load', () => {\n this.image = reader.result;\n m.redraw();\n });\n\n reader.readAsDataURL(this.attrs.file);\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Image-container\">\n {!this.ready && <LoadingIndicator size=\"tiny\" />}\n {this.image && <img src={this.image} data-ready={!!this.ready} onload={this.loadPicker.bind(this)} />}\n </div>\n\n <br />\n\n {this.ready && this.cropper && (\n <p className=\"helpText\">\n {app.translator.trans('fof-profile-image-crop.forum.modal.help_text', {\n disableResize: this.noResize ? <s /> : <a onclick={this.disableResize.bind(this)} />,\n disableCrop: !this.cropper ? <s /> : <a onclick={this.disableCrop.bind(this)} />,\n })}\n </p>\n )}\n\n <div className=\"Modal-buttons\">\n <Button className=\"Button Button--primary\" loading={this.loading} onclick={this.upload.bind(this)} disabled={!this.ready}>\n {app.translator.trans(`fof-profile-image-crop.forum.modal.${this.cropper ? 'submit_crop' : 'submit'}_button`)}\n </Button>\n\n <Button className=\"Button Button--icon Button--danger\" icon=\"fas fa-times\" onclick={this.hide.bind(this)} />\n </div>\n </div>\n );\n }\n\n async loadPicker(evt) {\n // Need to store event target before async and/or timeouts,\n // otherwise becomes null on Chrome\n const target = evt.target || evt.path[0];\n\n const Cropper = await loadCropper();\n\n if (!Cropper) {\n this.alertAttrs = {\n type: 'error',\n content: app.translator.trans('fof-profile-image-crop.forum.modal.error.failed_to_load_cropper'),\n };\n }\n\n setTimeout(() => {\n this.ready = true;\n\n if (Cropper) {\n this.cropper = new Cropper(target, {\n aspectRatio: 1,\n viewMode: 1,\n guides: false,\n background: false,\n responsive: true,\n });\n }\n\n m.redraw();\n }, 500);\n }\n\n onbeforeupdate(vnode) {\n const err = vnode.attrs.error;\n\n if (err) {\n this.loading = false;\n\n if (!err.alert) {\n this.alertAttrs = {\n type: 'error',\n content: err.toLocaleString?.() || err,\n };\n } else {\n delete this.alertAttrs;\n }\n\n delete vnode.attrs.error;\n delete app.modal.modal.attrs.error;\n }\n\n super.onbeforeupdate(vnode);\n }\n\n disableResize() {\n this.noResize = true;\n m.redraw();\n }\n\n disableCrop() {\n this.cropper.destroy();\n this.cropper = null;\n m.redraw();\n }\n\n async upload() {\n if (this.loading) return;\n\n this.loading = true;\n\n if (!this.cropper) {\n return this.submitBlob(dataURLToBlob(this.image));\n }\n\n const canvas = this.cropper.getCroppedCanvas();\n\n if (this.noResize) {\n return this.submitBlob(await this.canvasToBlob(canvas));\n }\n\n const imageBlobReduce = await loadImageBlobReduce();\n\n // If image-blob-reduce is not available, we can't resize the image\n if (!imageBlobReduce) {\n this.loaded();\n this.disableResize();\n\n return this.upload();\n }\n\n let resizedCanvas = canvas;\n\n try {\n const blob = await this.canvasToBlob(canvas);\n\n resizedCanvas = await imageBlobReduce().toCanvas(blob, {\n max: 100,\n });\n } catch (e) {\n console.error('[fof/profile-image-crop] An error occurred while resizing the image.', e);\n\n this.alertAttrs = {\n type: 'error',\n content:\n e.code === 'ERR_GET_IMAGE_DATA'\n ? app.translator.trans('fof-profile-image-crop.forum.modal.error.get_image_data')\n : app.translator.trans('fof-profile-image-crop.forum.modal.error.generic_resize'),\n };\n\n this.loaded();\n this.disableCrop();\n\n return;\n }\n\n return this.submitBlob(await this.canvasToBlob(resizedCanvas));\n }\n\n async canvasToBlob(canvas) {\n return new Promise((resolve) => canvas.toBlob(resolve));\n }\n\n async submitBlob(blob) {\n const file = new File([blob], this.attrs.file.name, { type: this.attrs.file.type });\n\n return this.attrs.upload(file);\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/forum/app';\n\nimport { extend, override } from 'flarum/common/extend';\nimport AvatarEditor from 'flarum/forum/components/AvatarEditor';\n\nimport ProfileImageCropModal from './components/ProfileImageCropModal';\n\napp.initializers.add('fof/profile-image-crop', () => {\n override(AvatarEditor.prototype, 'upload', function (original, file) {\n if (!file || !window.FileReader) return original();\n if (this.loading) return;\n\n app.modal.show(ProfileImageCropModal, {\n file,\n upload: original,\n });\n });\n\n extend(AvatarEditor.prototype, 'success', () => {\n app.modal.close();\n });\n\n extend(AvatarEditor.prototype, 'failure', (ignored, error) => {\n if (app.modal && app.modal.modal && app.modal.modal.componentClass === ProfileImageCropModal) {\n app.modal.modal.attrs.error = error;\n m.redraw();\n }\n });\n});\n\nexport const components = {\n ProfileImageCropModal,\n};\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","import app from 'flarum/common/app';\n\n/*\n\n JS enum equivalent. Makes sure no value mix-ups are made!\n\n DEFAULT is used when an invalid value has been set, as well as for guest and new users.\n\n*/\n\nconst Themes = {\n AUTO: 0,\n LIGHT: 1,\n DARK: 2,\n\n // adds an \"ultra default\" of 0 if the admins don't set a default tsk tsk tsk\n DEFAULT: () => app.forum.attribute('fof-nightmode.default_theme') || 0,\n};\n\nexport default Themes;\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","var __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nfunction stringifyAttribute(name, value) {\r\n if (!value) {\r\n return '';\r\n }\r\n var stringified = '; ' + name;\r\n if (value === true) {\r\n return stringified; // boolean attributes shouldn't have a value\r\n }\r\n return stringified + '=' + value;\r\n}\r\nfunction stringifyAttributes(attributes) {\r\n if (typeof attributes.expires === 'number') {\r\n var expires = new Date();\r\n expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5);\r\n attributes.expires = expires;\r\n }\r\n return stringifyAttribute('Expires', attributes.expires ? attributes.expires.toUTCString() : '')\r\n + stringifyAttribute('Domain', attributes.domain)\r\n + stringifyAttribute('Path', attributes.path)\r\n + stringifyAttribute('Secure', attributes.secure)\r\n + stringifyAttribute('SameSite', attributes.sameSite);\r\n}\r\nexport function encode(name, value, attributes) {\r\n return encodeURIComponent(name)\r\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent) // allowed special characters\r\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29') // replace opening and closing parens\r\n + '=' + encodeURIComponent(value)\r\n // allowed special characters\r\n .replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent)\r\n + stringifyAttributes(attributes);\r\n}\r\nexport function parse(cookieString) {\r\n var result = {};\r\n var cookies = cookieString ? cookieString.split('; ') : [];\r\n for (var _i = 0, cookies_1 = cookies; _i < cookies_1.length; _i++) {\r\n var cookie = cookies_1[_i];\r\n var parts = cookie.split('=');\r\n var value = parts.slice(1).join('=');\r\n if (value[0] === '\"') {\r\n value = value.slice(1, -1);\r\n }\r\n try {\r\n var name_1 = decodeURIComponent(parts[0]);\r\n result[name_1] = value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\r\n }\r\n catch (e) {\r\n // ignore cookies with invalid name/value encoding\r\n }\r\n }\r\n return result;\r\n}\r\nexport function getAll() {\r\n return parse(document.cookie);\r\n}\r\nexport function get(name) {\r\n return getAll()[name];\r\n}\r\nexport function set(name, value, attributes) {\r\n document.cookie = encode(name, value, __assign({ path: '/' }, attributes));\r\n}\r\nexport function remove(name, attributes) {\r\n set(name, '', __assign(__assign({}, attributes), { expires: -1 }));\r\n}\r\n","import * as Cookies from 'es-cookie';\nimport Themes from '../../common/Themes';\n\nexport const KEY = 'flarum_nightmode';\n\nexport const get = () => {\n const value = Cookies.get(KEY);\n\n if (!value && value !== '0') {\n return Themes.DEFAULT();\n }\n\n return Number(value);\n};\n\nexport const set = (val) =>\n Cookies.set(KEY, val, {\n sameSite: 'lax',\n secure: location.protocol === 'https:',\n });\n\nexport const remove = () => Cookies.remove(KEY);\n","/*\n This function is designed to catch invalid theme values\n and handle them before they can break Flarum for users.\n\n E.g. if a user manually edited their cookies to\n set their theme to an invalid value, this theme would\n detect that, and reset it to 0 (auto).\n*/\n\nimport Themes from '../common/Themes';\nimport { get, set } from './helpers/perDeviceSetting';\n\nexport default function fixInvalidThemeSetting() {\n // get array of valid values without duplicate entries\n let validValues = Array.from(new Set(Object.values(Themes)));\n\n const Theme = get();\n\n if (isNaN(Theme)) {\n resetTheme('Theme is not a valid integer! Resetting...');\n } else if (!validValues.includes(Theme)) {\n // theme out of bounds\n resetTheme(`Theme is out of bounds! Resetting...`);\n }\n}\n\nfunction resetTheme(reason) {\n console.warn(reason);\n\n set(Themes.DEFAULT());\n}\n","import app from 'flarum/common/app';\nimport Themes from '../common/Themes';\nimport { get } from './helpers/perDeviceSetting';\n\nexport default function getTheme() {\n const user = app.session.user;\n\n const IsUsingPerDeviceSettings = !user || !!user.preferences().fofNightMode_perDevice;\n const SelectedTheme = user && user.preferences().fofNightMode;\n\n let value;\n\n if (IsUsingPerDeviceSettings) {\n // fetch through LS is per device enabled\n value = get();\n } else {\n if (typeof SelectedTheme === 'number' && SelectedTheme !== -1) {\n // use user prefs\n value = SelectedTheme;\n }\n }\n\n return typeof value === 'number' ? value : Themes.DEFAULT();\n}\n","import app from 'flarum/common/app';\n\nimport { extend } from 'flarum/common/extend';\nimport Page from 'flarum/common/components/Page';\n\nimport Themes from './Themes';\nimport fixInvalidThemeSetting from '../forum/fixInvalidThemeSetting';\nimport getTheme from '../forum/getTheme';\n\nexport default () => {\n extend(Page.prototype, 'oninit', setTheme);\n\n // Register setTheme() as the handler for 'prefers-color-scheme' media property\n // change. This allows to make sure the 'fofnightmodechange' event is dispatched\n // when this property changes, and that the correct stylesheets are loaded.\n const prefersColorSchemeDark = window.matchMedia('(prefers-color-scheme: dark)');\n prefersColorSchemeDark.addEventListener('change', setTheme);\n};\n\nexport function setTheme() {\n const { user } = app.session;\n\n const PerDevice = app.session.user?.preferences().fofNightMode_perDevice;\n\n if (!user || PerDevice) {\n fixInvalidThemeSetting();\n }\n\n if (PerDevice) {\n fixInvalidThemeSetting();\n }\n\n const CurrentTheme = getTheme();\n\n setThemeFromID(CurrentTheme);\n}\n\nexport function getUrls() {\n return {\n day: app.data['fof-nightmode.assets.day'],\n night: app.data['fof-nightmode.assets.night'],\n };\n}\n\nexport function setThemeFromID(theme) {\n if (theme === Themes.DARK) {\n setStyle('night');\n } else if (theme === Themes.LIGHT) {\n setStyle('day');\n } else {\n const preferDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n setStyle(preferDark ? 'night' : 'day');\n }\n}\n\nexport function setStyle(type) {\n const light = document.querySelector('link.nightmode-light[rel=stylesheet]');\n const dark = document.querySelector('link.nightmode-dark[rel=stylesheet]');\n\n bothStyleSheets: if (light && dark) {\n if (getTheme() === Themes.AUTO) break bothStyleSheets;\n\n let newLink = document.createElement('link');\n\n // onload on link tags not supported in all browsers\n // so we should check it is present in the user's\n // current browser\n if ('onload' in newLink) {\n // if it is, only remove the old link tags after the new\n // one has finished loading (prevents flash of unstyled\n // content)\n newLink.onload = function () {\n light.remove();\n dark.remove();\n };\n } else {\n // if it isn't, just remove the old link tags immediately\n light.remove();\n dark.remove();\n }\n\n newLink.rel = 'stylesheet';\n newLink.className = 'nightmode';\n newLink.href = getUrls()[type];\n\n document.head.append(newLink);\n } else {\n const el = light || dark || document.querySelector('link.nightmode[rel=stylesheet]');\n\n const url = getUrls()[type];\n\n if (url !== el.href) {\n el.href = url;\n el.className = 'nightmode';\n }\n }\n\n const colorScheme = document.querySelector('meta[name=\"color-scheme\"]');\n\n if (colorScheme) {\n colorScheme.content = type === 'night' ? 'dark' : 'light';\n }\n\n // Dispatch a 'fofnightmodechange' event with 'day' or 'night' as detail.\n // This allows other extensions to integrate with this one.\n const event = new CustomEvent('fofnightmodechange', { detail: type });\n document.dispatchEvent(event);\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SessionDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/HeaderSecondary'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","import app from 'flarum/forum/app';\nimport Themes from '../../common/Themes';\nimport { setTheme } from '../../common/setSelectedTheme';\nimport getTheme from '../getTheme';\nimport * as perDevice from '../helpers/perDeviceSetting';\n\nexport function getIsLight(theme) {\n return theme === Themes.LIGHT || (theme === Themes.AUTO && !window.matchMedia('(prefers-color-scheme: dark)').matches);\n}\n\nfunction toggleThrough(current) {\n if (current === Themes.AUTO) {\n return Themes.LIGHT;\n }\n\n if (current === Themes.LIGHT) {\n return Themes.DARK;\n }\n\n return Themes.AUTO;\n}\n\nexport function switchTheme() {\n const theme = getTheme();\n const isLight = getIsLight(theme);\n const user = app.session.user;\n\n if (user) {\n const val = isLight ? Themes.DARK : Themes.LIGHT;\n\n if (!!user.preferences().fofNightMode_perDevice) {\n perDevice.set(val);\n setTheme();\n return;\n }\n\n user\n .savePreferences({\n fofNightMode: val,\n })\n .then(() => {\n // need to force-update selected theme (as it's only set\n // on a page load and redraw doesn't count as a page load)\n setTheme();\n });\n } else {\n const newTheme = toggleThrough(theme);\n\n perDevice.set(newTheme);\n setTheme();\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\n\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport SessionDropdown from 'flarum/forum/components/SessionDropdown';\nimport HeaderSecondary from 'flarum/forum/components/HeaderSecondary';\nimport Button from 'flarum/common/components/Button';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Select from 'flarum/common/components/Select';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport Switch from 'flarum/common/components/Switch';\n\nimport { setTheme } from '../common/setSelectedTheme';\nimport fixInvalidThemeSetting from './fixInvalidThemeSetting';\nimport * as perDevice from './helpers/perDeviceSetting';\nimport getTheme from './getTheme';\nimport Themes from '../common/Themes';\nimport { switchTheme, getIsLight } from './helpers/switchTheme';\n\n// custom function for translations makes it a lot cleaner\nconst trans = (key) => app.translator.trans(`fof-nightmode.forum.user.settings.${key}`);\n\nexport default function () {\n extend(SettingsPage.prototype, 'settingsItems', function (items) {\n const { user } = app.session;\n\n const PerDevice = !!user.preferences().fofNightMode_perDevice;\n\n if (PerDevice) {\n fixInvalidThemeSetting();\n }\n\n const doesNotSupportAuto = !window.matchMedia('not all and (prefers-color-scheme), (prefers-color-scheme)').matches;\n\n let currentTheme = getTheme();\n\n const options = { 0: trans('options.auto'), 1: trans('options.day'), 2: trans('options.night') };\n\n if (doesNotSupportAuto) {\n delete options['0'];\n\n if (currentTheme === Themes.AUTO) {\n currentTheme = app.forum.attribute('fofNightMode_autoUnsupportedFallback');\n }\n }\n\n items.add(\n 'fof-nightmode',\n FieldSet.component(\n {\n label: trans('heading'),\n className: 'Settings-theme',\n },\n [\n <p className=\"description\">{trans('description')}</p>,\n <p className=\"description\">{trans('description2')}</p>,\n doesNotSupportAuto ? <p class=\"description NightMode-autoUnsupported\">{trans('auto_unsupported')}</p> : null,\n Switch.component(\n {\n className: 'Settings-theme--per_device_cb',\n state: PerDevice,\n onchange: (checked) => {\n if (checked) {\n // save current theme as this device's default\n perDevice.set(currentTheme);\n } else {\n perDevice.remove();\n }\n\n user\n .savePreferences({\n fofNightMode_perDevice: checked,\n })\n .then(() => {\n // need to force-update selected theme (as it's only set\n // on a page load and redraw doesn't count as a page load)\n setTheme();\n });\n },\n },\n trans('device_specific_setting_checkbox')\n ),\n Select.component({\n value: currentTheme,\n className: 'Settings-theme--input',\n onchange: (e) => {\n if (PerDevice) {\n perDevice.set(e);\n\n setTheme();\n return;\n }\n\n user\n .savePreferences({\n fofNightMode: e,\n })\n .then(() => {\n m.redraw();\n\n // need to force-update selected theme (as it's only set\n // on a page load and redraw doesn't count as a apge load)\n setTheme();\n });\n },\n options,\n }),\n <p className=\"Settings-theme--selection_description\">\n {currentTheme === Themes.AUTO\n ? trans('option_descriptions.auto')\n : currentTheme === Themes.LIGHT\n ? trans('option_descriptions.day')\n : currentTheme === Themes.DARK\n ? trans('option_descriptions.night')\n : // prevents nasty paragraph switching\n LoadingIndicator.component()}\n </p>,\n ]\n )\n );\n });\n\n extend(HeaderSecondary.prototype, 'items', function (items) {\n if (app.session.user && !app.forum.attribute('fofNightMode.showThemeToggleOnHeaderAlways')) return;\n\n const theme = getTheme();\n const isLight = getIsLight(theme);\n\n items.add(\n 'nightmode',\n <Button\n className=\"Button Button--flat\"\n onclick={() => {\n // const newTheme = toggleThrough(theme);\n\n // perDevice.set(newTheme);\n // setTheme();\n switchTheme();\n }}\n icon={theme === Themes.AUTO ? 'fas fa-adjust' : `far fa-${isLight ? 'sun' : 'moon'}`}\n >\n {app.translator.trans('fof-nightmode.forum.header.nightmode_button')}\n </Button>,\n 15\n );\n });\n\n extend(SessionDropdown.prototype, 'items', function (items) {\n if (!app.session.user) return;\n\n const isLight = getIsLight(getTheme());\n\n // Add night mode link to session dropdown\n items.add(\n isLight ? 'nightmode' : 'daymode',\n Button.component(\n {\n icon: `far fa-${isLight ? 'moon' : 'sun'}`,\n onclick: () => {\n switchTheme();\n // const val = isLight ? Themes.DARK : Themes.LIGHT;\n\n // if (!!user.preferences().fofNightMode_perDevice) {\n // perDevice.set(val);\n // setTheme();\n // return;\n // }\n\n // user\n // .savePreferences({\n // fofNightMode: val,\n // })\n // .then(() => {\n // // need to force-update selected theme (as it's only set\n // // on a page load and redraw doesn't count as a apge load)\n // setTheme();\n // });\n },\n },\n app.translator.trans(`fof-nightmode.forum.${isLight ? 'night' : 'day'}`)\n ),\n -1\n );\n });\n}\n","import app from 'flarum/forum/app';\nimport addSettingsItems from './addSettingsItems';\nimport setSelectedTheme from '../common/setSelectedTheme';\n\nexport * as perDeviceSetting from './helpers/perDeviceSetting';\nexport * as switchTheme from './helpers/switchTheme';\nexport { default as getTheme } from './getTheme';\n\napp.initializers.add('fof-nightmode', () => {\n addSettingsItems();\n setSelectedTheme();\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/HeaderPrimary'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/mixin'];","import Model from 'flarum/common/Model';\nimport mixin from 'flarum/common/utils/mixin';\n\nexport default class Link extends mixin(Model, {\n title: Model.attribute('title'),\n icon: Model.attribute('icon'),\n type: Model.attribute('type'),\n url: Model.attribute('url'),\n position: Model.attribute('position'),\n isInternal: Model.attribute('isInternal'),\n isNewtab: Model.attribute('isNewtab'),\n useRelMe: Model.attribute('useRelMe'),\n isChild: Model.attribute('isChild'),\n parent: Model.hasOne('parent'),\n visibility: Model.attribute('visibility'),\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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Separator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","/* global m*/\n\nimport app from 'flarum/forum/app';\nimport Link from 'flarum/common/components/Link';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport icon from 'flarum/common/helpers/icon';\nimport Separator from 'flarum/common/components/Separator';\n\nimport classList from 'flarum/common/utils/classList';\n\nimport type { IButtonAttrs } from 'flarum/common/components/Button';\nimport type Mithril from 'mithril';\nimport Button from 'flarum/common/components/Button';\n\ninterface ILink {\n isInternal(): boolean;\n url(): string;\n title(): string;\n icon(): string;\n isNewtab(): boolean;\n useRelMe(): boolean;\n}\n\ninterface ILinkItemAttrs extends IButtonAttrs {\n link: ILink;\n className?: string;\n inDropdown?: boolean;\n isDropdownButton?: boolean;\n}\n\nexport default class LinkItem extends LinkButton {\n // Just definitions to satisfy TypeScript\n attrs!: ILinkItemAttrs;\n\n view(vnode: Mithril.Vnode<ILinkItemAttrs, never>): JSX.Element {\n if (this.isLabel) return this.labelView(vnode);\n\n return this.linkView(vnode);\n }\n\n labelView(vnode: Mithril.Vnode<ILinkItemAttrs, never>): JSX.Element {\n const link = this.attrs.link;\n\n const LinkLabelNode = this.attrs.inDropdown ? 'span' : Button;\n\n return (\n <>\n {this.attrs.inDropdown && <Separator />}\n <LinkLabelNode\n class={classList(this.class, 'LinksButton--label')}\n onclick={(e: MouseEvent) => {\n if (this.attrs.inDropdown) {\n // don't close dropdown when clicking label\n e.stopPropagation();\n }\n }}\n data-toggle={this.attrs.isDropdownButton ? 'dropdown' : undefined}\n >\n {this.icon}\n <span className=\"LinksButton-title\">{link.title()}</span>\n </LinkLabelNode>\n {this.attrs.inDropdown && <Separator />}\n </>\n );\n }\n\n linkView(vnode: Mithril.Vnode<ILinkItemAttrs, never>): JSX.Element {\n const link = this.attrs.link;\n\n const linkAttrs = {\n className: this.class,\n rel: this.rel,\n target: this.linkTarget,\n external: link.isNewtab() ? false : !link.isInternal(),\n href: this.linkHref,\n };\n\n return (\n <Link {...linkAttrs}>\n {this.icon}\n <span className=\"LinksButton-title\">{link.title()}</span>\n </Link>\n );\n }\n\n get isInternal(): boolean {\n const link = this.attrs.link;\n\n return link.isInternal() && !link.isNewtab();\n }\n\n get isLabel(): boolean {\n return this.attrs.link.url().length === 0;\n }\n\n get linkHref(): string {\n const link = this.attrs.link;\n const url = link.url();\n\n if (url.startsWith('/') && link.isInternal()) {\n return app.forum.attribute('baseUrl') + url;\n }\n\n return url;\n }\n\n get icon(): Mithril.Child | null {\n const link = this.attrs.link;\n const iconClass = link.icon();\n\n if (iconClass) {\n return icon(iconClass, { className: 'Button-icon LinksButton-icon' });\n }\n\n return null;\n }\n\n get rel(): string | undefined {\n // Prevent security risk on older browsers.\n // Modern browsers now have `noopener` by default and\n // require `opener` to enable `window.opener`.\n //\n // Learn more:\n // https://web.dev/external-anchors-use-rel-noopener\n\n return classList(this.attrs.link.isNewtab() && 'noopener noreferrer', this.attrs.link.useRelMe() && 'me') || undefined;\n }\n\n get class(): string {\n return classList('LinksButton', this.attrs.className || 'Button Button--link', {\n 'LinksButton--inDropdown': this.attrs.inDropdown,\n active: this.isLinkCurrentPage,\n });\n }\n\n get isLinkCurrentPage(): boolean {\n const link = this.attrs.link;\n\n if (!link.isInternal()) return false;\n\n const base = app.forum.attribute<string>('baseUrl');\n\n // Mithril returns the current path relative to the origin, which isn't necessarily the base forum URL\n const currentUrl = new URL(m.route.get() || '/', base);\n const currentPath = currentUrl.href.replace(base, '');\n\n // The link from `this.linkHref` should already be absolute, but we'll make sure\n const linkUrl = new URL(this.linkHref, base);\n const linkPath = linkUrl.href.replace(base, '');\n\n // The link is active if the current path starts with the link path.\n // Except if it's the base url, in which case only an exact match is considered active\n return currentPath.indexOf(linkPath) === 0 && (currentPath === '/' || linkPath !== '/');\n }\n\n get linkTarget(): string | undefined {\n const link = this.attrs.link;\n\n if (this.isInternal) return undefined;\n\n return link.isNewtab() ? '_blank' : undefined;\n }\n}\n","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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/SplitDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","export default function sortLinks(links) {\n return links.slice(0).sort((a, b) => {\n const aPos = a.position();\n const bPos = b.position();\n return aPos > bPos ? 1 : aPos < bPos ? -1 : 0;\n });\n}\n","import app from 'flarum/forum/app';\n\nimport SplitDropdown from 'flarum/common/components/SplitDropdown';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport icon from 'flarum/common/helpers/icon';\nimport classList from 'flarum/common/utils/classList';\n\nimport LinkItem from './LinkItem';\nimport sortLinks from '../../common/utils/sortLinks';\nexport default class LinkDropdown extends SplitDropdown {\n static initAttrs(attrs) {\n super.initAttrs(attrs);\n\n attrs.className += ' LinkDropdown';\n attrs.buttonClassName += ' Button--link';\n }\n\n view(vnode) {\n const children = this.items().toArray();\n\n return super.view({ ...vnode, children });\n }\n\n getButton(children) {\n // Make a copy of the attrs of the first child component. We will assign\n // these attrs to a new button, so that it has exactly the same behaviour as\n // the first child.\n const firstChild = this.getFirstChild(children);\n firstChild.attrs.className = classList(firstChild.attrs.className, 'SplitDropdown-button Button', this.attrs.buttonClassName);\n firstChild.attrs.isDropdownButton = true;\n\n return [\n firstChild,\n <button className={classList('Dropdown-toggle', 'Button', 'Button--icon', this.attrs.buttonClassName)} data-toggle=\"dropdown\">\n {icon('fas fa-caret-down', { className: 'Button-caret' })}\n </button>,\n ];\n }\n\n /**\n * Build an item list for the contents of the dropdown menu.\n *\n * @return {ItemList}\n */\n items() {\n const items = new ItemList();\n const parent = this.attrs.link;\n\n items.add(`link${parent.id()}`, LinkItem.component({ link: parent }));\n\n sortLinks(app.store.all('links'))\n .filter((link) => link.parent() === parent)\n .forEach((child) => {\n items.add(`link${parent.id()}-${child.id()}`, LinkItem.component({ link: child, inDropdown: true }));\n });\n\n return items;\n }\n}\n","import LinkDropdown from './LinkDropdown';\nimport LinkItem from './LinkItem';\n\nexport const components = {\n LinkDropdown,\n LinkItem,\n};\n","import sortLinks from './sortLinks';\n\nexport const utils = {\n sortLinks,\n};\n","import Link from './Link';\n\nexport const models = {\n Link,\n};\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport HeaderPrimary from 'flarum/common/components/HeaderPrimary';\n\nimport Link from '../common/models/Link';\nimport LinkItem from './components/LinkItem';\nimport LinkDropdown from './components/LinkDropdown';\nimport sortLinks from '../common/utils/sortLinks';\n\nexport * from './components';\nexport * from '../common/utils';\nexport * from '../common/models';\n\napp.initializers.add('fof-links', () => {\n app.store.models.links = Link;\n\n extend(HeaderPrimary.prototype, 'items', (items) => {\n const links = app.store.all('links').filter((link) => !link.isChild());\n const addLink = (parent) => {\n const hasChildren = app.store.all('links').some((link) => link.parent() == parent);\n\n items.add(`link${parent.id()}`, hasChildren ? LinkDropdown.component({ link: parent }) : LinkItem.component({ link: parent }));\n };\n\n sortLinks(links).map(addLink);\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Placeholder'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","import app from 'flarum/forum/app';\nimport avatar from 'flarum/common/helpers/avatar';\nimport Button from 'flarum/common/components/Button';\nimport username from 'flarum/common/helpers/username';\nimport UserPage from 'flarum/forum/components/UserPage';\nimport Stream from 'flarum/common/utils/Stream';\nimport Placeholder from 'flarum/common/components/Placeholder';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nexport default class ProfilePage extends UserPage {\n oninit(vdom) {\n super.oninit(vdom);\n\n this.loading = true;\n\n this.ignoredUsers = app.session.user.ignoredUsers();\n\n this.loadUser(app.session.user.username());\n\n this.loading = false;\n }\n\n content() {\n if (this.loading) {\n return (\n <div className=\"DiscussionList\">\n <LoadingIndicator />\n </div>\n );\n }\n\n if (this.ignoredUsers.length === 0) {\n return (\n <div className=\"DiscussionList\">\n <Placeholder text={app.translator.trans('fof-ignore-users.forum.profile_page.no_ignored')} />\n </div>\n );\n }\n\n return (\n <table className=\"NotificationGrid\">\n {this.ignoredUsers.map((user, i) => {\n var unignore = () => {\n if (confirm(app.translator.trans(`fof-ignore-users.forum.user_controls.unignore_confirmation`))) {\n user.save({ ignored: false });\n this.ignoredUsers.splice(i, 1);\n app.session.user.ignoredUsers = Stream(this.ignoredUsers);\n }\n };\n\n return (\n <tr>\n <td>\n <a href={app.route.user(user)} config={m.route}>\n <h3>\n {avatar(user, { className: 'ignorePage-avatar' })} {username(user)}\n </h3>\n </a>\n </td>\n <td className=\"ignorePage-button\">\n {Button.component(\n {\n icon: 'fas fa-comment',\n type: 'button',\n className: 'Button Button--warning',\n onclick: unignore.bind(user),\n },\n app.translator.trans('fof-ignore-users.forum.user_controls.unignore_button')\n )}\n </td>\n </tr>\n );\n })}\n </table>\n );\n }\n\n show(user) {\n this.user = app.session.user;\n\n m.redraw();\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\nimport ProfilePage from './components/ProfilePage';\n\nexport default [\n new Extend.Model(User).attribute<boolean>('ignored').hasMany<User>('ignoredUsers').attribute<boolean>('canBeIgnored'),\n\n new Extend.Routes().add('user.ignoredUsers', '/ignoredUsers', ProfilePage),\n];\n","import app from 'flarum/forum/app';\nimport addIgnoreUserControlButton from './addIgnoreUserControlButton';\nimport addHideIgnoredPost from './addHideIgnoredPost';\nimport addProfilePage from './addProfilePage';\nimport addIgnoredUserBadge from './addIgnoredUserBadge';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('fof-ignore-users', function () {\n addIgnoreUserControlButton();\n addHideIgnoredPost();\n addProfilePage();\n addIgnoredUserBadge();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\n\nexport default function () {\n extend(UserControls, 'userControls', function (items, user) {\n if (app.session.user === user || !app.session.user || !user.canBeIgnored()) {\n return;\n }\n\n function unignore() {\n if (confirm(app.translator.trans(`fof-ignore-users.forum.user_controls.unignore_confirmation`))) {\n this.save({ ignored: false });\n }\n }\n\n function ignore() {\n if (confirm(app.translator.trans(`fof-ignore-users.forum.user_controls.ignore_confirmation`))) {\n this.save({ ignored: true });\n }\n }\n\n if (user.ignored()) {\n items.add(\n 'unignore',\n <Button icon=\"fas fa-comment\" onclick={unignore.bind(user)}>\n {app.translator.trans('fof-ignore-users.forum.user_controls.unignore_button')}\n </Button>\n );\n } else {\n items.add(\n 'ignore',\n <Button icon=\"fas fa-comment-slash\" onclick={ignore.bind(user)}>\n {app.translator.trans('fof-ignore-users.forum.user_controls.ignore_button')}\n </Button>\n );\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport CommentPost from 'flarum/forum/components/CommentPost';\nimport Button from 'flarum/common/components/Button';\n\nexport default function () {\n extend(CommentPost.prototype, 'elementAttrs', function (elementAttrs) {\n const user = this.attrs.post.user();\n const ignored = user && user.ignored();\n if (ignored) {\n elementAttrs.className += ' Post--hidden';\n }\n return elementAttrs;\n });\n\n extend(CommentPost.prototype, 'headerItems', function (items) {\n const post = this.attrs.post;\n\n if (post.isHidden() || !(post.user() && post.user().ignored())) {\n return;\n }\n\n items.add(\n 'ignore-toggle',\n Button.component({\n className: 'Button Button--default Button--more',\n icon: 'fas fa-ellipsis-h',\n onclick: this.toggleContent.bind(this),\n })\n );\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport UserPage from 'flarum/forum/components/UserPage';\n\nexport default function () {\n extend(UserPage.prototype, 'navItems', function (items) {\n if (app.session.user && app.session.user === this.user)\n items.add(\n 'ignored-users',\n <LinkButton href={app.route('user.ignoredUsers')} icon=\"fas fa-user-slash\">\n {app.translator.trans('fof-ignore-users.forum.profile_link')}\n </LinkButton>\n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport User from 'flarum/common/models/User';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addSubscriptionBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n let badge;\n\n if (this.user() && this.user().ignored()) {\n badge = Badge.component({\n label: app.translator.trans('fof-ignore-users.forum.badge.discussion_label'),\n icon: 'fas fa-user-slash',\n type: 'ignored',\n });\n }\n\n if (badge) {\n badges.add('user-discussion-ignored', badge);\n }\n });\n\n extend(User.prototype, 'badges', function (badges) {\n let badge;\n\n if (this.ignored()) {\n badge = Badge.component({\n label: app.translator.trans('fof-ignore-users.forum.badge.user_label'),\n icon: 'fas fa-user-slash',\n type: 'ignored',\n });\n }\n\n if (badge) {\n badges.add('user-ignored', badge);\n }\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport Button from 'flarum/common/components/Button';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\n\nDiscussion.prototype.frontpage = Model.attribute('frontpage');\nDiscussion.prototype.front = Model.attribute('front');\n\nexport default function addFrontPage() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n let isFront = discussion.frontpage();\n\n if (discussion.front()) {\n items.add(\n 'frontpage',\n Button.component(\n {\n icon: 'fas fa-home',\n onclick: () => {\n isFront = !isFront;\n discussion.save({ frontpage: isFront });\n },\n },\n app.translator.trans(\n discussion.frontpage() ? 'core.forum.post_controls.pull_from_front_button' : 'core.forum.post_controls.push_to_front_button'\n )\n )\n );\n }\n });\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nDiscussion.prototype.frontpage = Model.attribute('frontpage');\n\nexport default function addStickyBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.frontpage()) {\n badges.add(\n 'frontpage',\n Badge.component({\n type: 'frontpage',\n label: app.translator.trans('core.forum.badge.frontpage_tooltip'),\n icon: 'fas fa-home',\n }),\n 10\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport addFrontSort from './addFrontSort';\nimport addFrontPage from './addFrontPage';\nimport addStickyBadge from './addStickyBadge';\n\napp.initializers.add('fof/frontpage', () => {\n addFrontSort();\n addFrontPage();\n addStickyBadge();\n});\n","import { extend } from 'flarum/common/extend';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\n\nexport default function () {\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (this.params.sort === 'front') {\n if (params.filter.q) {\n params.filter.q = (params.filter.q || '') + 'is:frontpage';\n } else {\n params.filter.frontpage = true;\n }\n }\n });\n\n extend(DiscussionListState.prototype, 'sortMap', function (map) {\n map.front = '-frontdate';\n });\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},D=\"en\",v={};v[D]=M;var p=function(t){return t instanceof _},S=function(t,e,n){var r;if(!t)return D;if(\"string\"==typeof t)v[t]&&(r=t),e&&(v[t]=e,r=t);else{var i=t.name;v[i]=t,r=i}return!n&&r&&(D=r),r||!n&&D},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var D=this.$locale().weekStart||0,v=(y<D?y+7:y)-D;return $(r?m-v:m+(6-v),M);case a:case d:return l(g+\"Hours\",0);case u:return l(g+\"Minutes\",1);case s:return l(g+\"Seconds\",2);case i:return l(g+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),$=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this;if(!this.isValid())return $;var n=t||\"YYYY-MM-DDTHH:mm:ssZ\",r=O.z(this),i=this.$locale(),s=this.$H,u=this.$m,a=this.$M,o=i.weekdays,f=i.months,h=function(t,r,i,s){return t&&(t[r]||t(e,n))||i[r].substr(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=i.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(i.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(i.weekdaysMin,this.$W,o,2),ddd:h(i.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:r};return n.replace(y,(function(t,e){return e||l[t]||r.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,D=O.m(this,M);return D=(l={},l[c]=D/12,l[f]=D,l[h]=D/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?D:O.a(D)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return v[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),b=_.prototype;return w.prototype=b,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){b[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=v[D],w.Ls=v,w.p={},w}));","module.exports = flarum.extensions['fof-byobu'];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/mixin'];","export default (data, map) => (Array.isArray(data) ? data.map(map).sort() : map(data));\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport mixin from 'flarum/common/utils/mixin';\nimport fillRelationship from '../utils/fillRelationship';\n\nexport default class Draft extends mixin(Model, {\n user: Model.hasOne('user'),\n content: Model.attribute('content'),\n title: Model.attribute('title'),\n scheduledValidationError: Model.attribute('scheduledValidationError'),\n relationships: Model.attribute('relationships'),\n extra: Model.attribute('extra'),\n scheduledFor: Model.attribute('scheduledFor', Model.transformDate),\n updatedAt: Model.attribute('updatedAt', Model.transformDate),\n\n loadedRelationships: null,\n\n type() {\n const relationships = this.loadRelationships();\n if (relationships.discussion) {\n return 'reply';\n } else if (\n flarum.extensions['fof-byobu'] &&\n flarum.extensions['fof-byobu'].discussions && // If private discussion composer is not exported, we can't support PM drafts.\n ('recipientGroups' in relationships || 'recipientUsers' in relationships)\n ) {\n return 'privateDiscussion';\n } else {\n return 'discussion';\n }\n },\n\n icon() {\n switch (this.type()) {\n case 'discussion':\n return 'fas fa-edit';\n case 'reply':\n return 'fas fa-reply';\n case 'privateDiscussion':\n const customIcon = app.forum.data.attributes['byobu.icon-badge'];\n return customIcon ? customIcon : 'fas fa-eye-slash';\n }\n },\n\n loadRelationships(force) {\n if (\n !force &&\n this.loadedRelationships &&\n (Object.keys(this.loadedRelationships).length > 0 ||\n (Object.keys(this.loadedRelationships).length === 0 && Object.keys(this.relationships).length === 0))\n ) {\n return this.loadedRelationships;\n }\n\n this.loadedRelationships = {};\n\n const relationships = this.relationships();\n\n if (relationships) {\n Object.keys(relationships).forEach((relationshipName) => {\n const relationship = relationships[relationshipName];\n\n if (!relationship || !relationship.data) return;\n\n this.loadedRelationships[relationshipName] = fillRelationship(relationship.data, (model) => app.store.getById(model.type, model.id));\n });\n }\n\n if ('recipientUsers' in this.loadedRelationships || 'recipientGroups' in this.loadedRelationships) {\n const recipients = new ItemList();\n\n (this.loadedRelationships['recipientUsers'] || []).forEach((user) => {\n if (user) recipients.add('users:' + user.id(), user);\n });\n (this.loadedRelationships['recipientGroups'] || []).forEach((group) => {\n if (group) recipients.add('groups:' + group.id(), group);\n });\n\n this.loadedRelationships['recipients'] = recipients;\n }\n\n return this.loadedRelationships;\n },\n\n compileData() {\n const data = {\n originalContent: this.content(),\n title: this.title(),\n user: app.session.user,\n confirmExit: app.translator.trans('fof-drafts.forum.composer.exit_alert'),\n draft: this,\n fields: Object.assign({}, this.loadRelationships(), this.extra()),\n };\n\n Object.assign(data, data.fields);\n\n return data;\n },\n}) {}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport avatar from 'flarum/common/helpers/avatar';\nimport icon from 'flarum/common/helpers/icon';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport { truncate } from 'flarum/common/utils/string';\nimport Button from 'flarum/common/components/Button';\nimport Tooltip from 'flarum/common/components/Tooltip';\nimport dayjs from 'dayjs';\n\nimport type Mithril from 'mithril';\nimport Draft from '../models/Draft';\nimport DraftsListState from '../states/DraftsListState';\n\nexport interface IAttrs {\n draft: Draft;\n state: DraftsListState;\n}\n\nexport default class DraftsListItem extends Component<IAttrs> {\n private canSchedule: boolean = app.forum.attribute<boolean>('canScheduleDrafts') && app.forum.attribute<boolean>('drafts.enableScheduledDrafts');\n\n oncreate(vnode: Mithril.Vnode) {\n super.oncreate(vnode);\n }\n\n view() {\n const { draft, state } = this.attrs;\n\n let scheduledDraftIcon = 'far fa-calendar-plus';\n if (draft.scheduledValidationError()) scheduledDraftIcon = 'far fa-calendar-times';\n else if (draft.scheduledFor()) scheduledDraftIcon = 'far fa-calendar-check';\n\n return (\n <li>\n <a onclick={state.showComposer.bind(state, draft)} className=\"Notification draft--item\">\n {/* Avatar */}\n {avatar(draft.user())}\n\n {/* Draft icon */}\n {icon(draft.icon(), { className: 'Notification-icon' })}\n\n {/* Draft title + last edited time */}\n <span class=\"Notification-title\">\n <span className=\"Notification-content\">\n {draft.scheduledFor() && (\n <Tooltip\n showOnFocus={false}\n text={app.translator.trans('fof-drafts.forum.dropdown.scheduled_icon_tooltip', {\n datetime: dayjs(draft.scheduledFor()).format(\n app.translator.trans('fof-drafts.forum.dropdown.scheduled_icon_tooltip_formatter')[0]\n ),\n })}\n >\n {icon('far fa-clock', { className: 'draft--scheduledIcon' })}\n </Tooltip>\n )}\n {draft.type() === 'reply' ? draft.loadRelationships().discussion.title() : draft.title()}\n </span>\n <span class=\"Notification-title-spring\" />\n {humanTime(draft.updatedAt())}\n </span>\n\n <div class=\"Notification-action\">\n {/* Delete draft icon */}\n <Tooltip showOnFocus={false} text={app.translator.trans('fof-drafts.forum.dropdown.delete_button')}>\n <Button\n data-container=\"body\"\n icon=\"fas fa-trash-alt\"\n className=\"Notification-action Button Button--link hasIcon draft--delete\"\n onclick={(e: MouseEvent) => {\n state.deleteDraft(draft);\n e.stopPropagation();\n }}\n />\n </Tooltip>\n\n {this.canSchedule ? (\n <Tooltip showOnFocus={false} text={app.translator.trans('fof-drafts.forum.dropdown.schedule_button')}>\n <Button\n data-container=\"body\"\n icon={scheduledDraftIcon}\n className=\"Notification-action Button Button--link hasIcon draft--schedule\"\n onclick={(e: MouseEvent) => {\n state.scheduleDraft(draft);\n e.stopPropagation();\n }}\n />\n </Tooltip>\n ) : null}\n </div>\n\n <div className=\"Notification-excerpt\">{truncate(draft.content(), 200)}</div>\n {draft.scheduledValidationError() ? <p className=\"scheduledValidationError\">{draft.scheduledValidationError()}</p> : ''}\n </a>\n </li>\n );\n }\n}\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Button from 'flarum/common/components/Button';\nimport DraftsListItem from './DraftsListItem';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nexport default class DraftsList extends Component {\n oncreate(vnode) {\n super.oncreate(vnode);\n\n $('.draft--delete').on('click tap', function (event) {\n event.stopPropagation();\n });\n }\n\n deleteAll() {\n if (!confirm(app.translator.trans('fof-drafts.forum.dropdown.delete_all_alert'))) return;\n\n app\n .request({\n method: 'DELETE',\n url: app.forum.attribute('apiUrl') + '/drafts/all',\n })\n .then(() => {\n app.store.data.drafts = [];\n m.redraw();\n });\n }\n\n view() {\n const drafts = app.store.all('drafts');\n const state = this.attrs.state;\n\n return (\n <div className=\"NotificationList DraftsList\">\n <div className=\"NotificationList-header\">\n <h4 className=\"App-titleControl App-titleControl--text\">{app.translator.trans('fof-drafts.forum.dropdown.title')}</h4>\n <div class=\"App-primaryControl\">\n <Tooltip showOnFocus={false} text={app.translator.trans('fof-drafts.forum.dropdown.delete_all_button')}>\n <Button\n data-container=\"body\"\n icon=\"fas fa-trash-alt\"\n className=\"Button Button--link Button--icon Alert-dismiss\"\n onclick={this.deleteAll.bind(this)}\n />\n </Tooltip>\n </div>\n </div>\n <div className=\"NotificationList-content\">\n <ul className=\"NotificationGroup-content\">\n {drafts.length\n ? drafts\n .sort((a, b) => b.updatedAt() - a.updatedAt())\n .map((draft) => {\n return <DraftsListItem draft={draft} state={state} />;\n })\n : null}\n\n {state.loading ? (\n <LoadingIndicator display=\"block\" />\n ) : (\n !drafts.length && <div className=\"NotificationList-empty\">{app.translator.trans('fof-drafts.forum.dropdown.empty_text')}</div>\n )}\n </ul>\n </div>\n </div>\n );\n }\n}\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport app from 'flarum/forum/app';\nimport Page from 'flarum/common/components/Page';\n\nimport DraftsList from './DraftsList';\n\nexport default class DraftsPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('drafts');\n\n app.drafts.load();\n\n this.bodyClass = 'App--drafts';\n }\n\n view() {\n return (\n <div className=\"DraftsPage\">\n <DraftsList state={app.drafts}></DraftsList>\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/HeaderSecondary'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/NotificationsDropdown'];","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport app from 'flarum/forum/app';\nimport NotificationsDropdown from 'flarum/common/components/NotificationsDropdown';\n\nimport DraftsList from './DraftsList';\n\nexport default class DraftsDropdown extends NotificationsDropdown {\n static initAttrs(attrs) {\n attrs.label = attrs.label || app.translator.trans('fof-drafts.forum.dropdown.tooltip');\n attrs.icon = attrs.icon || 'fas fa-edit';\n\n super.initAttrs(attrs);\n }\n\n getMenu() {\n return (\n <div className={'Dropdown-menu ' + this.attrs.menuClassName} onclick={this.menuClick.bind(this)}>\n {this.showing ? DraftsList.component({ state: this.attrs.state }) : ''}\n </div>\n );\n }\n\n goToRoute() {\n m.route.set(app.route('drafts'));\n }\n\n getUnreadCount() {\n if (app.cache.draftsLoaded) {\n return app.store.all('drafts').length;\n }\n\n return app.store.all('drafts').length + app.session.user.draftCount();\n }\n\n getNewCount() {\n return this.getUnreadCount();\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Composer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ReplyComposer'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/ComposerState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/forum/app';\nimport Alert from 'flarum/common/components/Alert';\nimport Button from 'flarum/common/components/Button';\nimport Modal from 'flarum/common/components/Modal';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\n\nconst CurrentDate = dayjs().format('YYYY-MM-DD');\nconst CurrentTime = dayjs().format('HH:mm');\n\nexport default class ScheduleDraftModal extends Modal {\n loading = false;\n\n date;\n time;\n\n previewFormatString;\n\n oninit(vnode) {\n super.oninit(vnode);\n\n this.date = this.isScheduled() ? dayjs(this.attrs.draft.scheduledFor()).format('YYYY-MM-DD') : CurrentDate;\n this.time = this.isScheduled() ? dayjs(this.attrs.draft.scheduledFor()).format('HH:mm') : CurrentTime;\n\n this.previewFormatString = app.translator.trans('fof-drafts.forum.schedule_draft_modal.schedule_time_preview_formatter')[0];\n }\n\n className() {\n return 'ScheduleDraftModal';\n }\n\n title() {\n return app.translator.trans('fof-drafts.forum.schedule_draft_modal.title');\n }\n\n content() {\n if (this.loading) {\n return <LoadingIndicator />;\n }\n\n return [\n this.attrs.draft.scheduledFor() ? (\n <div className=\"Modal-alert\">\n <Alert type=\"success\" dismissible={false}>\n {app.translator.trans('fof-drafts.forum.schedule_draft_modal.scheduled_text', {\n datetime: this.formattedDateTime(),\n })}\n </Alert>\n </div>\n ) : (\n ''\n ),\n this.attrs.draft.scheduledValidationError() ? (\n <div className=\"Modal-alert\">\n <Alert type=\"error\" dismissible={false}>\n {app.translator.trans('fof-drafts.forum.schedule_draft_modal.scheduled_error', {\n error: this.attrs.draft.scheduledValidationError(),\n })}\n </Alert>\n </div>\n ) : (\n ''\n ),\n\n <input style=\"display: none\"></input>,\n\n <div className=\"Modal-body\">\n <div className=\"Form Form--centered\">\n <p className=\"helpText\">{app.translator.trans('fof-drafts.forum.schedule_draft_modal.text')}</p>\n <div className=\"Form-group ScheduleDraftModal-timeDateGroup\">\n <input\n name=\"scheduledForDate\"\n className=\"FormControl\"\n type=\"date\"\n min={CurrentDate}\n value={this.date}\n onchange={(e) => (this.date = e.target.value)}\n />\n <input name=\"scheduledForTime\" className=\"FormControl\" type=\"time\" value={this.time} onchange={(e) => (this.time = e.target.value)} />\n </div>\n\n {/* Date time preview */}\n <div class=\"Form-group ScheduleDraftModal-datePreview\">\n {app.translator.trans('fof-drafts.forum.schedule_draft_modal.schedule_time_preview', {\n datetime: this.formattedDateTime(),\n })}\n </div>\n\n <div className=\"Form-group ScheduleDraftModal-submitButtons\">\n {/* Unschedule button */}\n {this.isScheduled() && (\n <Button\n className=\"ScheduleDraftModal-unscheduleBtn Button Button--block Button--danger\"\n loading={this.loading}\n onclick={this.unschedule.bind(this)}\n >\n {app.translator.trans('fof-drafts.forum.schedule_draft_modal.unschedule_button')}\n </Button>\n )}\n\n {/* Schedule/reschedule button */}\n <Button\n className=\"ScheduleDraftModal-scheduleBtn Button Button--block Button--primary\"\n type=\"submit\"\n loading={this.loading}\n disabled={!this.changed()}\n >\n {this.isScheduled()\n ? app.translator.trans('fof-drafts.forum.schedule_draft_modal.reschedule_button')\n : app.translator.trans('fof-drafts.forum.schedule_draft_modal.schedule_button')}\n </Button>\n </div>\n </div>\n </div>,\n ];\n }\n\n /**\n * Returns a Date object for currently entered values in the modal.\n */\n scheduledFor() {\n const date = new Date(`${this.date} ${this.time}`);\n\n return date || null;\n }\n\n /**\n * Whether the modal's details have been modified.\n */\n changed() {\n const getTimeOrNull = (date) => (date ? date.getTime() || null : null);\n\n return getTimeOrNull(this.scheduledFor()) !== getTimeOrNull(this.attrs.draft.scheduledFor());\n }\n\n isScheduled() {\n return !!this.attrs.draft.scheduledFor();\n }\n\n formattedDateTime() {\n const date = dayjs(this.scheduledFor());\n\n // if (!date) {\n // return app.translator.trans('fof-drafts.forum.schedule_draft_modal.schedule_time_preview_invalid');\n // }\n\n const formatted = date.format(this.previewFormatString);\n\n return formatted;\n }\n\n unschedule(e) {\n e.preventDefault();\n\n this.loading = true;\n\n // Save draft with no scheduled post time\n if (confirm(app.translator.trans('fof-drafts.forum.schedule_draft_modal.unschedule_warning'))) {\n this.attrs.draft\n .save({ scheduledFor: null, clearValidationError: true, scheduledValidationError: '' })\n .then(() => {\n this.success = true;\n this.hide.call(this);\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n this.attrs.draft\n .save({ scheduledFor: this.scheduledFor(), clearValidationError: true, scheduledValidationError: '' })\n .then(() => (this.success = true))\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n}\n","import app from 'flarum/forum/app';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\nimport ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport ScheduleDraftModal from '../components/ScheduleDraftModal';\n\nexport default class DraftsListState {\n constructor() {\n /**\n * Whether or not the flags are loading.\n *\n * @type {Boolean}\n */\n this.loading = false;\n\n this.cache = [];\n }\n\n deleteDraft(draft) {\n if (!window.confirm(app.translator.trans('fof-drafts.forum.dropdown.alert'))) return;\n\n this.loading = true;\n\n draft.delete().then(() => {\n if (app.composer.body && app.composer.draft && app.composer.draft.id() === draft.id() && !app.composer.changed()) {\n app.composer.hide();\n }\n\n this.loading = false;\n m.redraw();\n });\n }\n\n scheduleDraft(draft) {\n if (!app.forum.attribute('canScheduleDrafts') || !app.forum.attribute('drafts.enableScheduledDrafts')) return;\n\n app.modal.show(ScheduleDraftModal, { draft });\n }\n\n showComposer(draft) {\n if (this.loading) return;\n\n return new Promise((resolve) => {\n let componentClass;\n\n switch (draft.type()) {\n case 'privateDiscussion':\n componentClass = require('@fof-byobu').discussions['PrivateDiscussionComposer'];\n break;\n case 'reply':\n componentClass = ReplyComposer;\n break;\n default:\n componentClass = DiscussionComposer;\n }\n\n const data = draft.compileData();\n app.composer.load(componentClass, data);\n\n app.composer.show();\n\n Object.assign(app.composer.fields, data.fields);\n\n return resolve(app.composer);\n });\n }\n\n load() {\n if (app.cache.draftsLoaded) {\n return;\n }\n\n this.loading = true;\n m.redraw();\n\n app.store\n .find('drafts')\n .then(\n () => (app.cache.draftsLoaded = true),\n () => {}\n )\n .then(() => {\n this.loading = false;\n m.redraw();\n });\n }\n}\n","// Deep comparison function\nexport default function deepEqual(obj1, obj2) {\n if (obj1 === obj2) {\n return true;\n }\n if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 == null || obj2 == null) {\n return false;\n }\n let keys1 = Object.keys(obj1);\n let keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (let key of keys1) {\n if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n}\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport DraftsDropdown from './DraftsDropdown';\nimport DraftsList from './DraftsList';\nimport DraftsListItem from './DraftsListItem';\nimport DraftsPage from './DraftsPage';\nimport ScheduleDraftModal from './ScheduleDraftModal';\n\nexport const components = {\n DraftsDropdown: DraftsDropdown,\n DraftsList: DraftsList,\n DraftsListItem: DraftsListItem,\n DraftsPage: DraftsPage,\n ScheduleDraftModal: ScheduleDraftModal,\n};\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport Draft from './Draft';\n\nexport const models = {\n Draft: Draft,\n};\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2021 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport DraftsListState from './DraftsListState';\n\nexport const states = {\n DraftsListState: DraftsListState,\n};\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\nimport fillRelationship from './fillRelationship';\n\nexport const utils = {\n fillRelationship: fillRelationship,\n};\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport { extend, override } from 'flarum/common/extend';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport Stream from 'flarum/common/utils/Stream';\nimport Draft from './models/Draft';\nimport DraftsPage from './components/DraftsPage';\nimport addDraftsDropdown from './addDraftsDropdown';\nimport addPreferences from './addPreferences';\nimport Composer from 'flarum/forum/components/Composer';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\nimport ReplyComposer from 'flarum/forum/components/ReplyComposer';\nimport Button from 'flarum/common/components/Button';\nimport ComposerState from 'flarum/forum/states/ComposerState';\nimport fillRelationship from './utils/fillRelationship';\nimport DraftsListState from './states/DraftsListState';\nimport app from 'flarum/forum/app';\nimport deepEqual from './utils/deepEqual';\n\nexport * from './components';\nexport * from './models';\nexport * from './states';\nexport * from './utils';\n\napp.initializers.add('fof-drafts', () => {\n app.store.models.drafts = Draft;\n User.prototype.drafts = Model.hasMany('drafts');\n User.prototype.draftCount = Model.attribute('draftCount');\n\n app.routes.drafts = { path: '/drafts', component: DraftsPage };\n\n app.drafts = new DraftsListState(app);\n\n ComposerState.prototype['changed'] = function () {\n if (!this.body || !this.data) return false;\n\n const data = this.data();\n const draft = this.draft;\n\n const fields = Object.keys(data).filter((element) => element !== 'relationships');\n\n if (!fields) {\n return false;\n }\n\n // If there's no content, we don't want to save this draft\n // regardless of whether other attributes have changed.\n if (!this.fields.content()) {\n return false;\n }\n\n const getData = (field) => (field === 'content' ? this.fields.content() : data[field]) || '';\n\n for (const field of fields) {\n const fieldValue = getData(field);\n const draftFieldValue = draft && draft.data.attributes[field];\n\n if ((!draft && fieldValue) || (draft && !deepEqual(fieldValue, draftFieldValue))) {\n return true;\n }\n }\n\n if (!data.relationships && !draft.relationships()) {\n return false;\n }\n\n const relationships = Object.keys(data.relationships);\n\n const equalRelationships = (data, draft, relationship) => {\n if (\n (!data.relationships[relationship] || !data.relationships[relationship].length) &&\n (!(relationship in draft.relationships()) || !draft.relationships()[relationship].data?.length)\n ) {\n return true;\n } else if (\n !(relationship in draft.relationships()) ||\n data.relationships[relationship].length !== draft.relationships()[relationship].data?.length\n ) {\n return false;\n }\n\n const getId = (element) => (typeof element.id == 'function' ? element.id() : element.id);\n\n const dataIds = fillRelationship(data.relationships[relationship], getId);\n const draftIds = fillRelationship(draft.relationships()[relationship].data, getId);\n\n return !dataIds.some((id, i) => id !== draftIds[i]);\n };\n\n for (const relationship of relationships) {\n if (!draft) {\n if (data.relationships[relationship]) {\n return true;\n }\n } else {\n if (!equalRelationships(data, draft, relationship)) {\n return true;\n }\n }\n }\n\n return false;\n };\n\n ComposerState.prototype['saveDraft'] = function () {\n this.saving = true;\n m.redraw();\n\n const afterSave = () => {\n this.saving = false;\n this.justSaved = true;\n setTimeout(() => {\n this.justSaved = false;\n m.redraw();\n }, 300);\n m.redraw();\n };\n\n const draft = this.draft;\n\n if (draft && draft.id() && !draft.exists) {\n // Draft was deleted before autosave, no need to save.\n return;\n }\n\n if (draft) {\n delete draft.data.attributes.relationships;\n\n draft.save(Object.assign(draft.data.attributes, this.data())).then(() => afterSave());\n } else {\n app.store\n .createRecord('drafts')\n .save(this.data())\n .then((draft) => {\n draft.loadRelationships(true);\n this.draft = draft;\n afterSave();\n });\n }\n };\n\n extend(Composer.prototype, 'controlItems', function (items) {\n if (\n !(this.state.bodyMatches(DiscussionComposer) || this.state.bodyMatches(ReplyComposer)) ||\n !app.forum.attribute('canSaveDrafts') ||\n this.state.position === 'minimized'\n )\n return;\n\n const classNames = ['Button', 'Button--icon', 'Button--link'];\n\n if (this.state.saving) {\n classNames.push('saving');\n }\n\n if (this.state.justSaved) {\n classNames.push('justSaved');\n }\n\n items.add(\n 'save-draft',\n Button.component({\n icon: this.state.justSaved ? 'fas fa-check' : this.state.saving ? 'fas fa-spinner fa-spin' : 'fas fa-save',\n className: classNames.join(' '),\n itemClassName: 'App-backControl',\n title: app.translator.trans('fof-drafts.forum.composer.title'),\n disabled: this.state.saving || this.state.justSaved || this.loading,\n onclick: this.state.saveDraft.bind(this.state),\n }),\n 20\n );\n });\n\n extend(ComposerState.prototype, 'load', function () {\n if (!app.forum.attribute('canSaveDrafts')) return;\n\n if (app.session.user.preferences().draftAutosaveEnable && (this.bodyMatches(DiscussionComposer) || this.bodyMatches(ReplyComposer))) {\n this.autosaveInterval = setInterval(() => {\n if (this.changed() && !this.saving && !this.loading) {\n this.saveDraft();\n }\n }, 1000 * app.session.user.preferences().draftAutosaveInterval);\n }\n });\n\n extend(ComposerState.prototype, 'clear', function () {\n this.draft = null;\n if (this.autosaveInterval) clearInterval(this.autosaveInterval);\n });\n\n override(ComposerState.prototype, 'preventExit', function (original) {\n if (this.body && this.body.componentClass && this.draft) {\n this.body.attrs.confirmExit = app.translator.trans('fof-drafts.forum.composer.exit_alert');\n }\n\n let prevented = false;\n if (this.changed()) {\n prevented = original();\n }\n\n if (prevented) return prevented;\n\n if (!this.body || !this.body.componentClass) return;\n\n const draft = this.draft;\n if (draft && !draft.title() && !draft.content() && confirm(app.translator.trans('fof-drafts.forum.composer.discard_empty_draft_alert'))) {\n draft.delete();\n }\n\n return prevented;\n });\n\n function initComposerBody() {\n Object.keys(this.attrs).forEach((key) => {\n if (!['originalContent', 'title', 'user'].includes(key)) {\n this[key] = this.attrs[key];\n } else if (key === 'title') {\n this.title = Stream(this.attrs.title);\n }\n });\n\n if (this.data) {\n this.composer.data = this.data.bind(this);\n }\n\n if (this.attrs.draft) {\n this.composer.draft = this.attrs.draft;\n }\n }\n\n extend(DiscussionComposer.prototype, 'oninit', initComposerBody);\n extend(ReplyComposer.prototype, 'oninit', initComposerBody);\n\n function deleteDraftsOnSubmit() {\n if (this.composer.draft) {\n this.composer.draft.delete();\n }\n }\n\n extend(DiscussionComposer.prototype, 'onsubmit', deleteDraftsOnSubmit);\n extend(ReplyComposer.prototype, 'onsubmit', deleteDraftsOnSubmit);\n\n if (app.initializers.has('fof-byobu')) {\n const PrivateDiscussionComposer = flarum.extensions['fof-byobu'].discussions.PrivateDiscussionComposer;\n extend(PrivateDiscussionComposer.prototype, 'onsubmit', deleteDraftsOnSubmit);\n }\n\n addDraftsDropdown();\n addPreferences();\n});\n","/*\n *\n * This file is part of fof/drafts.\n *\n * Copyright (c) 2019 FriendsOfFlarum.\n *\n * For the full copyright and license information, please view the LICENSE.md\n * file that was distributed with this source code.\n *\n */\n\nimport { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport HeaderSecondary from 'flarum/common/components/HeaderSecondary';\nimport DraftsDropdown from './components/DraftsDropdown';\n\nexport default function () {\n extend(HeaderSecondary.prototype, 'items', function (items) {\n if (!app.session.user || !app.forum.attribute('canSaveDrafts')) return;\n\n items.add('Drafts', <DraftsDropdown state={app.drafts} />, 20);\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend, override } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport SettingsPage from 'flarum/common/components/SettingsPage';\nimport Switch from 'flarum/common/components/Switch';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport Stream from 'flarum/common/utils/Stream';\n\nexport default function () {\n extend(SettingsPage.prototype, 'oninit', function () {\n this.draftAutosaveInterval = Stream(this.user.preferences().draftAutosaveInterval);\n });\n\n extend(SettingsPage.prototype, 'settingsItems', function (items) {\n if (app.forum.data.attributes.canSaveDrafts) {\n items.add(\n 'drafts',\n FieldSet.component(\n {\n label: app.translator.trans('fof-drafts.forum.user.settings.drafts_heading'),\n className: 'Settings-drafts',\n },\n this.draftsItems().toArray()\n )\n );\n }\n });\n\n SettingsPage.prototype['draftsItems'] = function () {\n const items = new ItemList();\n\n items.add(\n 'draft-autosave-enable',\n Switch.component(\n {\n state: this.user.preferences().draftAutosaveEnable,\n onchange: (value) => {\n this.draftAutosaveEnableLoading = true;\n\n this.user.savePreferences({ draftAutosaveEnable: value }).then(() => {\n this.draftAutosaveEnableLoading = false;\n m.redraw();\n });\n },\n loading: this.draftAutosaveEnableLoading,\n },\n app.translator.trans('fof-drafts.forum.user.settings.draft_autosave_enable')\n )\n );\n\n items.add(\n 'draft-autosave-interval',\n this.user.preferences().draftAutosaveEnable ? (\n <label>\n <p>{app.translator.trans('fof-drafts.forum.user.settings.draft_autosave_interval_label')}</p>\n <input className=\"FormControl\" type=\"number\" min=\"0\" bidi={this.draftAutosaveInterval} />\n {Button.component(\n {\n className: 'Button Button--primary',\n onclick: () => {\n const isInt = (str) => str == Math.round(str);\n if (this.draftAutosaveInterval() < 0 || !isInt(this.draftAutosaveInterval())) {\n this.draftAutosaveIntervalInvalid = true;\n this.draftAutosaveInterval(this.user.preferences().draftAutosaveInterval);\n m.redraw();\n } else {\n this.draftAutosaveIntervalInvalid = false;\n this.user.savePreferences({ draftAutosaveInterval: this.draftAutosaveInterval() }).then(() => {\n m.redraw();\n });\n }\n },\n },\n app.translator.trans('fof-drafts.forum.user.settings.draft_autosave_interval_button')\n )}\n {this.draftAutosaveIntervalInvalid ? (\n <p class=\"invalidInterval\">\n <small>{app.translator.trans('fof-drafts.forum.user.settings.draft_autosave_interval_invalid')}</small>\n </p>\n ) : (\n ''\n )}\n </label>\n ) : (\n <p></p>\n )\n );\n\n return items;\n };\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = global.Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n try {\n return doc.defaultView && doc.defaultView.frameElement || null;\n } catch (e) {\n // Ignore the error.\n return null;\n }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n var doc = startDoc;\n var frame = getFrameElement(doc);\n while (frame) {\n doc = frame.ownerDocument;\n frame = getFrameElement(doc);\n }\n return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = ensureDOMRect(entry.rootBounds);\n this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (\n options.root &&\n options.root.nodeType != 1 &&\n options.root.nodeType != 9\n ) {\n throw new Error('root must be a Document or Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n\n /** @private @const {!Array<!Document>} */\n this._monitoringDocuments = [];\n /** @private @const {!Array<function()>} */\n this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n if (!crossOriginUpdater) {\n /**\n * @param {DOMRect|ClientRect} boundingClientRect\n * @param {DOMRect|ClientRect} intersectionRect\n */\n crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n if (!boundingClientRect || !intersectionRect) {\n crossOriginRect = getEmptyRect();\n } else {\n crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n }\n registry.forEach(function(observer) {\n observer._checkForIntersections();\n });\n };\n }\n return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n crossOriginUpdater = null;\n crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections(target.ownerDocument);\n this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n return item.element != target;\n });\n this._unmonitorIntersections(target.ownerDocument);\n if (this._observationTargets.length == 0) {\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorAllIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array<Object>} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n var win = doc.defaultView;\n if (!win) {\n // Already destroyed.\n return;\n }\n if (this._monitoringDocuments.indexOf(doc) != -1) {\n // Already monitoring.\n return;\n }\n\n // Private state for monitoring.\n var callback = this._checkForIntersections;\n var monitoringInterval = null;\n var domObserver = null;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n } else {\n addEvent(win, 'resize', callback, true);\n addEvent(doc, 'scroll', callback, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n domObserver = new win.MutationObserver(callback);\n domObserver.observe(doc, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n\n this._monitoringDocuments.push(doc);\n this._monitoringUnsubscribes.push(function() {\n // Get the window object again. When a friendly iframe is destroyed, it\n // will be null.\n var win = doc.defaultView;\n\n if (win) {\n if (monitoringInterval) {\n win.clearInterval(monitoringInterval);\n }\n removeEvent(win, 'resize', callback, true);\n }\n\n removeEvent(doc, 'scroll', callback, true);\n if (domObserver) {\n domObserver.disconnect();\n }\n });\n\n // Also monitor the parent.\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._monitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n var index = this._monitoringDocuments.indexOf(doc);\n if (index == -1) {\n return;\n }\n\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n\n // Check if any dependent targets are still remaining.\n var hasDependentTargets =\n this._observationTargets.some(function(item) {\n var itemDoc = item.element.ownerDocument;\n // Target is in this context.\n if (itemDoc == doc) {\n return true;\n }\n // Target is nested in this context.\n while (itemDoc && itemDoc != rootDoc) {\n var frame = getFrameElement(itemDoc);\n itemDoc = frame && frame.ownerDocument;\n if (itemDoc == doc) {\n return true;\n }\n }\n return false;\n });\n if (hasDependentTargets) {\n return;\n }\n\n // Unsubscribe.\n var unsubscribe = this._monitoringUnsubscribes[index];\n this._monitoringDocuments.splice(index, 1);\n this._monitoringUnsubscribes.splice(index, 1);\n unsubscribe();\n\n // Also unmonitor the parent.\n if (doc != rootDoc) {\n var frame = getFrameElement(doc);\n if (frame) {\n this._unmonitorIntersections(frame.ownerDocument);\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n var unsubscribes = this._monitoringUnsubscribes.slice(0);\n this._monitoringDocuments.length = 0;\n this._monitoringUnsubscribes.length = 0;\n for (var i = 0; i < unsubscribes.length; i++) {\n unsubscribes[i]();\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n if (!this.root && crossOriginUpdater && !crossOriginRect) {\n // Cross origin monitoring, but no initial data available yet.\n return;\n }\n\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n var rootBounds = null;\n if (!this._rootContainsTarget(target)) {\n rootBounds = getEmptyRect();\n } else if (!crossOriginUpdater || this.root) {\n rootBounds = rootRect;\n }\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootBounds,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, targetRect, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot && parent) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return null;\n\n if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n atRoot = true;\n if (parent == this.root || parent == document) {\n if (crossOriginUpdater && !this.root) {\n if (!crossOriginRect ||\n crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n // A 0-size cross-origin intersection means no-intersection.\n parent = null;\n parentRect = null;\n intersectionRect = null;\n } else {\n parentRect = crossOriginRect;\n }\n } else {\n parentRect = rootRect;\n }\n } else {\n // Check if there's a frame that can be navigated to.\n var frame = getParentNode(parent);\n var frameRect = frame && getBoundingClientRect(frame);\n var frameIntersect =\n frame &&\n this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n if (frameRect && frameIntersect) {\n parent = frame;\n parentRect = convertFromParentRect(frameRect, frameIntersect);\n } else {\n parent = null;\n intersectionRect = null;\n }\n }\n } else {\n // If the element has a non-visible overflow, and it's not the <body>\n // or <html> element, update the intersection rect.\n // Note: <body> and <html> cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n var doc = parent.ownerDocument;\n if (parent != doc.body &&\n parent != doc.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n }\n if (!intersectionRect) break;\n parent = parent && getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root && !isDoc(this.root)) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use <html>/<body> instead of window since scroll bars affect size.\n var doc = isDoc(this.root) ? this.root : document;\n var html = doc.documentElement;\n var body = doc.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n var rootDoc =\n (this.root && (this.root.ownerDocument || this.root)) || document;\n return (\n containsDeep(rootDoc, target) &&\n (!this.root || rootDoc == target.ownerDocument)\n );\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n * intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n // A `DOMRect` object has `x` and `y` fields.\n if (!rect || 'x' in rect) {\n return rect;\n }\n // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n // for internally calculated Rect objects. For the purposes of\n // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n // for these fields.\n return {\n top: rect.top,\n y: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n right: rect.right,\n width: rect.width,\n height: rect.height\n };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n var top = parentIntersectionRect.top - parentBoundingRect.top;\n var left = parentIntersectionRect.left - parentBoundingRect.left;\n return {\n top: top,\n left: left,\n height: parentIntersectionRect.height,\n width: parentIntersectionRect.width,\n bottom: top + parentIntersectionRect.height,\n right: left + parentIntersectionRect.width\n };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n // If this node is a document node, look for the embedding frame.\n return getFrameElement(node);\n }\n\n // If the parent has element that is assigned through shadow root slot\n if (parent && parent.assignedSlot) {\n parent = parent.assignedSlot.parentNode\n }\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n\n return parent;\n}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nrequire('./shim')();\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bind/callBound');\nvar toObject = Object;\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tvar getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tsyms = getSymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif ($propIsEnumerable(source, key)) {\n\t\t\t\t\t$push(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif ($propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","import Component from 'flarum/common/Component';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport classList from 'flarum/common/utils/classList';\n\nimport 'object.assign/auto';\nimport 'intersection-observer';\n\nconst loadedSet = new Set();\n\nexport default class DiscussionThumbnail extends Component {\n view() {\n const attrs = { ...this.attrs.elementAttrs };\n const loaded = loadedSet.has(this.attrs.src);\n\n if (!attrs.style) attrs.style = {};\n\n attrs.style.position = 'relative';\n\n if (!loaded) {\n attrs.style.opacity = '0';\n\n attrs.oncreate = this.configImage.bind(this);\n attrs.onload = this.onLoad.bind(this);\n }\n\n attrs[loaded ? 'src' : 'data-src'] = this.attrs.src;\n\n return (\n <div className={classList(attrs.className, 'DiscussionListItem-thumbnail')}>\n {!loaded && <LoadingIndicator />}\n <img {...attrs} />\n </div>\n );\n }\n\n configImage(vnode) {\n const observer = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n let lazyImage = entry.target;\n lazyImage.src = lazyImage.dataset.src;\n observer.unobserve(lazyImage);\n }\n });\n });\n\n observer.observe(vnode.dom);\n }\n\n onLoad(evt) {\n const img = evt.target;\n\n loadedSet.add(this.attrs.src);\n\n img.style.opacity = 1;\n\n this.$('.LoadingIndicator-container').remove();\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import get from 'lodash/get';\n\nimport { extend } from 'flarum/common/extend';\nimport Model from 'flarum/common/Model';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nimport DiscussionThumbnail from './components/DiscussionThumbnail';\n\nconst find = (obj, clazz) => obj && obj.children && obj.children.filter((e) => get(e, 'attrs.className', '').indexOf(clazz) !== -1)[0];\n\napp.initializers.add('fof/discussion-thumbnail', () => {\n Discussion.prototype.customThumbnail = Model.attribute('customThumbnail');\n\n extend(DiscussionListItem.prototype, 'view', function (vdom) {\n const image = this.attrs.discussion.customThumbnail();\n\n if (!image) return;\n\n const content = find(vdom, 'DiscussionListItem-content');\n\n if (!content || !content.children) return;\n\n const tooltip = content.children.find((e) => e?.tag === Tooltip);\n const author = find(tooltip, 'DiscussionListItem-author');\n const avatar = find(author, 'Avatar');\n\n if (!avatar) return;\n\n delete avatar.attrs.src;\n\n author.children[author.children.indexOf(avatar)] = <DiscussionThumbnail elementAttrs={avatar.attrs} src={image} />;\n\n if (app.forum.attribute('fof-discussion-thumbnail.link_to_discussion')) {\n author.attrs.href = app.route.discussion(this.attrs.discussion);\n }\n });\n});\n","!function(e){if(!e.hasInitialised){var t={escapeRegExp:function(e){return e.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g,\"\\\\$&\")},hasClass:function(e,t){var i=\" \";return 1===e.nodeType&&(i+e.className+i).replace(/[\\n\\t]/g,i).indexOf(i+t+i)>=0},addClass:function(e,t){e.className+=\" \"+t},removeClass:function(e,t){var i=new RegExp(\"\\\\b\"+this.escapeRegExp(t)+\"\\\\b\");e.className=e.className.replace(i,\"\")},interpolateString:function(e,t){return e.replace(/{{([a-z][a-z0-9\\-_]*)}}/gi,function(e){return t(arguments[1])||\"\"})},getCookie:function(e){var t=(\"; \"+document.cookie).split(\"; \"+e+\"=\");return t.length<2?void 0:t.pop().split(\";\").shift()},setCookie:function(e,t,i,n,o,s){var r=new Date;r.setHours(r.getHours()+24*(i||365));var a=[e+\"=\"+t,\"expires=\"+r.toUTCString(),\"path=\"+(o||\"/\")];n&&a.push(\"domain=\"+n),s&&a.push(\"secure\"),document.cookie=a.join(\";\")},deepExtend:function(e,t){for(var i in t)t.hasOwnProperty(i)&&(i in e&&this.isPlainObject(e[i])&&this.isPlainObject(t[i])?this.deepExtend(e[i],t[i]):e[i]=t[i]);return e},throttle:function(e,t){var i=!1;return function(){i||(e.apply(this,arguments),i=!0,setTimeout(function(){i=!1},t))}},hash:function(e){var t,i,n=0;if(0===e.length)return n;for(t=0,i=e.length;t<i;++t)n=(n<<5)-n+e.charCodeAt(t),n|=0;return n},normaliseHex:function(e){return\"#\"==e[0]&&(e=e.substr(1)),3==e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),e},getContrast:function(e){return e=this.normaliseHex(e),(299*parseInt(e.substr(0,2),16)+587*parseInt(e.substr(2,2),16)+114*parseInt(e.substr(4,2),16))/1e3>=128?\"#000\":\"#fff\"},getLuminance:function(e){var t=parseInt(this.normaliseHex(e),16),i=38+(t>>16),n=38+(t>>8&255),o=38+(255&t);return\"#\"+(16777216+65536*(i<255?i<1?0:i:255)+256*(n<255?n<1?0:n:255)+(o<255?o<1?0:o:255)).toString(16).slice(1)},isMobile:function(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)},isPlainObject:function(e){return\"object\"==typeof e&&null!==e&&e.constructor==Object},traverseDOMPath:function(e,i){return e&&e.parentNode?t.hasClass(e,i)?e:this.traverseDOMPath(e.parentNode,i):null}};e.status={deny:\"deny\",allow:\"allow\",dismiss:\"dismiss\"},e.transitionEnd=function(){var e=document.createElement(\"div\"),t={t:\"transitionend\",OT:\"oTransitionEnd\",msT:\"MSTransitionEnd\",MozT:\"transitionend\",WebkitT:\"webkitTransitionEnd\"};for(var i in t)if(t.hasOwnProperty(i)&&void 0!==e.style[i+\"ransition\"])return t[i];return\"\"}(),e.hasTransition=!!e.transitionEnd;var i=Object.keys(e.status).map(t.escapeRegExp);e.customStyles={},e.Popup=function(){var n={enabled:!0,container:null,cookie:{name:\"cookieconsent_status\",path:\"/\",domain:\"\",expiryDays:365,secure:!1},onPopupOpen:function(){},onPopupClose:function(){},onInitialise:function(e){},onStatusChange:function(e,t){},onRevokeChoice:function(){},onNoCookieLaw:function(e,t){},content:{header:\"Cookies used on the website!\",message:\"This website uses cookies to ensure you get the best experience on our website.\",dismiss:\"Got it!\",allow:\"Allow cookies\",deny:\"Decline\",link:\"Learn more\",href:\"https://www.cookiesandyou.com\",close:\"❌\",target:\"_blank\",policy:\"Cookie Policy\"},elements:{header:'<span class=\"cc-header\">{{header}}</span> ',message:'<span id=\"cookieconsent:desc\" class=\"cc-message\">{{message}}</span>',messagelink:'<span id=\"cookieconsent:desc\" class=\"cc-message\">{{message}} <a aria-label=\"learn more about cookies\" role=button tabindex=\"0\" class=\"cc-link\" href=\"{{href}}\" rel=\"noopener noreferrer nofollow\" target=\"{{target}}\">{{link}}</a></span>',dismiss:'<a aria-label=\"dismiss cookie message\" role=button tabindex=\"0\" class=\"cc-btn cc-dismiss\">{{dismiss}}</a>',allow:'<a aria-label=\"allow cookies\" role=button tabindex=\"0\" class=\"cc-btn cc-allow\">{{allow}}</a>',deny:'<a aria-label=\"deny cookies\" role=button tabindex=\"0\" class=\"cc-btn cc-deny\">{{deny}}</a>',link:'<a aria-label=\"learn more about cookies\" role=button tabindex=\"0\" class=\"cc-link\" href=\"{{href}}\" rel=\"noopener noreferrer nofollow\" target=\"{{target}}\">{{link}}</a>',close:'<span aria-label=\"dismiss cookie message\" role=button tabindex=\"0\" class=\"cc-close\">{{close}}</span>'},window:'<div role=\"dialog\" aria-live=\"polite\" aria-label=\"cookieconsent\" aria-describedby=\"cookieconsent:desc\" class=\"cc-window {{classes}}\">\\x3c!--googleoff: all--\\x3e{{children}}\\x3c!--googleon: all--\\x3e</div>',revokeBtn:'<div class=\"cc-revoke {{classes}}\">{{policy}}</div>',compliance:{info:'<div class=\"cc-compliance\">{{dismiss}}</div>',\"opt-in\":'<div class=\"cc-compliance cc-highlight\">{{deny}}{{allow}}</div>',\"opt-out\":'<div class=\"cc-compliance cc-highlight\">{{deny}}{{allow}}</div>'},type:\"info\",layouts:{basic:\"{{messagelink}}{{compliance}}\",\"basic-close\":\"{{messagelink}}{{compliance}}{{close}}\",\"basic-header\":\"{{header}}{{message}}{{link}}{{compliance}}\"},layout:\"basic\",position:\"bottom\",theme:\"block\",static:!1,palette:null,revokable:!1,animateRevokable:!0,showLink:!0,dismissOnScroll:!1,dismissOnTimeout:!1,dismissOnWindowClick:!1,ignoreClicksFrom:[\"cc-revoke\",\"cc-btn\"],autoOpen:!0,autoAttach:!0,whitelistPage:[],blacklistPage:[],overrideHTML:null};function o(){this.initialise.apply(this,arguments)}function s(e){this.openingTimeout=null,t.removeClass(e,\"cc-invisible\")}function r(t){t.style.display=\"none\",t.removeEventListener(e.transitionEnd,this.afterTransition),this.afterTransition=null}function a(){var e=this.options.position.split(\"-\"),t=[];return e.forEach(function(e){t.push(\"cc-\"+e)}),t}function c(n){var o=this.options,s=document.createElement(\"div\"),r=o.container&&1===o.container.nodeType?o.container:document.body;s.innerHTML=n;var a=s.children[0];return a.style.display=\"none\",t.hasClass(a,\"cc-window\")&&e.hasTransition&&t.addClass(a,\"cc-invisible\"),this.onButtonClick=function(n){var o=t.traverseDOMPath(n.target,\"cc-btn\")||n.target;if(t.hasClass(o,\"cc-btn\")){var s=o.className.match(new RegExp(\"\\\\bcc-(\"+i.join(\"|\")+\")\\\\b\")),r=s&&s[1]||!1;r&&(this.setStatus(r),this.close(!0))}t.hasClass(o,\"cc-close\")&&(this.setStatus(e.status.dismiss),this.close(!0));t.hasClass(o,\"cc-revoke\")&&this.revokeChoice()}.bind(this),a.addEventListener(\"click\",this.onButtonClick),o.autoAttach&&(r.firstChild?r.insertBefore(a,r.firstChild):r.appendChild(a)),a}function l(e){return\"000000\"==(e=t.normaliseHex(e))?\"#222\":t.getLuminance(e)}function u(e,t){for(var i=0,n=e.length;i<n;++i){var o=e[i];if(o instanceof RegExp&&o.test(t)||\"string\"==typeof o&&o.length&&o===t)return!0}return!1}return o.prototype.initialise=function(i){this.options&&this.destroy(),t.deepExtend(this.options={},n),t.isPlainObject(i)&&t.deepExtend(this.options,i),function(){var t=this.options.onInitialise.bind(this);if(!window.navigator.cookieEnabled)return t(e.status.deny),!0;if(window.CookiesOK||window.navigator.CookiesOK)return t(e.status.allow),!0;var i=Object.keys(e.status),n=this.getStatus(),o=i.indexOf(n)>=0;o&&t(n);return o}.call(this)&&(this.options.enabled=!1),u(this.options.blacklistPage,location.pathname)&&(this.options.enabled=!1),u(this.options.whitelistPage,location.pathname)&&(this.options.enabled=!0);var o=this.options.window.replace(\"{{classes}}\",function(){var i=this.options,n=\"top\"==i.position||\"bottom\"==i.position?\"banner\":\"floating\";t.isMobile()&&(n=\"floating\");var o=[\"cc-\"+n,\"cc-type-\"+i.type,\"cc-theme-\"+i.theme];i.static&&o.push(\"cc-static\");o.push.apply(o,a.call(this));(function(i){var n=t.hash(JSON.stringify(i)),o=\"cc-color-override-\"+n,s=t.isPlainObject(i);this.customStyleSelector=s?o:null,s&&function(i,n,o){if(e.customStyles[i])return void++e.customStyles[i].references;var s={},r=n.popup,a=n.button,c=n.highlight;r&&(r.text=r.text?r.text:t.getContrast(r.background),r.link=r.link?r.link:r.text,s[o+\".cc-window\"]=[\"color: \"+r.text,\"background-color: \"+r.background],s[o+\".cc-revoke\"]=[\"color: \"+r.text,\"background-color: \"+r.background],s[o+\" .cc-link,\"+o+\" .cc-link:active,\"+o+\" .cc-link:visited\"]=[\"color: \"+r.link],a&&(a.text=a.text?a.text:t.getContrast(a.background),a.border=a.border?a.border:\"transparent\",s[o+\" .cc-btn\"]=[\"color: \"+a.text,\"border-color: \"+a.border,\"background-color: \"+a.background],a.padding&&s[o+\" .cc-btn\"].push(\"padding: \"+a.padding),\"transparent\"!=a.background&&(s[o+\" .cc-btn:hover, \"+o+\" .cc-btn:focus\"]=[\"background-color: \"+(a.hover||l(a.background))]),c?(c.text=c.text?c.text:t.getContrast(c.background),c.border=c.border?c.border:\"transparent\",s[o+\" .cc-highlight .cc-btn:first-child\"]=[\"color: \"+c.text,\"border-color: \"+c.border,\"background-color: \"+c.background]):s[o+\" .cc-highlight .cc-btn:first-child\"]=[\"color: \"+r.text]));var u=document.createElement(\"style\");document.head.appendChild(u),e.customStyles[i]={references:1,element:u.sheet};var h=-1;for(var p in s)s.hasOwnProperty(p)&&u.sheet.insertRule(p+\"{\"+s[p].join(\";\")+\"}\",++h)}(n,i,\".\"+o);return s}).call(this,this.options.palette);this.customStyleSelector&&o.push(this.customStyleSelector);return o}.call(this).join(\" \")).replace(\"{{children}}\",function(){var e={},i=this.options;i.showLink||(i.elements.link=\"\",i.elements.messagelink=i.elements.message);Object.keys(i.elements).forEach(function(n){e[n]=t.interpolateString(i.elements[n],function(e){var t=i.content[e];return e&&\"string\"==typeof t&&t.length?t:\"\"})});var n=i.compliance[i.type];n||(n=i.compliance.info);e.compliance=t.interpolateString(n,function(t){return e[t]});var o=i.layouts[i.layout];o||(o=i.layouts.basic);return t.interpolateString(o,function(t){return e[t]})}.call(this)),s=this.options.overrideHTML;if(\"string\"==typeof s&&s.length&&(o=s),this.options.static){var r=c.call(this,'<div class=\"cc-grower\">'+o+\"</div>\");r.style.display=\"\",this.element=r.firstChild,this.element.style.display=\"none\",t.addClass(this.element,\"cc-invisible\")}else this.element=c.call(this,o);(function(){var i=this.setStatus.bind(this),n=this.close.bind(this),o=this.options.dismissOnTimeout;\"number\"==typeof o&&o>=0&&(this.dismissTimeout=window.setTimeout(function(){i(e.status.dismiss),n(!0)},Math.floor(o)));var s=this.options.dismissOnScroll;if(\"number\"==typeof s&&s>=0){var r=function(t){window.pageYOffset>Math.floor(s)&&(i(e.status.dismiss),n(!0),window.removeEventListener(\"scroll\",r),this.onWindowScroll=null)};this.options.enabled&&(this.onWindowScroll=r,window.addEventListener(\"scroll\",r))}var a=this.options.dismissOnWindowClick,c=this.options.ignoreClicksFrom;if(a){var l=function(o){for(var s=!1,r=o.path.length,a=c.length,u=0;u<r;u++)if(!s)for(var h=0;h<a;h++)s||(s=t.hasClass(o.path[u],c[h]));s||(i(e.status.dismiss),n(!0),window.removeEventListener(\"click\",l),window.removeEventListener(\"touchend\",l),this.onWindowClick=null)}.bind(this);this.options.enabled&&(this.onWindowClick=l,window.addEventListener(\"click\",l),window.addEventListener(\"touchend\",l))}}).call(this),function(){\"info\"!=this.options.type&&(this.options.revokable=!0);t.isMobile()&&(this.options.animateRevokable=!1);if(this.options.revokable){var e=a.call(this);this.options.animateRevokable&&e.push(\"cc-animate\"),this.customStyleSelector&&e.push(this.customStyleSelector);var i=this.options.revokeBtn.replace(\"{{classes}}\",e.join(\" \")).replace(\"{{policy}}\",this.options.content.policy);this.revokeBtn=c.call(this,i);var n=this.revokeBtn;if(this.options.animateRevokable){var o=t.throttle(function(e){var i=!1,o=window.innerHeight-20;t.hasClass(n,\"cc-top\")&&e.clientY<20&&(i=!0),t.hasClass(n,\"cc-bottom\")&&e.clientY>o&&(i=!0),i?t.hasClass(n,\"cc-active\")||t.addClass(n,\"cc-active\"):t.hasClass(n,\"cc-active\")&&t.removeClass(n,\"cc-active\")},200);this.onMouseMove=o,window.addEventListener(\"mousemove\",o)}}}.call(this),this.options.autoOpen&&this.autoOpen()},o.prototype.destroy=function(){this.onButtonClick&&this.element&&(this.element.removeEventListener(\"click\",this.onButtonClick),this.onButtonClick=null),this.dismissTimeout&&(clearTimeout(this.dismissTimeout),this.dismissTimeout=null),this.onWindowScroll&&(window.removeEventListener(\"scroll\",this.onWindowScroll),this.onWindowScroll=null),this.onWindowClick&&(window.removeEventListener(\"click\",this.onWindowClick),this.onWindowClick=null),this.onMouseMove&&(window.removeEventListener(\"mousemove\",this.onMouseMove),this.onMouseMove=null),this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element),this.element=null,this.revokeBtn&&this.revokeBtn.parentNode&&this.revokeBtn.parentNode.removeChild(this.revokeBtn),this.revokeBtn=null,function(i){if(t.isPlainObject(i)){var n=t.hash(JSON.stringify(i)),o=e.customStyles[n];if(o&&!--o.references){var s=o.element.ownerNode;s&&s.parentNode&&s.parentNode.removeChild(s),e.customStyles[n]=null}}}(this.options.palette),this.options=null},o.prototype.open=function(t){if(this.element)return this.isOpen()||(e.hasTransition?this.fadeIn():this.element.style.display=\"\",this.options.revokable&&this.toggleRevokeButton(),this.options.onPopupOpen.call(this)),this},o.prototype.close=function(t){if(this.element)return this.isOpen()&&(e.hasTransition?this.fadeOut():this.element.style.display=\"none\",t&&this.options.revokable&&this.toggleRevokeButton(!0),this.options.onPopupClose.call(this)),this},o.prototype.fadeIn=function(){var i=this.element;if(e.hasTransition&&i&&(this.afterTransition&&r.call(this,i),t.hasClass(i,\"cc-invisible\"))){if(i.style.display=\"\",this.options.static){var n=this.element.clientHeight;this.element.parentNode.style.maxHeight=n+\"px\"}this.openingTimeout=setTimeout(s.bind(this,i),20)}},o.prototype.fadeOut=function(){var i=this.element;e.hasTransition&&i&&(this.openingTimeout&&(clearTimeout(this.openingTimeout),s.bind(this,i)),t.hasClass(i,\"cc-invisible\")||(this.options.static&&(this.element.parentNode.style.maxHeight=\"\"),this.afterTransition=r.bind(this,i),i.addEventListener(e.transitionEnd,this.afterTransition),t.addClass(i,\"cc-invisible\")))},o.prototype.isOpen=function(){return this.element&&\"\"==this.element.style.display&&(!e.hasTransition||!t.hasClass(this.element,\"cc-invisible\"))},o.prototype.toggleRevokeButton=function(e){this.revokeBtn&&(this.revokeBtn.style.display=e?\"\":\"none\")},o.prototype.revokeChoice=function(e){this.options.enabled=!0,this.clearStatus(),this.options.onRevokeChoice.call(this),e||this.autoOpen()},o.prototype.hasAnswered=function(t){return Object.keys(e.status).indexOf(this.getStatus())>=0},o.prototype.hasConsented=function(t){var i=this.getStatus();return i==e.status.allow||i==e.status.dismiss},o.prototype.autoOpen=function(e){!this.hasAnswered()&&this.options.enabled?this.open():this.hasAnswered()&&this.options.revokable&&this.toggleRevokeButton(!0)},o.prototype.setStatus=function(i){var n=this.options.cookie,o=t.getCookie(n.name),s=Object.keys(e.status).indexOf(o)>=0;Object.keys(e.status).indexOf(i)>=0?(t.setCookie(n.name,i,n.expiryDays,n.domain,n.path,n.secure),this.options.onStatusChange.call(this,i,s)):this.clearStatus()},o.prototype.getStatus=function(){return t.getCookie(this.options.cookie.name)},o.prototype.clearStatus=function(){var e=this.options.cookie;t.setCookie(e.name,\"\",-1,e.domain,e.path)},o}(),e.Location=function(){var e={timeout:5e3,services:[\"ipinfo\"],serviceDefinitions:{ipinfo:function(){return{url:\"//ipinfo.io\",headers:[\"Accept: application/json\"],callback:function(e,t){try{var i=JSON.parse(t);return i.error?s(i):{code:i.country}}catch(e){return s({error:\"Invalid response (\"+e+\")\"})}}}},ipinfodb:function(e){return{url:\"//api.ipinfodb.com/v3/ip-country/?key={api_key}&format=json&callback={callback}\",isScript:!0,callback:function(e,t){try{var i=JSON.parse(t);return\"ERROR\"==i.statusCode?s({error:i.statusMessage}):{code:i.countryCode}}catch(e){return s({error:\"Invalid response (\"+e+\")\"})}}}},maxmind:function(){return{url:\"//js.maxmind.com/js/apis/geoip2/v2.1/geoip2.js\",isScript:!0,callback:function(e){window.geoip2?geoip2.country(function(t){try{e({code:t.country.iso_code})}catch(t){e(s(t))}},function(t){e(s(t))}):e(new Error(\"Unexpected response format. The downloaded script should have exported `geoip2` to the global scope\"))}}}}};function i(i){t.deepExtend(this.options={},e),t.isPlainObject(i)&&t.deepExtend(this.options,i),this.currentServiceIndex=-1}function n(e,t,i){var n,o=document.createElement(\"script\");o.type=\"text/\"+(e.type||\"javascript\"),o.src=e.src||e,o.async=!1,o.onreadystatechange=o.onload=function(){var e=o.readyState;clearTimeout(n),t.done||e&&!/loaded|complete/.test(e)||(t.done=!0,t(),o.onreadystatechange=o.onload=null)},document.body.appendChild(o),n=setTimeout(function(){t.done=!0,t(),o.onreadystatechange=o.onload=null},i)}function o(e,t,i,n,o){var s=new(window.XMLHttpRequest||window.ActiveXObject)(\"MSXML2.XMLHTTP.3.0\");if(s.open(n?\"POST\":\"GET\",e,1),s.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\"),Array.isArray(o))for(var r=0,a=o.length;r<a;++r){var c=o[r].split(\":\",2);s.setRequestHeader(c[0].replace(/^\\s+|\\s+$/g,\"\"),c[1].replace(/^\\s+|\\s+$/g,\"\"))}\"function\"==typeof t&&(s.onreadystatechange=function(){s.readyState>3&&t(s)}),s.send(n)}function s(e){return new Error(\"Error [\"+(e.code||\"UNKNOWN\")+\"]: \"+e.error)}return i.prototype.getNextService=function(){var e;do{e=this.getServiceByIdx(++this.currentServiceIndex)}while(this.currentServiceIndex<this.options.services.length&&!e);return e},i.prototype.getServiceByIdx=function(e){var i=this.options.services[e];if(\"function\"==typeof i){var n=i();return n.name&&t.deepExtend(n,this.options.serviceDefinitions[n.name](n)),n}return\"string\"==typeof i?this.options.serviceDefinitions[i]():t.isPlainObject(i)?this.options.serviceDefinitions[i.name](i):null},i.prototype.locate=function(e,t){var i=this.getNextService();i?(this.callbackComplete=e,this.callbackError=t,this.runService(i,this.runNextServiceOnError.bind(this))):t(new Error(\"No services to run\"))},i.prototype.setupUrl=function(e){var t=this.getCurrentServiceOpts();return e.url.replace(/\\{(.*?)\\}/g,function(i,n){if(\"callback\"===n){var o=\"callback\"+Date.now();return window[o]=function(t){e.__JSONP_DATA=JSON.stringify(t)},o}if(n in t.interpolateUrl)return t.interpolateUrl[n]})},i.prototype.runService=function(e,t){var i=this;e&&e.url&&e.callback&&(e.isScript?n:o)(this.setupUrl(e),function(n){var o=n?n.responseText:\"\";e.__JSONP_DATA&&(o=e.__JSONP_DATA,delete e.__JSONP_DATA),i.runServiceCallback.call(i,t,e,o)},this.options.timeout,e.data,e.headers)},i.prototype.runServiceCallback=function(e,t,i){var n=this,o=t.callback(function(t){o||n.onServiceResult.call(n,e,t)},i);o&&this.onServiceResult.call(this,e,o)},i.prototype.onServiceResult=function(e,t){t instanceof Error||t&&t.error?e.call(this,t,null):e.call(this,null,t)},i.prototype.runNextServiceOnError=function(e,t){if(e){this.logError(e);var i=this.getNextService();i?this.runService(i,this.runNextServiceOnError.bind(this)):this.completeService.call(this,this.callbackError,new Error(\"All services failed\"))}else this.completeService.call(this,this.callbackComplete,t)},i.prototype.getCurrentServiceOpts=function(){var e=this.options.services[this.currentServiceIndex];return\"string\"==typeof e?{name:e}:\"function\"==typeof e?e():t.isPlainObject(e)?e:{}},i.prototype.completeService=function(e,t){this.currentServiceIndex=-1,e&&e(t)},i.prototype.logError=function(e){var t=this.currentServiceIndex,i=this.getServiceByIdx(t);console.warn(\"The service[\"+t+\"] (\"+i.url+\") responded with the following error\",e)},i}(),e.Law=function(){var e={regionalLaw:!0,hasLaw:[\"AT\",\"BE\",\"BG\",\"HR\",\"CZ\",\"CY\",\"DK\",\"EE\",\"FI\",\"FR\",\"DE\",\"EL\",\"HU\",\"IE\",\"IT\",\"LV\",\"LT\",\"LU\",\"MT\",\"NL\",\"PL\",\"PT\",\"SK\",\"ES\",\"SE\",\"GB\",\"UK\",\"GR\",\"EU\"],revokable:[\"HR\",\"CY\",\"DK\",\"EE\",\"FR\",\"DE\",\"LV\",\"LT\",\"NL\",\"PT\",\"ES\"],explicitAction:[\"HR\",\"IT\",\"ES\"]};function i(e){this.initialise.apply(this,arguments)}return i.prototype.initialise=function(i){t.deepExtend(this.options={},e),t.isPlainObject(i)&&t.deepExtend(this.options,i)},i.prototype.get=function(e){var t=this.options;return{hasLaw:t.hasLaw.indexOf(e)>=0,revokable:t.revokable.indexOf(e)>=0,explicitAction:t.explicitAction.indexOf(e)>=0}},i.prototype.applyLaw=function(e,t){var i=this.get(t);return i.hasLaw||(e.enabled=!1,\"function\"==typeof e.onNoCookieLaw&&e.onNoCookieLaw(t,i)),this.options.regionalLaw&&(i.revokable&&(e.revokable=!0),i.explicitAction&&(e.dismissOnScroll=!1,e.dismissOnTimeout=!1)),e},i}(),e.initialise=function(i,n,o){var s=new e.Law(i.law);n||(n=function(){}),o||(o=function(){});var r=Object.keys(e.status),a=t.getCookie(\"cookieconsent_status\");r.indexOf(a)>=0?n(new e.Popup(i)):e.getCountryCode(i,function(t){delete i.law,delete i.location,t.code&&(i=s.applyLaw(i,t.code)),n(new e.Popup(i))},function(t){delete i.law,delete i.location,o(t,new e.Popup(i))})},e.getCountryCode=function(t,i,n){t.law&&t.law.countryCode?i({code:t.law.countryCode}):t.location?new e.Location(t.location).locate(function(e){i(e||{})},n):i({})},e.utils=t,e.hasInitialised=!0,window.cookieconsent=e}}(window.cookieconsent||{});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","import app from 'flarum/forum/app';\nimport 'cookieconsent';\n\napp.initializers.add('fof-cookie-consent', () => {\n $(document).ready(() => {\n const getAttribute = (key) => app.forum.attribute(`fof-cookie-consent.${key}`);\n\n let settings = {\n theme: getAttribute('ccTheme'),\n content: {\n message: getAttribute('consentText'),\n dismiss: getAttribute('buttonText'),\n link: getAttribute('learnMoreLinkText'),\n href: getAttribute('learnMoreLinkUrl'),\n },\n };\n\n if (getAttribute('ccTheme') !== 'no_css') {\n settings.palette = {\n popup: {\n background: getAttribute('backgroundColor') || undefined,\n text: getAttribute('textColor') || undefined,\n },\n button: {\n background: getAttribute('buttonBackgroundColor') || undefined,\n text: getAttribute('buttonTextColor') || undefined,\n },\n };\n }\n\n try {\n cookieconsent.initialise(settings);\n } catch (err) {\n console.error('An error occurred initializing the Cookie Consent library:', err);\n }\n\n delete window.cookieconsent;\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/PostControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","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.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Alert'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/punctuateSeries'];","import app from 'flarum/common/app';\nimport Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport Alert from 'flarum/common/components/Alert';\nimport Stream from 'flarum/common/utils/Stream';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\n\nexport default class BanIPModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.address = this.attrs.address;\n this.post = this.attrs.post;\n this.user = this.attrs.user || (this.post && this.post.user());\n\n if (!this.user && this.address) {\n const bannedIP = app.store.getBy('banned_ips', 'address', this.address);\n\n if (bannedIP) this.user = bannedIP.user();\n }\n\n this.banOptions = [];\n\n if ((this.post && this.post.ipAddress()) || this.address) this.banOptions.push('only');\n if (this.user) this.banOptions.push('all');\n\n this.banOption = Stream(this.banOptions[0]);\n this.reason = Stream('');\n\n this.otherUsers = {};\n\n this.loading = false;\n }\n\n className() {\n return 'Modal--medium';\n }\n\n title() {\n return app.translator.trans('fof-ban-ips.lib.modal.title');\n }\n\n content() {\n const otherUsersBanned = this.otherUsers[this.banOption()];\n const usernames =\n otherUsersBanned && otherUsersBanned.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\n\n return (\n <div className=\"Modal-body\">\n <p>{app.translator.trans('fof-ban-ips.lib.modal.ban_ip_confirmation')}</p>\n\n <div className=\"Form-group\">\n {this.banOptions.map((key) => (\n <div>\n <input\n type=\"radio\"\n name=\"ban-option\"\n id={`ban-option-${key}`}\n checked={this.banOption() === key}\n onclick={this.banOption.bind(this, key)}\n />\n \n <label htmlFor={`ban-option-${key}`}>\n {app.translator.trans(`fof-ban-ips.forum.modal.ban_options_${key}_ip`, {\n user: this.user,\n ip: this.address || (this.post && this.post.ipAddress()),\n })}\n </label>\n </div>\n ))}\n </div>\n\n <div className=\"Form-group\">\n <label className=\"label\">{app.translator.trans('fof-ban-ips.lib.modal.reason_label')}</label>\n <input type=\"text\" className=\"FormControl\" bidi={this.reason} />\n </div>\n\n {otherUsersBanned\n ? otherUsersBanned.length\n ? Alert.component(\n {\n dismissible: false,\n },\n app.translator.trans('fof-ban-ips.lib.modal.ban_ip_users', {\n users: punctuateSeries(usernames),\n count: usernames.length,\n })\n )\n : Alert.component(\n {\n dismissible: false,\n type: 'success',\n },\n app.translator.trans('fof-ban-ips.forum.modal.ban_ip_no_users')\n )\n : ''}\n\n {otherUsersBanned && <br />}\n\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary\" type=\"submit\" loading={this.loading}>\n {usernames ? app.translator.trans('fof-ban-ips.lib.modal.ban_button') : app.translator.trans('fof-ban-ips.lib.modal.check_button')}\n </Button>\n </div>\n </div>\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\n\n const attrs = {\n reason: this.reason(),\n userId: this.user.id(),\n };\n\n if (this.banOption() === 'only') {\n attrs.address = this.post.ipAddress();\n\n app.store.createRecord('banned_ips').save(attrs).then(this.hide.bind(this)).catch(this.onerror.bind(this)).then(this.loaded.bind(this));\n } else if (this.banOption() === 'all') {\n app\n .request({\n body: {\n data: {\n attributes: attrs,\n },\n },\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/ban`,\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => app.store.pushPayload(res).forEach(this.done.bind(this)))\n .then(this.hide.bind(this))\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n }\n\n getOtherUsers() {\n const data = {};\n\n if (this.banOption() === 'only') data.ip = this.address || this.post.ipAddress();\n\n app\n .request({\n params: data,\n url: `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users/${this.user.id()}`,\n method: 'GET',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => {\n this.otherUsers[this.banOption()] = res.data.map((e) => app.store.pushObject(e)).filter((e) => e.bannedIPs().length === 0);\n this.loading = false;\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n done(bannedIP) {\n const obj = {\n type: 'banned_ips',\n id: bannedIP.id(),\n };\n\n if (this.post) {\n this.post.data.relationships.banned_ip = {\n data: obj,\n };\n }\n\n if (!this.user.data.relationships.banned_ips)\n this.user.data.relationships.banned_ips = {\n data: [],\n };\n\n this.user.data.relationships.banned_ips.data.push(obj);\n this.user.data.attributes.isBanned = true;\n\n app.store.pushObject(this.user.data);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","import app from 'flarum/common/app';\nimport Button from 'flarum/common/components/Button';\nimport Alert from 'flarum/common/components/Alert';\nimport punctuateSeries from 'flarum/common/helpers/punctuateSeries';\nimport username from 'flarum/common/helpers/username';\n\nimport BanIPModal from './BanIPModal';\n\nexport default class UnbanIPModal extends BanIPModal {\n title() {\n return app.translator.trans('fof-ban-ips.lib.modal.unban_title');\n }\n\n content() {\n const otherUsers = this.otherUsers[this.banOption()];\n const usernames = otherUsers && otherUsers.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\n\n if (this.bannedIPs) {\n return (\n <div className=\"Modal-body\">\n {Alert.component(\n {\n dismissible: false,\n type: 'success',\n },\n app.translator.trans('fof-ban-ips.lib.modal.unbanned_ips', { ips: punctuateSeries(this.bannedIPs) })\n )}\n </div>\n );\n }\n\n return (\n <div className=\"Modal-body\">\n <p>{app.translator.trans('fof-ban-ips.lib.modal.unban_ip_confirmation')}</p>\n\n <div className=\"Form-group\">\n {this.banOptions.map((key) => (\n <div>\n <input\n type=\"radio\"\n name=\"ban-option\"\n id={`ban-option-${key}`}\n checked={this.banOption() === key}\n onclick={this.banOption.bind(this, key)}\n />\n \n <label htmlFor={`ban-option-${key}`}>\n {app.translator.trans(`fof-ban-ips.lib.modal.unban_options_${key}_ip`, {\n user: this.user,\n ip: this.address || (this.post && this.post.ipAddress()),\n })}\n </label>\n </div>\n ))}\n </div>\n\n {otherUsers\n ? otherUsers.length\n ? Alert.component(\n {\n dismissible: false,\n },\n app.translator.trans('fof-ban-ips.lib.modal.unban_ip_users', {\n users: punctuateSeries(usernames),\n count: usernames.length,\n })\n )\n : Alert.component(\n {\n dismissible: false,\n type: 'success',\n },\n app.translator.trans('fof-ban-ips.lib.modal.unban_ip_no_users')\n )\n : ''}\n\n {otherUsers && <br />}\n\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary\" type=\"submit\" loading={this.loading}>\n {usernames ? app.translator.trans('fof-ban-ips.lib.modal.unban_button') : app.translator.trans('fof-ban-ips.lib.modal.check_button')}\n </Button>\n </div>\n </div>\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\n\n const attrs = {};\n\n if (this.banOption() === 'only') {\n attrs.address = this.address || this.post.ipAddress();\n\n const bannedIP = this.post ? this.post.bannedIP() : app.store.getBy('banned_ips', 'address', this.address);\n\n bannedIP.delete().then(this.done.bind(this, bannedIP)).catch(this.onerror.bind(this)).then(this.hide.bind(this));\n } else if (this.banOption() === 'all') {\n app\n .request({\n body: {\n data: {\n attributes: attrs,\n },\n },\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/unban`,\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then(this.done.bind(this))\n .catch(this.onerror.bind(this))\n .then(this.hide.bind(this));\n }\n }\n\n getOtherUsers() {\n const data = {};\n\n if (this.banOption() === 'only') {\n data.ip = this.address || this.post.ipAddress();\n data.skipValidation = true;\n }\n\n let url = `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users`;\n\n if (this.user) url += `/${this.user.id()}`;\n\n app\n .request({\n params: data,\n url: url,\n method: 'GET',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => {\n const data = app.store.pushPayload(res);\n\n this.otherUsers[this.banOption()] = data.filter((e) => e.bannedIPs().length === 1);\n this.loading = false;\n\n m.redraw();\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n done(bannedIP) {\n this.loading = false;\n\n if (this.post) delete this.post.data.relationships.banned_ip;\n\n if (this.user && !this.user.data.relationships && !bannedIP) {\n this.user.data.relationships.banned_ips.data = [];\n this.user.data.attributes.isBanned = false;\n } else if (this.user && bannedIP instanceof app.store.models.banned_ips) {\n this.user.data.relationships.banned_ips = {\n data: this.user.data.relationships.banned_ips.data.filter((e) => e.id !== bannedIP.id()),\n };\n this.user.data.attributes.isBanned = this.user.data.relationships.banned_ips.data.length !== 0;\n }\n\n if (bannedIP && Array.isArray(bannedIP.data)) {\n this.bannedIPs = bannedIP.data.map((b) => b.attributes.address);\n this.loading = false;\n\n m.redraw();\n }\n }\n\n hide() {\n super.hide();\n\n if (!this.attrs.redraw) {\n location.reload();\n }\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport PostControls from 'flarum/forum/utils/PostControls';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport Button from 'flarum/common/components/Button';\n\nimport BanIPModal from '../common/components/BanIPModal';\nimport UnbanIPModal from '../common/components/UnbanIPModal';\n\nexport default () => {\n extend(PostControls, 'userControls', function (items, post) {\n if (!post || !post.user()) return;\n\n const isBanned = post.user().isBanned();\n const prefix = isBanned ? 'un' : '';\n\n // Removes ability to ban thyself and also does permission check.\n if (!post.canBanIP() || post.isHidden() || post.user() === app.session.user || post.contentType() !== 'comment') return;\n\n items.add(\n `${prefix}ban`,\n Button.component(\n {\n icon: 'fas fa-gavel',\n onclick: () => app.modal.show(isBanned ? UnbanIPModal : BanIPModal, { post }),\n },\n app.translator.trans(`fof-ban-ips.forum.${prefix}ban_ip_button`)\n )\n );\n });\n\n extend(UserControls, 'moderationControls', function (items, user) {\n if (!user.canBanIP() || user === app.session.user) return;\n\n const isBanned = user.isBanned();\n const prefix = isBanned ? 'un' : '';\n\n items.add(\n `${prefix}ban`,\n Button.component(\n {\n icon: 'fas fa-gavel',\n onclick: () => app.modal.show(isBanned ? UnbanIPModal : BanIPModal, { user }),\n },\n app.translator.trans(`fof-ban-ips.forum.user_controls.${prefix}ban_button`)\n )\n );\n });\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/mixin'];","import Model from 'flarum/common/Model';\nimport mixin from 'flarum/common/utils/mixin';\n\nexport default class BannedIP extends mixin(Model, {\n creator: Model.hasOne('creator'),\n user: Model.hasOne('user'),\n address: Model.attribute('address'),\n reason: Model.attribute('reason'),\n createdAt: Model.attribute('createdAt', Model.transformDate),\n deletedAt: Model.attribute('deletedAt', Model.transformDate),\n}) {\n apiEndpoint() {\n return `/fof/ban-ips${this.exists ? `/${this.id()}` : ''}`;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport User from 'flarum/common/models/User';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default () => {\n extend(User.prototype, 'badges', function (items) {\n if (this.isBanned()) {\n items.add(\n 'banned',\n Badge.component({\n icon: 'fas fa-gavel',\n type: 'banned',\n label: app.translator.trans('fof-ban-ips.forum.user_badge.banned_tooltip'),\n })\n );\n }\n });\n};\n","import BanIPModal from './components/BanIPModal';\nimport UnbanIPModal from './components/UnbanIPModal';\nimport BannedIP from './models/BannedIP';\n\nexport default {\n 'fof/ban-ips/components/BanIPModal': BanIPModal,\n 'fof/ban-ips/components/UnbanIPModal': UnbanIPModal,\n 'fof/ban-ips/models/BannedIP': BannedIP,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import app from 'flarum/forum/app';\nimport Model from 'flarum/common/Model';\nimport addBanIPControl from './addBanIPControl';\nimport BannedIP from '../common/models/BannedIP';\nimport addBannedBadge from './addBannedBadge';\n\napp.initializers.add('fof/ban-ips', () => {\n app.store.models.posts.prototype.canBanIP = Model.attribute('canBanIP');\n app.store.models.posts.prototype.ipAddress = Model.attribute('ipAddress');\n app.store.models.posts.prototype.bannedIP = Model.hasOne('banned_ip');\n\n app.store.models.users.prototype.canBanIP = Model.attribute('canBanIP');\n app.store.models.users.prototype.isBanned = Model.attribute('isBanned');\n app.store.models.users.prototype.bannedIPs = Model.hasMany('banned_ips');\n\n app.store.models.banned_ips = BannedIP;\n\n addBanIPControl();\n addBannedBadge();\n});\n\n// Expose compat API\nimport extCompat from '../common/compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, extCompat);\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","import Button from 'flarum/common/components/Button';\nimport Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';\nimport User from 'flarum/common/models/User';\nimport app from 'flarum/forum/app';\nimport type Mithril from 'mithril';\nimport Switch from 'flarum/common/components/Switch';\n\ninterface HandleSpammerModalAttrs extends IInternalModalAttrs {\n user: User;\n}\n\nexport default class HandleSpammerModal extends Modal<HandleSpammerModalAttrs> {\n user!: User;\n hardDeleteUser!: boolean;\n hardDeleteDiscussions!: boolean;\n hardDeletePosts!: boolean;\n moveDiscussionsToQuarantine!: boolean;\n reportToSfs!: boolean;\n\n oninit(vnode: Mithril.Vnode<HandleSpammerModalAttrs>) {\n super.oninit(vnode);\n\n this.user = this.attrs.user;\n\n const defaultActions = app.forum.attribute('fof-anti-spam')['default-options'];\n this.hardDeleteUser = defaultActions['deleteUser'];\n this.hardDeleteDiscussions = defaultActions['deleteDiscussions'];\n this.hardDeletePosts = defaultActions['deletePosts'];\n this.moveDiscussionsToQuarantine = defaultActions['spamQuarantine'];\n this.reportToSfs = defaultActions['reportToSfs'];\n }\n\n className() {\n return 'HandleSpammerModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('fof-anti-spam.forum.spammer_modal.title', {\n username: this.user.username(),\n });\n }\n\n content() {\n const tagsEnabled = app.initializers.has('flarum-tags');\n const sfsEnabled = !!app.forum.attribute('fof-anti-spam')['stopforumspam']['enabled'];\n\n return (\n <div className=\"Modal-body\">\n <div className=\"Form\">\n <p className=\"helpText\">{app.translator.trans('fof-anti-spam.forum.spammer_modal.intro')}</p>\n <div className=\"Form-group\">\n <Switch\n state={this.hardDeleteDiscussions}\n onchange={(value: boolean) => {\n this.hardDeleteDiscussions = value;\n m.redraw();\n }}\n >\n {app.translator.trans('fof-anti-spam.forum.spammer_modal.hard_delete_discussions_label')}\n </Switch>\n <p className=\"helpText\">{app.translator.trans('fof-anti-spam.forum.spammer_modal.hard_delete_discussions_help')}</p>\n </div>\n <div className=\"Form-group\">\n <Switch\n state={this.hardDeletePosts}\n onchange={(value: boolean) => {\n this.hardDeletePosts = value;\n }}\n >\n {app.translator.trans('fof-anti-spam.forum.spammer_modal.hard_delete_posts_label')}\n </Switch>\n <p className=\"helpText\">{app.translator.trans('fof-anti-spam.forum.spammer_modal.hard_delete_posts_help')}</p>\n </div>\n {tagsEnabled && !this.hardDeleteDiscussions && (\n <div className=\"Form-group\">\n <Switch\n state={this.moveDiscussionsToQuarantine}\n onchange={(value: boolean) => {\n this.moveDiscussionsToQuarantine = value;\n }}\n >\n {app.translator.trans('fof-anti-spam.forum.spammer_modal.move_discussions_tag_label')}\n </Switch>\n <p className=\"helpText\">{app.translator.trans('fof-anti-spam.forum.spammer_modal.move_discussions_tag_help')}</p>\n </div>\n )}\n <div className=\"Form-group\">\n <Switch\n state={this.hardDeleteUser}\n onchange={(value: boolean) => {\n this.hardDeleteUser = value;\n }}\n >\n {app.translator.trans('fof-anti-spam.forum.spammer_modal.hard_delete_user_label')}\n </Switch>\n <p className=\"helpText\">{app.translator.trans('fof-anti-spam.forum.spammer_modal.hard_delete_user_help')}</p>\n </div>\n {sfsEnabled && (\n <div className=\"Form-group\">\n <Switch\n state={this.reportToSfs}\n onchange={(value: boolean) => {\n this.reportToSfs = value;\n }}\n >\n {app.translator.trans('fof-anti-spam.forum.spammer_modal.report_to_sfs_label')}\n </Switch>\n <p className=\"helpText\">{app.translator.trans('fof-anti-spam.forum.spammer_modal.report_to_sfs_help')}</p>\n </div>\n )}\n <div className=\"Form-group\">\n <Button className=\"Button Button--primary\" onclick={() => this.submitData()} loading={this.loading} disabled={this.loading}>\n {app.translator.trans('fof-anti-spam.forum.spammer_modal.process_button')}\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n submitData() {\n this.loading = true;\n\n const body = {\n options: {\n deletePosts: this.hardDeletePosts,\n deleteDiscussions: this.hardDeleteDiscussions,\n deleteUser: this.hardDeleteUser,\n moveDiscussionsToQuarantine: this.moveDiscussionsToQuarantine,\n reportToSfs: this.reportToSfs,\n },\n };\n\n app\n .request({\n method: 'POST',\n url: `${app.forum.attribute('apiUrl')}/users/${this.user.id()}/spamblock`,\n body: body,\n })\n .then(() => {\n this.loading = false;\n this.hide();\n });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Model from 'flarum/common/Model';\n\nexport default class BlockedRegistration extends Model {\n ip() {\n return Model.attribute<string>('ip').call(this);\n }\n\n email() {\n return Model.attribute<string>('email').call(this);\n }\n\n username() {\n return Model.attribute<string>('username').call(this);\n }\n\n sfsData() {\n return Model.attribute<string>('sfsData').call(this);\n }\n\n provider() {\n return Model.attribute<string | null>('provider').call(this);\n }\n\n providerData() {\n return Model.attribute<string | null>('providerData').call(this);\n }\n\n attemptedAt() {\n return Model.attribute('attemptedAt', Model.transformDate).call(this);\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport BlockedRegistration from './models/BlockedRegistration';\n\nexport default [\n new Extend.Store() //\n .add('blocked-registrations', BlockedRegistration),\n];\n","import Extend from 'flarum/common/extenders';\nimport User from 'flarum/common/models/User';\n\nimport { default as extend } from '../common/extend';\n\nexport default [\n ...extend,\n\n new Extend.Model(User) //\n .attribute<boolean>('canSpamblock'),\n];\n","import app from 'flarum/forum/app';\nimport addSpamblockControls from './extenders/addSpamblockControls';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('fof/anti-spam', () => {\n addSpamblockControls();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Button from 'flarum/common/components/Button';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport User from 'flarum/common/models/User';\nimport type Mithril from 'mithril';\nimport HandleSpammerModal from '../components/HandleSpammerModal';\n\nexport default function addSpamblockControls() {\n extend(UserControls, 'moderationControls', function (items: ItemList<Mithril.Children>, user: User) {\n /** @ts-ignore */\n user.canSpamblock() &&\n items.add(\n 'spammer',\n <Button\n icon=\"fas fa-pastafarianism\"\n onclick={() => {\n app.modal.show(HandleSpammerModal, { user });\n }}\n >\n {app.translator.trans('fof-anti-spam.forum.user_controls.spammer_button')}\n </Button>\n );\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Page from 'flarum/common/components/Page';\n\napp.initializers.add('fof-analytics', () => {\n // Supply user IDs for cross-device tracking\n setTimeout(() => {\n if (app.data.googleTrackingCode && typeof gtag !== 'undefined') {\n gtag('config', app.data.googleTrackingCode);\n\n if (app.session.user) {\n gtag('config', app.data.googleTrackingCode, {\n user_id: app.session.user.id(),\n });\n }\n }\n }, 0);\n\n extend(Page.prototype, 'oninit', function () {\n // Don't run this if tracking code starts with \"G-...\"\n // GA4 automatically tracks history changes for SPAs with `page_view` events under the `page_location` property\n if (app.data.googleTrackingCode && !app.data.googleTrackingCode.startsWith('G-') && typeof gtag !== 'undefined') {\n gtag('config', app.data.googleTrackingCode, {\n page_path: m.route.get(),\n });\n }\n\n if (app.data.googleGTMCode && typeof gtagpush !== 'undefined') {\n gtagpush({\n event: 'custom_event',\n virtualpath: m.route.get(),\n });\n }\n\n if (typeof _paq !== 'undefined') {\n _paq.push(['setCustomUrl', m.route.get()]);\n _paq.push(['trackPageView']);\n }\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/states/DiscussionListState'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\n\nexport default class DiscussionStickiedPost extends EventPost {\n icon() {\n return 'fas fa-thumbtack';\n }\n\n descriptionKey() {\n return this.attrs.post.content().sticky\n ? 'flarum-sticky.forum.post_stream.discussion_stickied_text'\n : 'flarum-sticky.forum.post_stream.discussion_unstickied_text';\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import Extend from 'flarum/common/extenders';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionStickiedPost from './components/DiscussionStickiedPost';\n\nexport default [\n new Extend.PostTypes() //\n .add('discussionStickied', DiscussionStickiedPost),\n\n new Extend.Model(Discussion) //\n .attribute<boolean>('isSticky')\n .attribute<boolean>('canSticky'),\n];\n","import app from 'flarum/forum/app';\n\nimport addStickyBadge from './addStickyBadge';\nimport addStickyControl from './addStickyControl';\nimport addStickyExcerpt from './addStickyExcerpt';\nimport addStickyClass from './addStickyClass';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-sticky', () => {\n addStickyBadge();\n addStickyControl();\n addStickyExcerpt();\n addStickyClass();\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addStickyBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isSticky()) {\n badges.add(\n 'sticky',\n <Badge type=\"sticky\" label={app.translator.trans('flarum-sticky.forum.badge.sticky_tooltip')} icon=\"fas fa-thumbtack\" />,\n 10\n );\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\n\nexport default function addStickyControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canSticky()) {\n items.add(\n 'sticky',\n <Button icon=\"fas fa-thumbtack\" onclick={this.stickyAction.bind(discussion)}>\n {app.translator.trans(`flarum-sticky.forum.discussion_controls.${discussion.isSticky() ? 'unsticky' : 'sticky'}_button`)}\n </Button>\n );\n }\n });\n\n DiscussionControls.stickyAction = function () {\n this.save({ isSticky: !this.isSticky() }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n });\n };\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport { truncate } from 'flarum/common/utils/string';\n\nexport default function addStickyControl() {\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n if (app.current.matches(IndexPage) || app.current.matches(DiscussionPage)) {\n params.include.push('firstPost');\n }\n });\n\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n const discussion = this.attrs.discussion;\n\n if (discussion.isSticky() && !this.attrs.params.q && !discussion.lastReadPostNumber()) {\n const firstPost = discussion.firstPost();\n\n if (firstPost) {\n const excerpt = truncate(firstPost.contentPlain(), 175);\n\n // Wrapping in <div> because ItemList entries need to be vnodes\n items.add('excerpt', <div>{excerpt}</div>, -100);\n }\n }\n });\n}\n","import { extend } from 'flarum/common/extend';\nimport classList from 'flarum/common/utils/classList';\n\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\n\nexport default function addStickyClass() {\n extend(DiscussionListItem.prototype, 'elementAttrs', function (attrs) {\n if (this.attrs.discussion.isSticky()) {\n attrs.className = classList(attrs.className, 'DiscussionListItem--sticky');\n }\n });\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditor'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/BasicEditorDriver'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/styleSelectedText'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","import Component from 'flarum/common/Component';\n\nexport default class MarkdownToolbar extends Component {\n view(vnode) {\n return <div className=\"MarkdownToolbar\">{vnode.children}</div>;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Tooltip'];","import Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport Tooltip from 'flarum/common/components/Tooltip';\n\nexport default class MarkdownButton extends Component {\n oncreate(vnode) {\n super.oncreate(vnode);\n }\n\n view() {\n const button = (\n <button\n className=\"Button Button--icon Button--link\"\n type=\"button\"\n data-hotkey={this.attrs.hotkey}\n onkeydown={this.keydown.bind(this)}\n onclick={this.attrs.onclick}\n >\n {icon(this.attrs.icon)}\n </button>\n );\n\n if (this.attrs.title) {\n return <Tooltip text={this.attrs.title}>{button}</Tooltip>;\n }\n\n return button;\n }\n\n keydown(event) {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.element.click();\n }\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","/*!\n * Includes modified code from GitHub Markdown Toolbar Element\n * https://github.com/github/markdown-toolbar-element/\n *\n * Original Copyright GitHub, Inc.\n * Released under the MIT license\n * https://github.com/github/markdown-toolbar-element/blob/master/LICENSE\n */\n\nimport app from 'flarum/common/app';\nimport { extend, override } from 'flarum/common/extend';\nimport TextEditor from 'flarum/common/components/TextEditor';\nimport BasicEditorDriver from 'flarum/common/utils/BasicEditorDriver';\nimport styleSelectedText from 'flarum/common/utils/styleSelectedText';\n\nimport MarkdownToolbar from './components/MarkdownToolbar';\nimport MarkdownButton from './components/MarkdownButton';\nimport ItemList from 'flarum/common/utils/ItemList';\n\nconst modifierKey = navigator.userAgent.match(/Macintosh/) ? '\u2318' : 'ctrl';\n\nconst styles = {\n header: { prefix: '### ' },\n bold: { prefix: '**', suffix: '**', trimFirst: true },\n italic: { prefix: '_', suffix: '_', trimFirst: true },\n strikethrough: { prefix: '~~', suffix: '~~', trimFirst: true },\n quote: { prefix: '> ', multiline: true, surroundWithNewlines: true },\n code: { prefix: '`', suffix: '`', blockPrefix: '```', blockSuffix: '```' },\n link: { prefix: '[', suffix: '](https://)', replaceNext: 'https://', scanFor: 'https?://' },\n image: { prefix: '', replaceNext: 'https://', scanFor: 'https?://' },\n unordered_list: { prefix: '- ', multiline: true, surroundWithNewlines: true },\n ordered_list: { prefix: '1. ', multiline: true, orderedList: true },\n spoiler: { prefix: '>!', suffix: '!<', blockPrefix: '>! ', multiline: true, trimFirst: true },\n};\n\nconst applyStyle = (id, editorDriver) => {\n // This is a nasty hack that breaks encapsulation of the editor.\n // In future releases, we'll need to tweak the editor driver interface\n // to support triggering events like this.\n styleSelectedText(editorDriver.el, styles[id]);\n};\n\nfunction makeShortcut(id, key, editorDriver) {\n return function (e) {\n if (e.key === key && ((e.metaKey && modifierKey === '\u2318') || (e.ctrlKey && modifierKey === 'ctrl'))) {\n e.preventDefault();\n applyStyle(id, editorDriver);\n }\n };\n}\n\nfunction markdownToolbarItems(oldFunc) {\n const items = typeof oldFunc === 'function' ? oldFunc() : new ItemList();\n\n function tooltip(name, hotkey) {\n return app.translator.trans(`flarum-markdown.lib.composer.${name}_tooltip`) + (hotkey ? ` <${modifierKey}-${hotkey}>` : '');\n }\n\n const makeApplyStyle = (id) => {\n return () => applyStyle(id, this.attrs.composer.editor);\n };\n\n items.add('header', <MarkdownButton title={tooltip('header')} icon=\"fas fa-heading\" onclick={makeApplyStyle('header')} />, 1000);\n items.add('bold', <MarkdownButton title={tooltip('bold', 'b')} icon=\"fas fa-bold\" onclick={makeApplyStyle('bold')} />, 900);\n items.add('italic', <MarkdownButton title={tooltip('italic', 'i')} icon=\"fas fa-italic\" onclick={makeApplyStyle('italic')} />, 800);\n items.add(\n 'strikethrough',\n <MarkdownButton title={tooltip('strikethrough')} icon=\"fas fa-strikethrough\" onclick={makeApplyStyle('strikethrough')} />,\n 700\n );\n items.add('quote', <MarkdownButton title={tooltip('quote')} icon=\"fas fa-quote-left\" onclick={makeApplyStyle('quote')} />, 600);\n items.add('spoiler', <MarkdownButton title={tooltip('spoiler')} icon=\"fas fa-exclamation-triangle\" onclick={makeApplyStyle('spoiler')} />, 500);\n items.add('code', <MarkdownButton title={tooltip('code')} icon=\"fas fa-code\" onclick={makeApplyStyle('code')} />, 400);\n items.add('link', <MarkdownButton title={tooltip('link')} icon=\"fas fa-link\" onclick={makeApplyStyle('link')} />, 300);\n items.add('image', <MarkdownButton title={tooltip('image')} icon=\"fas fa-image\" onclick={makeApplyStyle('image')} />, 200);\n items.add(\n 'unordered_list',\n <MarkdownButton title={tooltip('unordered_list')} icon=\"fas fa-list-ul\" onclick={makeApplyStyle('unordered_list')} />,\n 100\n );\n items.add('ordered_list', <MarkdownButton title={tooltip('ordered_list')} icon=\"fas fa-list-ol\" onclick={makeApplyStyle('ordered_list')} />, 0);\n\n return items;\n}\n\nexport function initialize(app) {\n extend(BasicEditorDriver.prototype, 'keyHandlers', function (items) {\n items.add('bold', makeShortcut('bold', 'b', this));\n items.add('italic', makeShortcut('italic', 'i', this));\n });\n\n if (TextEditor.prototype.markdownToolbarItems) {\n override(TextEditor.prototype, 'markdownToolbarItems', markdownToolbarItems);\n } else {\n TextEditor.prototype.markdownToolbarItems = markdownToolbarItems;\n }\n\n extend(TextEditor.prototype, 'toolbarItems', function (items) {\n items.add(\n 'markdown',\n <MarkdownToolbar for={this.textareaId} setShortcutHandler={(handler) => (shortcutHandler = handler)}>\n {this.markdownToolbarItems().toArray()}\n </MarkdownToolbar>,\n 100\n );\n });\n}\n","import app from 'flarum/forum/app';\nimport { initialize } from '../common/index';\n\napp.initializers.add('flarum-markdown', initialize);\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/NotificationGrid'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/Notification'];","import app from 'flarum/forum/app';\nimport Notification from 'flarum/forum/components/Notification';\n\nexport default class DiscussionLockedNotification extends Notification {\n icon() {\n return 'fas fa-lock';\n }\n\n href() {\n const notification = this.attrs.notification;\n\n return app.route.discussion(notification.subject(), notification.content().postNumber);\n }\n\n content() {\n return app.translator.trans('flarum-lock.forum.notifications.discussion_locked_text', { user: this.attrs.notification.fromUser() });\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Discussion'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Badge'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/DiscussionControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/EventPost'];","import EventPost from 'flarum/forum/components/EventPost';\n\nexport default class DiscussionLockedPost extends EventPost {\n icon() {\n return this.attrs.post.content().locked ? 'fas fa-lock' : 'fas fa-unlock';\n }\n\n descriptionKey() {\n return this.attrs.post.content().locked\n ? 'flarum-lock.forum.post_stream.discussion_locked_text'\n : 'flarum-lock.forum.post_stream.discussion_unlocked_text';\n }\n}\n","import Extend from 'flarum/common/extenders';\nimport Discussion from 'flarum/common/models/Discussion';\nimport DiscussionLockedPost from './components/DiscussionLockedPost';\n\nexport default [\n new Extend.PostTypes() //\n .add('discussionLocked', DiscussionLockedPost),\n\n new Extend.Model(Discussion) //\n .attribute<boolean>('isLocked')\n .attribute<boolean>('canLock'),\n];\n","import { extend } from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport NotificationGrid from 'flarum/forum/components/NotificationGrid';\n\nimport DiscussionLockedNotification from './components/DiscussionLockedNotification';\nimport addLockBadge from './addLockBadge';\nimport addLockControl from './addLockControl';\n\nexport { default as extend } from './extend';\n\napp.initializers.add('flarum-lock', () => {\n app.notificationComponents.discussionLocked = DiscussionLockedNotification;\n\n addLockBadge();\n addLockControl();\n\n extend(NotificationGrid.prototype, 'notificationTypes', function (items) {\n items.add('discussionLocked', {\n name: 'discussionLocked',\n icon: 'fas fa-lock',\n label: app.translator.trans('flarum-lock.forum.settings.notify_discussion_locked_label'),\n });\n });\n});\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Discussion from 'flarum/common/models/Discussion';\nimport Badge from 'flarum/common/components/Badge';\n\nexport default function addLockBadge() {\n extend(Discussion.prototype, 'badges', function (badges) {\n if (this.isLocked()) {\n badges.add('locked', <Badge type=\"locked\" label={app.translator.trans('flarum-lock.forum.badge.locked_tooltip')} icon=\"fas fa-lock\" />);\n }\n });\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\nimport Button from 'flarum/common/components/Button';\n\nexport default function addLockControl() {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canLock()) {\n items.add(\n 'lock',\n <Button icon=\"fas fa-lock\" onclick={this.lockAction.bind(discussion)}>\n {app.translator.trans(`flarum-lock.forum.discussion_controls.${discussion.isLocked() ? 'unlock' : 'lock'}_button`)}\n </Button>\n );\n }\n });\n\n DiscussionControls.lockAction = function () {\n this.save({ isLocked: !this.isLocked() }).then(() => {\n if (app.current.matches(DiscussionPage)) {\n app.current.get('stream').update();\n }\n\n m.redraw();\n });\n };\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditor'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/TextEditorButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Fragment'];","import Fragment from 'flarum/common/Fragment';\n\nexport default class AutocompleteDropdown extends Fragment {\n items = [];\n active = false;\n index = 0;\n keyWasJustPressed = false;\n\n view() {\n return (\n <ul className=\"Dropdown-menu EmojiDropdown\">\n <li className=\"Dropdown-header\">{app.translator.trans('flarum-emoji.forum.composer.type_to_search_text')}</li>\n {this.items.map((item) => (\n <li key={item.attrs.key}>{item}</li>\n ))}\n </ul>\n );\n }\n\n show(left, top) {\n this.$()\n .show()\n .css({\n left: left + 'px',\n top: top + 'px',\n });\n this.active = true;\n }\n\n hide() {\n this.$().hide();\n this.active = false;\n }\n\n navigate(delta) {\n this.keyWasJustPressed = true;\n this.setIndex(this.index + delta, true);\n clearTimeout(this.keyWasJustPressedTimeout);\n this.keyWasJustPressedTimeout = setTimeout(() => (this.keyWasJustPressed = false), 500);\n }\n\n complete() {\n this.$('li:not(.Dropdown-header)').eq(this.index).find('button').click();\n }\n\n setIndex(index, scrollToItem) {\n if (this.keyWasJustPressed && !scrollToItem) return;\n\n const $dropdown = this.$();\n const $items = $dropdown.find('li:not(.Dropdown-header)');\n let rangedIndex = index;\n\n if (rangedIndex < 0) {\n rangedIndex = $items.length - 1;\n } else if (rangedIndex >= $items.length) {\n rangedIndex = 0;\n }\n\n this.index = rangedIndex;\n\n const $item = $items.removeClass('active').eq(rangedIndex).addClass('active');\n\n if (scrollToItem) {\n const dropdownScroll = $dropdown.scrollTop();\n const dropdownTop = $dropdown.offset().top;\n const dropdownBottom = dropdownTop + $dropdown.outerHeight();\n const itemTop = $item.offset().top;\n const itemBottom = itemTop + $item.outerHeight();\n\n let scrollTop;\n if (itemTop < dropdownTop) {\n scrollTop = dropdownScroll - dropdownTop + itemTop - parseInt($dropdown.css('padding-top'), 10);\n } else if (itemBottom > dropdownBottom) {\n scrollTop = dropdownScroll - dropdownBottom + itemBottom + parseInt($dropdown.css('padding-bottom'), 10);\n }\n\n if (typeof scrollTop !== 'undefined') {\n $dropdown.stop(true).animate({ scrollTop }, 100);\n }\n }\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */\nvar twemoji=function(){\"use strict\";var twemoji={base:\"https://twemoji.maxcdn.com/v/14.0.2/\",ext:\".png\",size:\"72x72\",className:\"emoji\",convert:{fromCodePoint:fromCodePoint,toCodePoint:toCodePoint},onerror:function onerror(){if(this.parentNode){this.parentNode.replaceChild(createText(this.alt,false),this)}},parse:parse,replace:replace,test:test},escaper={\"&\":\"&\",\"<\":\"<\",\">\":\">\",\"'\":\"'\",'\"':\""\"},re=/(?:\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\udef1\\ud83c\\udffb\\u200d\\ud83e\\udef2\\ud83c[\\udffc-\\udfff]|\\ud83e\\udef1\\ud83c\\udffc\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\udef1\\ud83c\\udffd\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\udef1\\ud83c\\udffe\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\udef1\\ud83c\\udfff\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1|\\ud83d\\udc6b\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6c\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6d\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc8f\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc91\\ud83c[\\udffb-\\udfff]|\\ud83e\\udd1d\\ud83c[\\udffb-\\udfff]|\\ud83d[\\udc6b-\\udc6d\\udc8f\\udc91]|\\ud83e\\udd1d)|(?:\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1)(?:\\ud83c[\\udffb-\\udfff])?\\u200d(?:\\u2695\\ufe0f|\\u2696\\ufe0f|\\u2708\\ufe0f|\\ud83c[\\udf3e\\udf73\\udf7c\\udf84\\udf93\\udfa4\\udfa8\\udfeb\\udfed]|\\ud83d[\\udcbb\\udcbc\\udd27\\udd2c\\ude80\\ude92]|\\ud83e[\\uddaf-\\uddb3\\uddbc\\uddbd])|(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75]|\\u26f9)((?:\\ud83c[\\udffb-\\udfff]|\\ufe0f)\\u200d[\\u2640\\u2642]\\ufe0f)|(?:\\ud83c[\\udfc3\\udfc4\\udfca]|\\ud83d[\\udc6e\\udc70\\udc71\\udc73\\udc77\\udc81\\udc82\\udc86\\udc87\\ude45-\\ude47\\ude4b\\ude4d\\ude4e\\udea3\\udeb4-\\udeb6]|\\ud83e[\\udd26\\udd35\\udd37-\\udd39\\udd3d\\udd3e\\uddb8\\uddb9\\uddcd-\\uddcf\\uddd4\\uddd6-\\udddd])(?:\\ud83c[\\udffb-\\udfff])?\\u200d[\\u2640\\u2642]\\ufe0f|(?:\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f|\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08|\\ud83d\\ude36\\u200d\\ud83c\\udf2b\\ufe0f|\\u2764\\ufe0f\\u200d\\ud83d\\udd25|\\u2764\\ufe0f\\u200d\\ud83e\\ude79|\\ud83c\\udff4\\u200d\\u2620\\ufe0f|\\ud83d\\udc15\\u200d\\ud83e\\uddba|\\ud83d\\udc3b\\u200d\\u2744\\ufe0f|\\ud83d\\udc41\\u200d\\ud83d\\udde8|\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc6f\\u200d\\u2640\\ufe0f|\\ud83d\\udc6f\\u200d\\u2642\\ufe0f|\\ud83d\\ude2e\\u200d\\ud83d\\udca8|\\ud83d\\ude35\\u200d\\ud83d\\udcab|\\ud83e\\udd3c\\u200d\\u2640\\ufe0f|\\ud83e\\udd3c\\u200d\\u2642\\ufe0f|\\ud83e\\uddde\\u200d\\u2640\\ufe0f|\\ud83e\\uddde\\u200d\\u2642\\ufe0f|\\ud83e\\udddf\\u200d\\u2640\\ufe0f|\\ud83e\\udddf\\u200d\\u2642\\ufe0f|\\ud83d\\udc08\\u200d\\u2b1b)|[#*0-9]\\ufe0f?\\u20e3|(?:[\u00a9\u00ae\\u2122\\u265f]\\ufe0f)|(?:\\ud83c[\\udc04\\udd70\\udd71\\udd7e\\udd7f\\ude02\\ude1a\\ude2f\\ude37\\udf21\\udf24-\\udf2c\\udf36\\udf7d\\udf96\\udf97\\udf99-\\udf9b\\udf9e\\udf9f\\udfcd\\udfce\\udfd4-\\udfdf\\udff3\\udff5\\udff7]|\\ud83d[\\udc3f\\udc41\\udcfd\\udd49\\udd4a\\udd6f\\udd70\\udd73\\udd76-\\udd79\\udd87\\udd8a-\\udd8d\\udda5\\udda8\\uddb1\\uddb2\\uddbc\\uddc2-\\uddc4\\uddd1-\\uddd3\\udddc-\\uddde\\udde1\\udde3\\udde8\\uddef\\uddf3\\uddfa\\udecb\\udecd-\\udecf\\udee0-\\udee5\\udee9\\udef0\\udef3]|[\\u203c\\u2049\\u2139\\u2194-\\u2199\\u21a9\\u21aa\\u231a\\u231b\\u2328\\u23cf\\u23ed-\\u23ef\\u23f1\\u23f2\\u23f8-\\u23fa\\u24c2\\u25aa\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u2600-\\u2604\\u260e\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262a\\u262e\\u262f\\u2638-\\u263a\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267b\\u267f\\u2692-\\u2697\\u2699\\u269b\\u269c\\u26a0\\u26a1\\u26a7\\u26aa\\u26ab\\u26b0\\u26b1\\u26bd\\u26be\\u26c4\\u26c5\\u26c8\\u26cf\\u26d1\\u26d3\\u26d4\\u26e9\\u26ea\\u26f0-\\u26f5\\u26f8\\u26fa\\u26fd\\u2702\\u2708\\u2709\\u270f\\u2712\\u2714\\u2716\\u271d\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u2764\\u27a1\\u2934\\u2935\\u2b05-\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u3030\\u303d\\u3297\\u3299])(?:\\ufe0f|(?!\\ufe0e))|(?:(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75\\udd90]|[\\u261d\\u26f7\\u26f9\\u270c\\u270d])(?:\\ufe0f|(?!\\ufe0e))|(?:\\ud83c[\\udf85\\udfc2-\\udfc4\\udfc7\\udfca]|\\ud83d[\\udc42\\udc43\\udc46-\\udc50\\udc66-\\udc69\\udc6e\\udc70-\\udc78\\udc7c\\udc81-\\udc83\\udc85-\\udc87\\udcaa\\udd7a\\udd95\\udd96\\ude45-\\ude47\\ude4b-\\ude4f\\udea3\\udeb4-\\udeb6\\udec0\\udecc]|\\ud83e[\\udd0c\\udd0f\\udd18-\\udd1c\\udd1e\\udd1f\\udd26\\udd30-\\udd39\\udd3d\\udd3e\\udd77\\uddb5\\uddb6\\uddb8\\uddb9\\uddbb\\uddcd-\\uddcf\\uddd1-\\udddd\\udec3-\\udec5\\udef0-\\udef6]|[\\u270a\\u270b]))(?:\\ud83c[\\udffb-\\udfff])?|(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f|\\ud83c\\udde6\\ud83c[\\udde8-\\uddec\\uddee\\uddf1\\uddf2\\uddf4\\uddf6-\\uddfa\\uddfc\\uddfd\\uddff]|\\ud83c\\udde7\\ud83c[\\udde6\\udde7\\udde9-\\uddef\\uddf1-\\uddf4\\uddf6-\\uddf9\\uddfb\\uddfc\\uddfe\\uddff]|\\ud83c\\udde8\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\uddee\\uddf0-\\uddf5\\uddf7\\uddfa-\\uddff]|\\ud83c\\udde9\\ud83c[\\uddea\\uddec\\uddef\\uddf0\\uddf2\\uddf4\\uddff]|\\ud83c\\uddea\\ud83c[\\udde6\\udde8\\uddea\\uddec\\udded\\uddf7-\\uddfa]|\\ud83c\\uddeb\\ud83c[\\uddee-\\uddf0\\uddf2\\uddf4\\uddf7]|\\ud83c\\uddec\\ud83c[\\udde6\\udde7\\udde9-\\uddee\\uddf1-\\uddf3\\uddf5-\\uddfa\\uddfc\\uddfe]|\\ud83c\\udded\\ud83c[\\uddf0\\uddf2\\uddf3\\uddf7\\uddf9\\uddfa]|\\ud83c\\uddee\\ud83c[\\udde8-\\uddea\\uddf1-\\uddf4\\uddf6-\\uddf9]|\\ud83c\\uddef\\ud83c[\\uddea\\uddf2\\uddf4\\uddf5]|\\ud83c\\uddf0\\ud83c[\\uddea\\uddec-\\uddee\\uddf2\\uddf3\\uddf5\\uddf7\\uddfc\\uddfe\\uddff]|\\ud83c\\uddf1\\ud83c[\\udde6-\\udde8\\uddee\\uddf0\\uddf7-\\uddfb\\uddfe]|\\ud83c\\uddf2\\ud83c[\\udde6\\udde8-\\udded\\uddf0-\\uddff]|\\ud83c\\uddf3\\ud83c[\\udde6\\udde8\\uddea-\\uddec\\uddee\\uddf1\\uddf4\\uddf5\\uddf7\\uddfa\\uddff]|\\ud83c\\uddf4\\ud83c\\uddf2|\\ud83c\\uddf5\\ud83c[\\udde6\\uddea-\\udded\\uddf0-\\uddf3\\uddf7-\\uddf9\\uddfc\\uddfe]|\\ud83c\\uddf6\\ud83c\\udde6|\\ud83c\\uddf7\\ud83c[\\uddea\\uddf4\\uddf8\\uddfa\\uddfc]|\\ud83c\\uddf8\\ud83c[\\udde6-\\uddea\\uddec-\\uddf4\\uddf7-\\uddf9\\uddfb\\uddfd-\\uddff]|\\ud83c\\uddf9\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\udded\\uddef-\\uddf4\\uddf7\\uddf9\\uddfb\\uddfc\\uddff]|\\ud83c\\uddfa\\ud83c[\\udde6\\uddec\\uddf2\\uddf3\\uddf8\\uddfe\\uddff]|\\ud83c\\uddfb\\ud83c[\\udde6\\udde8\\uddea\\uddec\\uddee\\uddf3\\uddfa]|\\ud83c\\uddfc\\ud83c[\\uddeb\\uddf8]|\\ud83c\\uddfd\\ud83c\\uddf0|\\ud83c\\uddfe\\ud83c[\\uddea\\uddf9]|\\ud83c\\uddff\\ud83c[\\udde6\\uddf2\\uddfc]|\\ud83c[\\udccf\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01\\ude32-\\ude36\\ude38-\\ude3a\\ude50\\ude51\\udf00-\\udf20\\udf2d-\\udf35\\udf37-\\udf7c\\udf7e-\\udf84\\udf86-\\udf93\\udfa0-\\udfc1\\udfc5\\udfc6\\udfc8\\udfc9\\udfcf-\\udfd3\\udfe0-\\udff0\\udff4\\udff8-\\udfff]|\\ud83d[\\udc00-\\udc3e\\udc40\\udc44\\udc45\\udc51-\\udc65\\udc6a\\udc6f\\udc79-\\udc7b\\udc7d-\\udc80\\udc84\\udc88-\\udc8e\\udc90\\udc92-\\udca9\\udcab-\\udcfc\\udcff-\\udd3d\\udd4b-\\udd4e\\udd50-\\udd67\\udda4\\uddfb-\\ude44\\ude48-\\ude4a\\ude80-\\udea2\\udea4-\\udeb3\\udeb7-\\udebf\\udec1-\\udec5\\uded0-\\uded2\\uded5-\\uded7\\udedd-\\udedf\\udeeb\\udeec\\udef4-\\udefc\\udfe0-\\udfeb\\udff0]|\\ud83e[\\udd0d\\udd0e\\udd10-\\udd17\\udd20-\\udd25\\udd27-\\udd2f\\udd3a\\udd3c\\udd3f-\\udd45\\udd47-\\udd76\\udd78-\\uddb4\\uddb7\\uddba\\uddbc-\\uddcc\\uddd0\\uddde-\\uddff\\ude70-\\ude74\\ude78-\\ude7c\\ude80-\\ude86\\ude90-\\udeac\\udeb0-\\udeba\\udec0-\\udec2\\uded0-\\uded9\\udee0-\\udee7]|[\\u23e9-\\u23ec\\u23f0\\u23f3\\u267e\\u26ce\\u2705\\u2728\\u274c\\u274e\\u2753-\\u2755\\u2795-\\u2797\\u27b0\\u27bf\\ue50a])|\\ufe0f/g,UFE0Fg=/\\uFE0F/g,U200D=String.fromCharCode(8205),rescaper=/[&<>'\"]/g,shouldntBeParsed=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,fromCharCode=String.fromCharCode;return twemoji;function createText(text,clean){return document.createTextNode(clean?text.replace(UFE0Fg,\"\"):text)}function escapeHTML(s){return s.replace(rescaper,replacer)}function defaultImageSrcGenerator(icon,options){return\"\".concat(options.base,options.size,\"/\",icon,options.ext)}function grabAllTextNodes(node,allText){var childNodes=node.childNodes,length=childNodes.length,subnode,nodeType;while(length--){subnode=childNodes[length];nodeType=subnode.nodeType;if(nodeType===3){allText.push(subnode)}else if(nodeType===1&&!(\"ownerSVGElement\"in subnode)&&!shouldntBeParsed.test(subnode.nodeName.toLowerCase())){grabAllTextNodes(subnode,allText)}}return allText}function grabTheRightIcon(rawText){return toCodePoint(rawText.indexOf(U200D)<0?rawText.replace(UFE0Fg,\"\"):rawText)}function parseNode(node,options){var allText=grabAllTextNodes(node,[]),length=allText.length,attrib,attrname,modified,fragment,subnode,text,match,i,index,img,rawText,iconId,src;while(length--){modified=false;fragment=document.createDocumentFragment();subnode=allText[length];text=subnode.nodeValue;i=0;while(match=re.exec(text)){index=match.index;if(index!==i){fragment.appendChild(createText(text.slice(i,index),true))}rawText=match[0];iconId=grabTheRightIcon(rawText);i=index+rawText.length;src=options.callback(iconId,options);if(iconId&&src){img=new Image;img.onerror=options.onerror;img.setAttribute(\"draggable\",\"false\");attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf(\"on\")!==0&&!img.hasAttribute(attrname)){img.setAttribute(attrname,attrib[attrname])}}img.className=options.className;img.alt=rawText;img.src=src;modified=true;fragment.appendChild(img)}if(!img)fragment.appendChild(createText(rawText,false));img=null}if(modified){if(i<text.length){fragment.appendChild(createText(text.slice(i),true))}subnode.parentNode.replaceChild(fragment,subnode)}}return node}function parseString(str,options){return replace(str,function(rawText){var ret=rawText,iconId=grabTheRightIcon(rawText),src=options.callback(iconId,options),attrib,attrname;if(iconId&&src){ret=\"<img \".concat('class=\"',options.className,'\" ','draggable=\"false\" ','alt=\"',rawText,'\"',' src=\"',src,'\"');attrib=options.attributes(rawText,iconId);for(attrname in attrib){if(attrib.hasOwnProperty(attrname)&&attrname.indexOf(\"on\")!==0&&ret.indexOf(\" \"+attrname+\"=\")===-1){ret=ret.concat(\" \",attrname,'=\"',escapeHTML(attrib[attrname]),'\"')}}ret=ret.concat(\"/>\")}return ret})}function replacer(m){return escaper[m]}function returnNull(){return null}function toSizeSquaredAsset(value){return typeof value===\"number\"?value+\"x\"+value:value}function fromCodePoint(codepoint){var code=typeof codepoint===\"string\"?parseInt(codepoint,16):codepoint;if(code<65536){return fromCharCode(code)}code-=65536;return fromCharCode(55296+(code>>10),56320+(code&1023))}function parse(what,how){if(!how||typeof how===\"function\"){how={callback:how}}return(typeof what===\"string\"?parseString:parseNode)(what,{callback:how.callback||defaultImageSrcGenerator,attributes:typeof how.attributes===\"function\"?how.attributes:returnNull,base:typeof how.base===\"string\"?how.base:twemoji.base,ext:how.ext||twemoji.ext,size:how.folder||toSizeSquaredAsset(how.size||twemoji.size),className:how.className||twemoji.className,onerror:how.onerror||twemoji.onerror})}function replace(text,callback){return String(text).replace(re,callback)}function test(text){re.lastIndex=0;var result=re.test(text);re.lastIndex=0;return result}function toCodePoint(unicodeSurrogates,sep){var r=[],c=0,p=0,i=0;while(i<unicodeSurrogates.length){c=unicodeSurrogates.charCodeAt(i++);if(p){r.push((65536+(p-55296<<10)+(c-56320)).toString(16));p=0}else if(55296<=c&&c<=56319){p=c}else{r.push(c.toString(16))}}return r.join(sep||\"-\")}}();\nexport default twemoji;","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */ /*\n https://github.com/twitter/twemoji/blob/gh-pages/LICENSE\n*/\n\nimport twemoji from 'twemoji';\n\n// avoid using a string literal like '\\u200D' here because minifiers expand it inline\nconst U200D = String.fromCharCode(0x200d);\n\n// avoid runtime RegExp creation for not so smart,\n// not JIT based, and old browsers / engines\nconst UFE0Fg = /\\uFE0F/g;\n\n/**\n * Used to both remove the possible variant\n * and to convert utf16 into code points.\n * If there is a zero-width-joiner (U+200D), leave the variants in.\n * @param string the raw text of the emoji match\n * @return string the code point\n */\nexport default function getEmojiIconCode(emoji) {\n return twemoji.convert.toCodePoint(emoji.indexOf(U200D) < 0 ? emoji.replace(UFE0Fg, '') : emoji);\n}\n","import twemoji from 'twemoji';\n\nexport const version = /([0-9]+).[0-9]+.[0-9]+/g.exec(twemoji.base)[1];\n\nexport default `https://cdn.jsdelivr.net/gh/twitter/twemoji@${version}/assets/`;\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Post'];","import twemoji from 'twemoji';\n\nimport { override } from 'flarum/common/extend';\nimport Post from 'flarum/common/models/Post';\n\nimport base from './cdn';\n\nconst options = {\n base,\n attributes: () => ({\n loading: 'lazy',\n }),\n};\n\n/**\n * Parses an HTML string into a `<body>` node containing the HTML content.\n *\n * Vanilla JS implementation of jQuery's `$.parseHTML()`,\n * sourced from http://youmightnotneedjquery.com/\n */\nfunction parseHTML(str) {\n const tmp = document.implementation.createHTMLDocument();\n tmp.body.innerHTML = str;\n\n return tmp.body;\n}\n\nexport default function renderEmoji() {\n override(Post.prototype, 'contentHtml', function (original) {\n const contentHtml = original();\n\n if (this.oldContentHtml !== contentHtml) {\n // We need to parse the HTML string into a DOM node, then give it to Twemoji.\n //\n // This prevents some issues with the default find-replace that would be performed\n // on a string passed to `Twemoji.parse()`.\n //\n // The parse function can only handle a single DOM node provided, so we need to\n // wrap it in a node. In our `parseHTML` implementation, we wrap it in a `<body>`\n // element. This gets stripped below.\n //\n // See https://github.com/flarum/core/issues/2958\n const emojifiedDom = twemoji.parse(parseHTML(contentHtml), options);\n\n // Steal the HTML string inside the emojified DOM `<body>` tag.\n this.emojifiedContentHtml = emojifiedDom.innerHTML;\n\n this.oldContentHtml = contentHtml;\n }\n\n return this.emojifiedContentHtml;\n });\n\n override(s9e.TextFormatter, 'preview', (original, text, element) => {\n original(text, element);\n\n twemoji.parse(element, options);\n });\n}\n","import app from 'flarum/forum/app';\n\nimport addComposerAutocomplete from './addComposerAutocomplete';\nimport renderEmoji from './renderEmoji';\n\napp.initializers.add('flarum-emoji', () => {\n // After typing ':' in the composer, show a dropdown suggesting a bunch of\n // emoji that the user could use.\n addComposerAutocomplete();\n\n // render emoji as image in Posts content and title.\n renderEmoji();\n});\n","import emojiMap from 'simple-emoji-map';\n\nimport { extend } from 'flarum/common/extend';\nimport TextEditor from 'flarum/common/components/TextEditor';\nimport TextEditorButton from 'flarum/common/components/TextEditorButton';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\n\nimport AutocompleteDropdown from './fragments/AutocompleteDropdown';\nimport getEmojiIconCode from './helpers/getEmojiIconCode';\nimport cdn from './cdn';\n\nexport default function addComposerAutocomplete() {\n const emojiKeys = Object.keys(emojiMap);\n const $container = $('<div class=\"ComposerBody-emojiDropdownContainer\"></div>');\n const dropdown = new AutocompleteDropdown();\n\n extend(TextEditor.prototype, 'oncreate', function () {\n const $editor = this.$('.TextEditor-editor').wrap('<div class=\"ComposerBody-emojiWrapper\"></div>');\n\n this.navigator = new KeyboardNavigatable();\n this.navigator\n .when(() => dropdown.active)\n .onUp(() => dropdown.navigate(-1))\n .onDown(() => dropdown.navigate(1))\n .onSelect(dropdown.complete.bind(dropdown))\n .onCancel(dropdown.hide.bind(dropdown))\n .bindTo($editor);\n\n $editor.after($container);\n });\n\n extend(TextEditor.prototype, 'buildEditorParams', function (params) {\n let relEmojiStart;\n let absEmojiStart;\n let typed;\n\n const applySuggestion = (replacement) => {\n this.attrs.composer.editor.replaceBeforeCursor(absEmojiStart - 1, replacement + ' ');\n\n dropdown.hide();\n };\n\n params.inputListeners.push(() => {\n const selection = this.attrs.composer.editor.getSelectionRange();\n\n const cursor = selection[0];\n\n if (selection[1] - cursor > 0) return;\n\n // Search backwards from the cursor for an ':' symbol. If we find\n // one and followed by a whitespace, we will want to show the\n // autocomplete dropdown!\n const lastChunk = this.attrs.composer.editor.getLastNChars(15);\n absEmojiStart = 0;\n for (let i = lastChunk.length - 1; i >= 0; i--) {\n const character = lastChunk.substr(i, 1);\n // check what user typed, emoji names only contains alphanumeric,\n // underline, '+' and '-'\n if (!/[a-z0-9]|\\+|\\-|_|\\:/.test(character)) break;\n // make sure ':' preceded by a whitespace or newline\n if (character === ':' && (i == 0 || /\\s/.test(lastChunk.substr(i - 1, 1)))) {\n relEmojiStart = i + 1;\n absEmojiStart = cursor - lastChunk.length + i + 1;\n break;\n }\n }\n\n dropdown.hide();\n dropdown.active = false;\n\n if (absEmojiStart) {\n typed = lastChunk.substring(relEmojiStart).toLowerCase();\n\n const makeSuggestion = function ({ emoji, name, code }) {\n return (\n <button\n key={emoji}\n onclick={() => applySuggestion(emoji)}\n onmouseenter={function () {\n dropdown.setIndex($(this).parent().index() - 1);\n }}\n >\n <img alt={emoji} className=\"emoji\" draggable=\"false\" loading=\"lazy\" src={`${cdn}72x72/${code}.png`} />\n {name}\n </button>\n );\n };\n\n const buildSuggestions = () => {\n const similarEmoji = [];\n\n // Build a regular expression to do a fuzzy match of the given input string\n const fuzzyRegexp = function (str) {\n const reEscape = new RegExp('\\\\(([' + '+.*?[]{}()^$|\\\\'.replace(/(.)/g, '\\\\$1') + '])\\\\)', 'g');\n return new RegExp('(.*)' + str.toLowerCase().replace(/(.)/g, '($1)(.*?)').replace(reEscape, '(\\\\$1)') + '$', 'i');\n };\n const regTyped = fuzzyRegexp(typed);\n\n let maxSuggestions = 7;\n\n const findMatchingEmojis = (matcher) => {\n for (let i = 0; i < emojiKeys.length && maxSuggestions > 0; i++) {\n const curEmoji = emojiKeys[i];\n\n if (similarEmoji.indexOf(curEmoji) === -1) {\n const names = emojiMap[curEmoji];\n for (let name of names) {\n if (matcher(name)) {\n --maxSuggestions;\n similarEmoji.push(curEmoji);\n break;\n }\n }\n }\n }\n };\n\n // First, try to find all emojis starting with the given string\n findMatchingEmojis((emoji) => emoji.indexOf(typed) === 0);\n\n // If there are still suggestions left, try for some fuzzy matches\n findMatchingEmojis((emoji) => regTyped.test(emoji));\n\n const suggestions = similarEmoji\n .map((emoji) => ({\n emoji,\n name: emojiMap[emoji][0],\n code: getEmojiIconCode(emoji),\n }))\n .map(makeSuggestion);\n\n if (suggestions.length) {\n dropdown.items = suggestions;\n m.render($container[0], dropdown.render());\n\n dropdown.show();\n const coordinates = this.attrs.composer.editor.getCaretCoordinates(absEmojiStart);\n const width = dropdown.$().outerWidth();\n const height = dropdown.$().outerHeight();\n const parent = dropdown.$().offsetParent();\n let left = coordinates.left;\n let top = coordinates.top + 15;\n\n // Keep the dropdown inside the editor.\n if (top + height > parent.height()) {\n top = coordinates.top - height - 15;\n }\n if (left + width > parent.width()) {\n left = parent.width() - width;\n }\n\n // Prevent the dropdown from going off screen on mobile\n top = Math.max(-(parent.offset().top - $(document).scrollTop()), top);\n left = Math.max(-parent.offset().left, left);\n\n dropdown.show(left, top);\n }\n };\n\n buildSuggestions();\n\n dropdown.setIndex(0);\n dropdown.$().scrollTop(0);\n dropdown.active = true;\n }\n });\n });\n\n extend(TextEditor.prototype, 'toolbarItems', function (items) {\n items.add(\n 'emoji',\n <TextEditorButton onclick={() => this.attrs.composer.editor.insertAtCursor(' :')} icon=\"far fa-smile\">\n {app.translator.trans('flarum-emoji.forum.composer.emoji_tooltip')}\n </TextEditorButton>\n );\n });\n}\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(a=\"undefined\"!=typeof globalThis?globalThis:a||self).dayjs_locale_az=e(a.dayjs)}(this,(function(a){\"use strict\";function e(a){return a&&\"object\"==typeof a&&\"default\"in a?a:{default:a}}var _=e(a),t={name:\"az\",weekdays:\"Bazar_Bazar ert\u0259si_\u00c7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\u00c7\u0259r\u015f\u0259nb\u0259_C\u00fcm\u0259 ax\u015fam\u0131_C\u00fcm\u0259_\u015e\u0259nb\u0259\".split(\"_\"),weekdaysShort:\"Baz_BzE_\u00c7Ax_\u00c7\u0259r_CAx_C\u00fcm_\u015e\u0259n\".split(\"_\"),weekdaysMin:\"Bz_BE_\u00c7A_\u00c7\u0259_CA_C\u00fc_\u015e\u0259\".split(\"_\"),months:\"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr\".split(\"_\"),monthsShort:\"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek\".split(\"_\"),weekStart:1,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY \u0433.\",LLL:\"D MMMM YYYY \u0433., H:mm\",LLLL:\"dddd, D MMMM YYYY \u0433., H:mm\"},relativeTime:{future:\"%s sonra\",past:\"%s \u0259vv\u0259l\",s:\"bir ne\u00e7\u0259 saniy\u0259\",m:\"bir d\u0259qiq\u0259\",mm:\"%d d\u0259qiq\u0259\",h:\"bir saat\",hh:\"%d saat\",d:\"bir g\u00fcn\",dd:\"%d g\u00fcn\",M:\"bir ay\",MM:\"%d ay\",y:\"bir il\",yy:\"%d il\"},ordinal:function(a){return a}};return _.default.locale(t,null,!0),t}));","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_de=n(e.dayjs)}(this,(function(e){\"use strict\";function n(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=n(e),a={s:\"ein paar Sekunden\",m:[\"eine Minute\",\"einer Minute\"],mm:\"%d Minuten\",h:[\"eine Stunde\",\"einer Stunde\"],hh:\"%d Stunden\",d:[\"ein Tag\",\"einem Tag\"],dd:[\"%d Tage\",\"%d Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[\"%d Monate\",\"%d Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[\"%d Jahre\",\"%d Jahren\"]};function i(e,n,t){var i=a[t];return Array.isArray(i)&&(i=i[n?0:1]),i.replace(\"%d\",e)}var r={name:\"de\",weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),months:\"Januar_Februar_M\u00e4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Feb._M\u00e4rz_Apr._Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),ordinal:function(e){return e+\".\"},weekStart:1,yearStart:4,formats:{LTS:\"HH:mm:ss\",LT:\"HH:mm\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i}};return t.default.locale(r,null,!0),r}));","!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],o):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_es=o(e.dayjs)}(this,(function(e){\"use strict\";function o(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var s=o(e),d={name:\"es\",monthsShort:\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\"),weekdays:\"domingo_lunes_martes_mi\u00e9rcoles_jueves_viernes_s\u00e1bado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mi\u00e9._jue._vie._s\u00e1b.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_s\u00e1\".split(\"_\"),months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),weekStart:1,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un d\u00eda\",dd:\"%d d\u00edas\",M:\"un mes\",MM:\"%d meses\",y:\"un a\u00f1o\",yy:\"%d a\u00f1os\"},ordinal:function(e){return e+\"\u00ba\"}};return s.default.locale(d,null,!0),d}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_fa=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"fa\",weekdays:\"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647\".split(\"_\"),weekdaysShort:\"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647\".split(\"_\"),weekdaysMin:\"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634\".split(\"_\"),weekStart:6,months:\"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631\".split(\"_\"),monthsShort:\"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631\".split(\"_\"),ordinal:function(_){return _},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},relativeTime:{future:\"\u062f\u0631 %s\",past:\"%s \u067e\u06cc\u0634\",s:\"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647\",m:\"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647\",mm:\"%d \u062f\u0642\u06cc\u0642\u0647\",h:\"\u06cc\u06a9 \u0633\u0627\u0639\u062a\",hh:\"%d \u0633\u0627\u0639\u062a\",d:\"\u06cc\u06a9 \u0631\u0648\u0632\",dd:\"%d \u0631\u0648\u0632\",M:\"\u06cc\u06a9 \u0645\u0627\u0647\",MM:\"%d \u0645\u0627\u0647\",y:\"\u06cc\u06a9 \u0633\u0627\u0644\",yy:\"%d \u0633\u0627\u0644\"}};return t.default.locale(d,null,!0),d}));","!function(u,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(u=\"undefined\"!=typeof globalThis?globalThis:u||self).dayjs_locale_fi=e(u.dayjs)}(this,(function(u){\"use strict\";function e(u){return u&&\"object\"==typeof u&&\"default\"in u?u:{default:u}}var t=e(u);function n(u,e,t,n){var i={s:\"muutama sekunti\",m:\"minuutti\",mm:\"%d minuuttia\",h:\"tunti\",hh:\"%d tuntia\",d:\"p\u00e4iv\u00e4\",dd:\"%d p\u00e4iv\u00e4\u00e4\",M:\"kuukausi\",MM:\"%d kuukautta\",y:\"vuosi\",yy:\"%d vuotta\",numbers:\"nolla_yksi_kaksi_kolme_nelj\u00e4_viisi_kuusi_seitsem\u00e4n_kahdeksan_yhdeks\u00e4n\".split(\"_\")},a={s:\"muutaman sekunnin\",m:\"minuutin\",mm:\"%d minuutin\",h:\"tunnin\",hh:\"%d tunnin\",d:\"p\u00e4iv\u00e4n\",dd:\"%d p\u00e4iv\u00e4n\",M:\"kuukauden\",MM:\"%d kuukauden\",y:\"vuoden\",yy:\"%d vuoden\",numbers:\"nollan_yhden_kahden_kolmen_nelj\u00e4n_viiden_kuuden_seitsem\u00e4n_kahdeksan_yhdeks\u00e4n\".split(\"_\")},s=n&&!e?a:i,_=s[t];return u<10?_.replace(\"%d\",s.numbers[u]):_.replace(\"%d\",u)}var i={name:\"fi\",weekdays:\"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),weekdaysShort:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),weekdaysMin:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),months:\"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\u00e4kuu_hein\u00e4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),monthsShort:\"tammi_helmi_maalis_huhti_touko_kes\u00e4_hein\u00e4_elo_syys_loka_marras_joulu\".split(\"_\"),ordinal:function(u){return u+\".\"},weekStart:1,yearStart:4,relativeTime:{future:\"%s p\u00e4\u00e4st\u00e4\",past:\"%s sitten\",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},formats:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM[ta] YYYY\",LLL:\"D. MMMM[ta] YYYY, [klo] HH.mm\",LLLL:\"dddd, D. MMMM[ta] YYYY, [klo] HH.mm\",l:\"D.M.YYYY\",ll:\"D. MMM YYYY\",lll:\"D. MMM YYYY, [klo] HH.mm\",llll:\"ddd, D. MMM YYYY, [klo] HH.mm\"}};return t.default.locale(i,null,!0),i}));","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_fr=n(e.dayjs)}(this,(function(e){\"use strict\";function n(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=n(e),i={name:\"fr\",weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_je_ve_sa\".split(\"_\"),months:\"janvier_f\u00e9vrier_mars_avril_mai_juin_juillet_ao\u00fbt_septembre_octobre_novembre_d\u00e9cembre\".split(\"_\"),monthsShort:\"janv._f\u00e9vr._mars_avr._mai_juin_juil._ao\u00fbt_sept._oct._nov._d\u00e9c.\".split(\"_\"),weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},ordinal:function(e){return\"\"+e+(1===e?\"er\":\"\")}};return t.default.locale(i,null,!0),i}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_hi=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"hi\",weekdays:\"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930\".split(\"_\"),months:\"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930\".split(\"_\"),weekdaysShort:\"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f\".split(\"_\"),monthsShort:\"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.\".split(\"_\"),weekdaysMin:\"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936\".split(\"_\"),ordinal:function(_){return _},formats:{LT:\"A h:mm \u092c\u091c\u0947\",LTS:\"A h:mm:ss \u092c\u091c\u0947\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm \u092c\u091c\u0947\",LLLL:\"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947\"},relativeTime:{future:\"%s \u092e\u0947\u0902\",past:\"%s \u092a\u0939\u0932\u0947\",s:\"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923\",m:\"\u090f\u0915 \u092e\u093f\u0928\u091f\",mm:\"%d \u092e\u093f\u0928\u091f\",h:\"\u090f\u0915 \u0918\u0902\u091f\u093e\",hh:\"%d \u0918\u0902\u091f\u0947\",d:\"\u090f\u0915 \u0926\u093f\u0928\",dd:\"%d \u0926\u093f\u0928\",M:\"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947\",MM:\"%d \u092e\u0939\u0940\u0928\u0947\",y:\"\u090f\u0915 \u0935\u0930\u094d\u0937\",yy:\"%d \u0935\u0930\u094d\u0937\"}};return t.default.locale(d,null,!0),d}));","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_hu=n(e.dayjs)}(this,(function(e){\"use strict\";function n(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=n(e),r={name:\"hu\",weekdays:\"vas\u00e1rnap_h\u00e9tf\u0151_kedd_szerda_cs\u00fct\u00f6rt\u00f6k_p\u00e9ntek_szombat\".split(\"_\"),weekdaysShort:\"vas_h\u00e9t_kedd_sze_cs\u00fct_p\u00e9n_szo\".split(\"_\"),weekdaysMin:\"v_h_k_sze_cs_p_szo\".split(\"_\"),months:\"janu\u00e1r_febru\u00e1r_m\u00e1rcius_\u00e1prilis_m\u00e1jus_j\u00fanius_j\u00falius_augusztus_szeptember_okt\u00f3ber_november_december\".split(\"_\"),monthsShort:\"jan_feb_m\u00e1rc_\u00e1pr_m\u00e1j_j\u00fan_j\u00fal_aug_szept_okt_nov_dec\".split(\"_\"),ordinal:function(e){return e+\".\"},weekStart:1,relativeTime:{future:\"%s m\u00falva\",past:\"%s\",s:function(e,n,t,r){return\"n\u00e9h\u00e1ny m\u00e1sodperc\"+(r||n?\"\":\"e\")},m:function(e,n,t,r){return\"egy perc\"+(r||n?\"\":\"e\")},mm:function(e,n,t,r){return e+\" perc\"+(r||n?\"\":\"e\")},h:function(e,n,t,r){return\"egy \"+(r||n?\"\u00f3ra\":\"\u00f3r\u00e1ja\")},hh:function(e,n,t,r){return e+\" \"+(r||n?\"\u00f3ra\":\"\u00f3r\u00e1ja\")},d:function(e,n,t,r){return\"egy \"+(r||n?\"nap\":\"napja\")},dd:function(e,n,t,r){return e+\" \"+(r||n?\"nap\":\"napja\")},M:function(e,n,t,r){return\"egy \"+(r||n?\"h\u00f3nap\":\"h\u00f3napja\")},MM:function(e,n,t,r){return e+\" \"+(r||n?\"h\u00f3nap\":\"h\u00f3napja\")},y:function(e,n,t,r){return\"egy \"+(r||n?\"\u00e9v\":\"\u00e9ve\")},yy:function(e,n,t,r){return e+\" \"+(r||n?\"\u00e9v\":\"\u00e9ve\")}},formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY. MMMM D.\",LLL:\"YYYY. MMMM D. H:mm\",LLLL:\"YYYY. MMMM D., dddd H:mm\"}};return t.default.locale(r,null,!0),r}));","!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],o):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_it=o(e.dayjs)}(this,(function(e){\"use strict\";function o(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=o(e),n={name:\"it\",weekdays:\"domenica_luned\u00ec_marted\u00ec_mercoled\u00ec_gioved\u00ec_venerd\u00ec_sabato\".split(\"_\"),weekdaysShort:\"dom_lun_mar_mer_gio_ven_sab\".split(\"_\"),weekdaysMin:\"do_lu_ma_me_gi_ve_sa\".split(\"_\"),months:\"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre\".split(\"_\"),weekStart:1,monthsShort:\"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic\".split(\"_\"),formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},relativeTime:{future:\"tra %s\",past:\"%s fa\",s:\"qualche secondo\",m:\"un minuto\",mm:\"%d minuti\",h:\"un' ora\",hh:\"%d ore\",d:\"un giorno\",dd:\"%d giorni\",M:\"un mese\",MM:\"%d mesi\",y:\"un anno\",yy:\"%d anni\"},ordinal:function(e){return e+\"\u00ba\"}};return t.default.locale(n,null,!0),n}));","!function(e,_){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=_(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],_):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_ja=_(e.dayjs)}(this,(function(e){\"use strict\";function _(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=_(e),d={name:\"ja\",weekdays:\"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5\".split(\"_\"),weekdaysShort:\"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f\".split(\"_\"),weekdaysMin:\"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f\".split(\"_\"),months:\"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708\".split(\"_\"),monthsShort:\"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708\".split(\"_\"),ordinal:function(e){return e+\"\u65e5\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY\u5e74M\u6708D\u65e5\",LLL:\"YYYY\u5e74M\u6708D\u65e5 HH:mm\",LLLL:\"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm\",l:\"YYYY/MM/DD\",ll:\"YYYY\u5e74M\u6708D\u65e5\",lll:\"YYYY\u5e74M\u6708D\u65e5 HH:mm\",llll:\"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm\"},meridiem:function(e){return e<12?\"\u5348\u524d\":\"\u5348\u5f8c\"},relativeTime:{future:\"%s\u5f8c\",past:\"%s\u524d\",s:\"\u6570\u79d2\",m:\"1\u5206\",mm:\"%d\u5206\",h:\"1\u6642\u9593\",hh:\"%d\u6642\u9593\",d:\"1\u65e5\",dd:\"%d\u65e5\",M:\"1\u30f6\u6708\",MM:\"%d\u30f6\u6708\",y:\"1\u5e74\",yy:\"%d\u5e74\"}};return t.default.locale(d,null,!0),d}));","!function(e,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],s):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_lt=s(e.dayjs)}(this,(function(e){\"use strict\";function s(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var i=s(e),d=\"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio\".split(\"_\"),a=\"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis\".split(\"_\"),l=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,M=function(e,s){return l.test(s)?d[e.month()]:a[e.month()]};M.s=a,M.f=d;var t={name:\"lt\",weekdays:\"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis\".split(\"_\"),weekdaysShort:\"sek_pir_ant_tre_ket_pen_\u0161e\u0161\".split(\"_\"),weekdaysMin:\"s_p_a_t_k_pn_\u0161\".split(\"_\"),months:M,monthsShort:\"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd\".split(\"_\"),ordinal:function(e){return e+\".\"},weekStart:1,relativeTime:{future:\"u\u017e %s\",past:\"prie\u0161 %s\",s:\"kelias sekundes\",m:\"minut\u0119\",mm:\"%d minutes\",h:\"valand\u0105\",hh:\"%d valandas\",d:\"dien\u0105\",dd:\"%d dienas\",M:\"m\u0117nes\u012f\",MM:\"%d m\u0117nesius\",y:\"metus\",yy:\"%d metus\"},format:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY [m.] MMMM D [d.]\",LLL:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",LLLL:\"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]\",l:\"YYYY-MM-DD\",ll:\"YYYY [m.] MMMM D [d.]\",lll:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",llll:\"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY [m.] MMMM D [d.]\",LLL:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",LLLL:\"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]\",l:\"YYYY-MM-DD\",ll:\"YYYY [m.] MMMM D [d.]\",lll:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",llll:\"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]\"}};return i.default.locale(t,null,!0),t}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ml=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"ml\",weekdays:\"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a\".split(\"_\"),months:\"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c\".split(\"_\"),weekdaysShort:\"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f\".split(\"_\"),monthsShort:\"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.\".split(\"_\"),weekdaysMin:\"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36\".split(\"_\"),ordinal:function(_){return _},formats:{LT:\"A h:mm -\u0d28\u0d41\",LTS:\"A h:mm:ss -\u0d28\u0d41\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm -\u0d28\u0d41\",LLLL:\"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41\"},relativeTime:{future:\"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d\",past:\"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d\",s:\"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e\",m:\"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d\",mm:\"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d\",h:\"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c\",hh:\"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c\",d:\"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02\",dd:\"%d \u0d26\u0d3f\u0d35\u0d38\u0d02\",M:\"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02\",MM:\"%d \u0d2e\u0d3e\u0d38\u0d02\",y:\"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02\",yy:\"%d \u0d35\u0d7c\u0d37\u0d02\"}};return t.default.locale(d,null,!0),d}));","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],a):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_nl=a(e.dayjs)}(this,(function(e){\"use strict\";function a(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var d=a(e),n={name:\"nl\",weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"zo_ma_di_wo_do_vr_za\".split(\"_\"),months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),ordinal:function(e){return\"[\"+e+(1===e||8===e||e>=20?\"ste\":\"de\")+\"]\"},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",m:\"een minuut\",mm:\"%d minuten\",h:\"een uur\",hh:\"%d uur\",d:\"een dag\",dd:\"%d dagen\",M:\"een maand\",MM:\"%d maanden\",y:\"een jaar\",yy:\"%d jaar\"}};return d.default.locale(n,null,!0),n}));","!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],o):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_pt_br=o(e.dayjs)}(this,(function(e){\"use strict\";function o(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var a=o(e),s={name:\"pt-br\",weekdays:\"domingo_segunda-feira_ter\u00e7a-feira_quarta-feira_quinta-feira_sexta-feira_s\u00e1bado\".split(\"_\"),weekdaysShort:\"dom_seg_ter_qua_qui_sex_s\u00e1b\".split(\"_\"),weekdaysMin:\"Do_2\u00aa_3\u00aa_4\u00aa_5\u00aa_6\u00aa_S\u00e1\".split(\"_\"),months:\"janeiro_fevereiro_mar\u00e7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro\".split(\"_\"),monthsShort:\"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez\".split(\"_\"),ordinal:function(e){return e+\"\u00ba\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY [\u00e0s] HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY [\u00e0s] HH:mm\"},relativeTime:{future:\"em %s\",past:\"h\u00e1 %s\",s:\"poucos segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um m\u00eas\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"}};return a.default.locale(s,null,!0),s}));","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],a):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_pt=a(e.dayjs)}(this,(function(e){\"use strict\";function a(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var o=a(e),t={name:\"pt\",weekdays:\"domingo_segunda-feira_ter\u00e7a-feira_quarta-feira_quinta-feira_sexta-feira_s\u00e1bado\".split(\"_\"),weekdaysShort:\"dom_seg_ter_qua_qui_sex_sab\".split(\"_\"),weekdaysMin:\"Do_2\u00aa_3\u00aa_4\u00aa_5\u00aa_6\u00aa_Sa\".split(\"_\"),months:\"janeiro_fevereiro_mar\u00e7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro\".split(\"_\"),monthsShort:\"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez\".split(\"_\"),ordinal:function(e){return e+\"\u00ba\"},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY [\u00e0s] HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY [\u00e0s] HH:mm\"},relativeTime:{future:\"em %s\",past:\"h\u00e1 %s\",s:\"alguns segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um m\u00eas\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"}};return o.default.locale(t,null,!0),t}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_ro=i(e.dayjs)}(this,(function(e){\"use strict\";function i(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=i(e),_={name:\"ro\",weekdays:\"Duminic\u0103_Luni_Mar\u021bi_Miercuri_Joi_Vineri_S\u00e2mb\u0103t\u0103\".split(\"_\"),weekdaysShort:\"Dum_Lun_Mar_Mie_Joi_Vin_S\u00e2m\".split(\"_\"),weekdaysMin:\"Du_Lu_Ma_Mi_Jo_Vi_S\u00e2\".split(\"_\"),months:\"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie\".split(\"_\"),monthsShort:\"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.\".split(\"_\"),weekStart:1,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},relativeTime:{future:\"peste %s\",past:\"acum %s\",s:\"c\u00e2teva secunde\",m:\"un minut\",mm:\"%d minute\",h:\"o or\u0103\",hh:\"%d ore\",d:\"o zi\",dd:\"%d zile\",M:\"o lun\u0103\",MM:\"%d luni\",y:\"un an\",yy:\"%d ani\"},ordinal:function(e){return e}};return t.default.locale(_,null,!0),_}));","!function(_,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ru=t(_.dayjs)}(this,(function(_){\"use strict\";function t(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var e=t(_),n=\"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f\".split(\"_\"),s=\"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c\".split(\"_\"),r=\"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.\".split(\"_\"),o=\"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.\".split(\"_\"),i=/D[oD]?(\\[[^[\\]]*\\]|\\s)+MMMM?/;function d(_,t,e){var n,s;return\"m\"===e?t?\"\u043c\u0438\u043d\u0443\u0442\u0430\":\"\u043c\u0438\u043d\u0443\u0442\u0443\":_+\" \"+(n=+_,s={mm:t?\"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442\":\"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442\",hh:\"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432\",dd:\"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439\",MM:\"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432\",yy:\"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442\"}[e].split(\"_\"),n%10==1&&n%100!=11?s[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?s[1]:s[2])}var u=function(_,t){return i.test(t)?n[_.month()]:s[_.month()]};u.s=s,u.f=n;var a=function(_,t){return i.test(t)?r[_.month()]:o[_.month()]};a.s=o,a.f=r;var m={name:\"ru\",weekdays:\"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430\".split(\"_\"),weekdaysShort:\"\u0432\u0441\u043a_\u043f\u043d\u0434_\u0432\u0442\u0440_\u0441\u0440\u0434_\u0447\u0442\u0432_\u043f\u0442\u043d_\u0441\u0431\u0442\".split(\"_\"),weekdaysMin:\"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431\".split(\"_\"),months:u,monthsShort:a,weekStart:1,yearStart:4,formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY \u0433.\",LLL:\"D MMMM YYYY \u0433., H:mm\",LLLL:\"dddd, D MMMM YYYY \u0433., H:mm\"},relativeTime:{future:\"\u0447\u0435\u0440\u0435\u0437 %s\",past:\"%s \u043d\u0430\u0437\u0430\u0434\",s:\"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\",m:d,mm:d,h:\"\u0447\u0430\u0441\",hh:d,d:\"\u0434\u0435\u043d\u044c\",dd:d,M:\"\u043c\u0435\u0441\u044f\u0446\",MM:d,y:\"\u0433\u043e\u0434\",yy:d},ordinal:function(_){return _},meridiem:function(_){return _<4?\"\u043d\u043e\u0447\u0438\":_<12?\"\u0443\u0442\u0440\u0430\":_<17?\"\u0434\u043d\u044f\":\"\u0432\u0435\u0447\u0435\u0440\u0430\"}};return e.default.locale(m,null,!0),m}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_si=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"si\",weekdays:\"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf\".split(\"_\"),months:\"\u0daf\u0dd4\u0dbb\u0dd4\u0dad\u0dd4_\u0db1\u0dc0\u0db8\u0dca_\u0db8\u0dd0\u0daf\u0dd2\u0db1\u0dca_\u0db6\u0d9a\u0dca_\u0dc0\u0dd9\u0dc3\u0d9a\u0dca_\u0db4\u0ddc\u0dc3\u0ddc\u0db1\u0dca_\u0d87\u0dc3\u0dc5_\u0db1\u0dd2\u0d9a\u0dd2\u0dab\u0dd2_\u0db6\u0dd2\u0db1\u0dbb_\u0dc0\u0db4\u0dca_\u0d89\u0dbd\u0dca_\u0d8b\u0db3\u0dd4\u0dc0\u0db4\u0dca\".split(\"_\"),weekdaysShort:\"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1\".split(\"_\"),monthsShort:\"\u0daf\u0dd4\u0dbb\u0dd4_\u0db1\u0dc0_\u0db8\u0dd0\u0daf\u0dd2_\u0db6\u0d9a\u0dca_\u0dc0\u0dd9\u0dc3_\u0db4\u0ddc\u0dc3\u0ddc_\u0d87\u0dc3_\u0db1\u0dd2\u0d9a\u0dd2_\u0db6\u0dd2\u0db1_\u0dc0\u0db4\u0dca_\u0d89\u0dbd\u0dca_\u0d8b\u0db3\u0dd4\".split(\"_\"),weekdaysMin:\"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9\".split(\"_\"),ordinal:function(_){return _},formats:{LT:\"a h:mm\",LTS:\"a h:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY MMMM D\",LLL:\"YYYY MMMM D, a h:mm\",LLLL:\"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss\"},relativeTime:{future:\"%s\u0d9a\u0dd2\u0db1\u0dca\",past:\"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb\",s:\"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba\",m:\"\u0dc0\u0dd2\u0db1\u0dcf\u0da9\u0dd2\u0dba\",mm:\"\u0dc0\u0dd2\u0db1\u0dcf\u0da9\u0dd2 %d\",h:\"\u0db4\u0dd0\u0dba\",hh:\"\u0db4\u0dd0\u0dba %d\",d:\"\u0daf\u0dd2\u0db1\u0dba\",dd:\"\u0daf\u0dd2\u0db1 %d\",M:\"\u0db8\u0dcf\u0dc3\u0dba\",MM:\"\u0db8\u0dcf\u0dc3 %d\",y:\"\u0dc0\u0dc3\u0dbb\",yy:\"\u0dc0\u0dc3\u0dbb %d\"}};return t.default.locale(d,null,!0),d}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_sk=t(e.dayjs)}(this,(function(e){\"use strict\";function t(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var n=t(e);function r(e){return e>1&&e<5&&1!=~~(e/10)}function o(e,t,n,o){var a=e+\" \";switch(n){case\"s\":return t||o?\"p\u00e1r sek\u00fand\":\"p\u00e1r sekundami\";case\"m\":return t?\"min\u00fata\":o?\"min\u00fatu\":\"min\u00fatou\";case\"mm\":return t||o?a+(r(e)?\"min\u00faty\":\"min\u00fat\"):a+\"min\u00fatami\";case\"h\":return t?\"hodina\":o?\"hodinu\":\"hodinou\";case\"hh\":return t||o?a+(r(e)?\"hodiny\":\"hod\u00edn\"):a+\"hodinami\";case\"d\":return t||o?\"de\u0148\":\"d\u0148om\";case\"dd\":return t||o?a+(r(e)?\"dni\":\"dn\u00ed\"):a+\"d\u0148ami\";case\"M\":return t||o?\"mesiac\":\"mesiacom\";case\"MM\":return t||o?a+(r(e)?\"mesiace\":\"mesiacov\"):a+\"mesiacmi\";case\"y\":return t||o?\"rok\":\"rokom\";case\"yy\":return t||o?a+(r(e)?\"roky\":\"rokov\"):a+\"rokmi\"}}var a={name:\"sk\",weekdays:\"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota\".split(\"_\"),weekdaysShort:\"ne_po_ut_st_\u0161t_pi_so\".split(\"_\"),weekdaysMin:\"ne_po_ut_st_\u0161t_pi_so\".split(\"_\"),months:\"janu\u00e1r_febru\u00e1r_marec_apr\u00edl_m\u00e1j_j\u00fan_j\u00fal_august_september_okt\u00f3ber_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_m\u00e1j_j\u00fan_j\u00fal_aug_sep_okt_nov_dec\".split(\"_\"),weekStart:1,yearStart:4,ordinal:function(e){return e+\".\"},formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\",l:\"D. M. YYYY\"},relativeTime:{future:\"za %s\",past:\"pred %s\",s:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o}};return n.default.locale(a,null,!0),a}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_sv=t(e.dayjs)}(this,(function(e){\"use strict\";function t(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var a=t(e),d={name:\"sv\",weekdays:\"s\u00f6ndag_m\u00e5ndag_tisdag_onsdag_torsdag_fredag_l\u00f6rdag\".split(\"_\"),weekdaysShort:\"s\u00f6n_m\u00e5n_tis_ons_tor_fre_l\u00f6r\".split(\"_\"),weekdaysMin:\"s\u00f6_m\u00e5_ti_on_to_fr_l\u00f6\".split(\"_\"),months:\"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekStart:1,yearStart:4,ordinal:function(e){var t=e%10;return\"[\"+e+(1===t||2===t?\"a\":\"e\")+\"]\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D MMMM YYYY [kl.] HH:mm\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd D MMM YYYY HH:mm\"},relativeTime:{future:\"om %s\",past:\"f\u00f6r %s sedan\",s:\"n\u00e5gra sekunder\",m:\"en minut\",mm:\"%d minuter\",h:\"en timme\",hh:\"%d timmar\",d:\"en dag\",dd:\"%d dagar\",M:\"en m\u00e5nad\",MM:\"%d m\u00e5nader\",y:\"ett \u00e5r\",yy:\"%d \u00e5r\"}};return a.default.locale(d,null,!0),d}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_ta=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"ta\",weekdays:\"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8\".split(\"_\"),months:\"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd\".split(\"_\"),weekdaysShort:\"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf\".split(\"_\"),monthsShort:\"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd\".split(\"_\"),weekdaysMin:\"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a\".split(\"_\"),ordinal:function(_){return _},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, HH:mm\",LLLL:\"dddd, D MMMM YYYY, HH:mm\"},relativeTime:{future:\"%s \u0b87\u0bb2\u0bcd\",past:\"%s \u0bae\u0bc1\u0ba9\u0bcd\",s:\"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd\",m:\"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd\",mm:\"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd\",h:\"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd\",hh:\"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd\",d:\"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd\",dd:\"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd\",M:\"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd\",MM:\"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd\",y:\"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd\",yy:\"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd\"}};return t.default.locale(d,null,!0),d}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_te=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"te\",weekdays:\"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02\".split(\"_\"),months:\"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d\".split(\"_\"),weekdaysShort:\"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f\".split(\"_\"),monthsShort:\"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.\".split(\"_\"),weekdaysMin:\"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36\".split(\"_\"),ordinal:function(_){return _},formats:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm\",LLLL:\"dddd, D MMMM YYYY, A h:mm\"},relativeTime:{future:\"%s \u0c32\u0c4b\",past:\"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02\",s:\"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41\",m:\"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02\",mm:\"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41\",h:\"\u0c12\u0c15 \u0c17\u0c02\u0c1f\",hh:\"%d \u0c17\u0c02\u0c1f\u0c32\u0c41\",d:\"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41\",dd:\"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41\",M:\"\u0c12\u0c15 \u0c28\u0c46\u0c32\",MM:\"%d \u0c28\u0c46\u0c32\u0c32\u0c41\",y:\"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02\",yy:\"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41\"}};return t.default.locale(d,null,!0),d}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_th=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"th\",weekdays:\"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c\".split(\"_\"),weekdaysShort:\"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c\".split(\"_\"),weekdaysMin:\"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.\".split(\"_\"),months:\"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21\".split(\"_\"),monthsShort:\"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.\".split(\"_\"),formats:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm\",LLLL:\"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm\"},relativeTime:{future:\"\u0e2d\u0e35\u0e01 %s\",past:\"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27\",s:\"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35\",m:\"1 \u0e19\u0e32\u0e17\u0e35\",mm:\"%d \u0e19\u0e32\u0e17\u0e35\",h:\"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\",hh:\"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\",d:\"1 \u0e27\u0e31\u0e19\",dd:\"%d \u0e27\u0e31\u0e19\",M:\"1 \u0e40\u0e14\u0e37\u0e2d\u0e19\",MM:\"%d \u0e40\u0e14\u0e37\u0e2d\u0e19\",y:\"1 \u0e1b\u0e35\",yy:\"%d \u0e1b\u0e35\"},ordinal:function(_){return _+\".\"}};return t.default.locale(d,null,!0),d}));","!function(a,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(a=\"undefined\"!=typeof globalThis?globalThis:a||self).dayjs_locale_tr=e(a.dayjs)}(this,(function(a){\"use strict\";function e(a){return a&&\"object\"==typeof a&&\"default\"in a?a:{default:a}}var t=e(a),_={name:\"tr\",weekdays:\"Pazar_Pazartesi_Sal\u0131_\u00c7ar\u015famba_Per\u015fembe_Cuma_Cumartesi\".split(\"_\"),weekdaysShort:\"Paz_Pts_Sal_\u00c7ar_Per_Cum_Cts\".split(\"_\"),weekdaysMin:\"Pz_Pt_Sa_\u00c7a_Pe_Cu_Ct\".split(\"_\"),months:\"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\u00fcl_Ekim_Kas\u0131m_Aral\u0131k\".split(\"_\"),monthsShort:\"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara\".split(\"_\"),weekStart:1,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},relativeTime:{future:\"%s sonra\",past:\"%s \u00f6nce\",s:\"birka\u00e7 saniye\",m:\"bir dakika\",mm:\"%d dakika\",h:\"bir saat\",hh:\"%d saat\",d:\"bir g\u00fcn\",dd:\"%d g\u00fcn\",M:\"bir ay\",MM:\"%d ay\",y:\"bir y\u0131l\",yy:\"%d y\u0131l\"},ordinal:function(a){return a+\".\"}};return t.default.locale(_,null,!0),_}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_uz=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"uz\",weekdays:\"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430\".split(\"_\"),months:\"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440\".split(\"_\"),weekStart:1,weekdaysShort:\"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d\".split(\"_\"),monthsShort:\"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a\".split(\"_\"),weekdaysMin:\"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430\".split(\"_\"),ordinal:function(_){return _},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"D MMMM YYYY, dddd HH:mm\"},relativeTime:{future:\"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430\",past:\"%s \u043e\u043b\u0434\u0438\u043d\",s:\"\u0444\u0443\u0440\u0441\u0430\u0442\",m:\"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430\",mm:\"%d \u0434\u0430\u043a\u0438\u043a\u0430\",h:\"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442\",hh:\"%d \u0441\u043e\u0430\u0442\",d:\"\u0431\u0438\u0440 \u043a\u0443\u043d\",dd:\"%d \u043a\u0443\u043d\",M:\"\u0431\u0438\u0440 \u043e\u0439\",MM:\"%d \u043e\u0439\",y:\"\u0431\u0438\u0440 \u0439\u0438\u043b\",yy:\"%d \u0439\u0438\u043b\"}};return t.default.locale(d,null,!0),d}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_locale_vi=n(t.dayjs)}(this,(function(t){\"use strict\";function n(t){return t&&\"object\"==typeof t&&\"default\"in t?t:{default:t}}var h=n(t),_={name:\"vi\",weekdays:\"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\u00e1u_th\u1ee9 b\u1ea3y\".split(\"_\"),months:\"th\u00e1ng 1_th\u00e1ng 2_th\u00e1ng 3_th\u00e1ng 4_th\u00e1ng 5_th\u00e1ng 6_th\u00e1ng 7_th\u00e1ng 8_th\u00e1ng 9_th\u00e1ng 10_th\u00e1ng 11_th\u00e1ng 12\".split(\"_\"),weekStart:1,weekdaysShort:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),monthsShort:\"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12\".split(\"_\"),weekdaysMin:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),ordinal:function(t){return t},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [n\u0103m] YYYY\",LLL:\"D MMMM [n\u0103m] YYYY HH:mm\",LLLL:\"dddd, D MMMM [n\u0103m] YYYY HH:mm\",l:\"DD/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},relativeTime:{future:\"%s t\u1edbi\",past:\"%s tr\u01b0\u1edbc\",s:\"v\u00e0i gi\u00e2y\",m:\"m\u1ed9t ph\u00fat\",mm:\"%d ph\u00fat\",h:\"m\u1ed9t gi\u1edd\",hh:\"%d gi\u1edd\",d:\"m\u1ed9t ng\u00e0y\",dd:\"%d ng\u00e0y\",M:\"m\u1ed9t th\u00e1ng\",MM:\"%d th\u00e1ng\",y:\"m\u1ed9t n\u0103m\",yy:\"%d n\u0103m\"}};return h.default.locale(_,null,!0),_}));","!function(e,_){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=_(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],_):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_zh_cn=_(e.dayjs)}(this,(function(e){\"use strict\";function _(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=_(e),d={name:\"zh-cn\",weekdays:\"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d\".split(\"_\"),weekdaysShort:\"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d\".split(\"_\"),weekdaysMin:\"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d\".split(\"_\"),months:\"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708\".split(\"_\"),monthsShort:\"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708\".split(\"_\"),ordinal:function(e,_){return\"W\"===_?e+\"\u5468\":e+\"\u65e5\"},weekStart:1,yearStart:4,formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY\u5e74M\u6708D\u65e5\",LLL:\"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206\",LLLL:\"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206\",l:\"YYYY/M/D\",ll:\"YYYY\u5e74M\u6708D\u65e5\",lll:\"YYYY\u5e74M\u6708D\u65e5 HH:mm\",llll:\"YYYY\u5e74M\u6708D\u65e5dddd HH:mm\"},relativeTime:{future:\"%s\u5185\",past:\"%s\u524d\",s:\"\u51e0\u79d2\",m:\"1 \u5206\u949f\",mm:\"%d \u5206\u949f\",h:\"1 \u5c0f\u65f6\",hh:\"%d \u5c0f\u65f6\",d:\"1 \u5929\",dd:\"%d \u5929\",M:\"1 \u4e2a\u6708\",MM:\"%d \u4e2a\u6708\",y:\"1 \u5e74\",yy:\"%d \u5e74\"},meridiem:function(e,_){var t=100*e+_;return t<600?\"\u51cc\u6668\":t<900?\"\u65e9\u4e0a\":t<1100?\"\u4e0a\u5348\":t<1300?\"\u4e2d\u5348\":t<1800?\"\u4e0b\u5348\":\"\u665a\u4e0a\"}};return t.default.locale(d,null,!0),d}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_zh_hk=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"zh-hk\",months:\"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708\".split(\"_\"),monthsShort:\"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708\".split(\"_\"),weekdays:\"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d\".split(\"_\"),weekdaysShort:\"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d\".split(\"_\"),weekdaysMin:\"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d\".split(\"_\"),ordinal:function(_,e){return\"W\"===e?_+\"\u9031\":_+\"\u65e5\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY\u5e74M\u6708D\u65e5\",LLL:\"YYYY\u5e74M\u6708D\u65e5 HH:mm\",LLLL:\"YYYY\u5e74M\u6708D\u65e5dddd HH:mm\"},relativeTime:{future:\"%s\u5167\",past:\"%s\u524d\",s:\"\u5e7e\u79d2\",m:\"\u4e00\u5206\u9418\",mm:\"%d \u5206\u9418\",h:\"\u4e00\u5c0f\u6642\",hh:\"%d \u5c0f\u6642\",d:\"\u4e00\u5929\",dd:\"%d \u5929\",M:\"\u4e00\u500b\u6708\",MM:\"%d \u500b\u6708\",y:\"\u4e00\u5e74\",yy:\"%d \u5e74\"}};return t.default.locale(d,null,!0),d}));","!function(_,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],e):(_=\"undefined\"!=typeof globalThis?globalThis:_||self).dayjs_locale_zh_tw=e(_.dayjs)}(this,(function(_){\"use strict\";function e(_){return _&&\"object\"==typeof _&&\"default\"in _?_:{default:_}}var t=e(_),d={name:\"zh-tw\",weekdays:\"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d\".split(\"_\"),weekdaysShort:\"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d\".split(\"_\"),weekdaysMin:\"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d\".split(\"_\"),months:\"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708\".split(\"_\"),monthsShort:\"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708\".split(\"_\"),ordinal:function(_,e){return\"W\"===e?_+\"\u9031\":_+\"\u65e5\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY\u5e74M\u6708D\u65e5\",LLL:\"YYYY\u5e74M\u6708D\u65e5 HH:mm\",LLLL:\"YYYY\u5e74M\u6708D\u65e5dddd HH:mm\",l:\"YYYY/M/D\",ll:\"YYYY\u5e74M\u6708D\u65e5\",lll:\"YYYY\u5e74M\u6708D\u65e5 HH:mm\",llll:\"YYYY\u5e74M\u6708D\u65e5dddd HH:mm\"},relativeTime:{future:\"%s\u5167\",past:\"%s\u524d\",s:\"\u5e7e\u79d2\",m:\"1 \u5206\u9418\",mm:\"%d \u5206\u9418\",h:\"1 \u5c0f\u6642\",hh:\"%d \u5c0f\u6642\",d:\"1 \u5929\",dd:\"%d \u5929\",M:\"1 \u500b\u6708\",MM:\"%d \u500b\u6708\",y:\"1 \u5e74\",yy:\"%d \u5e74\"},meridiem:function(_,e){var t=100*_+e;return t<600?\"\u51cc\u6668\":t<900?\"\u65e9\u4e0a\":t<1100?\"\u4e0a\u5348\":t<1300?\"\u4e2d\u5348\":t<1800?\"\u4e0b\u5348\":\"\u665a\u4e0a\"}};return t.default.locale(d,null,!0),d}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/User'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SignUpModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/EditUserModal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SettingsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/FieldSet'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/Stream'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport Stream from 'flarum/common/utils/Stream';\n\nexport default class ChangeBirthdayModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.birthday = Stream(app.session.user.birthday());\n }\n\n className() {\n return 'ChangeBirthdayModal Modal--small';\n }\n\n title() {\n return app.translator.trans('datlechin-birthdays.forum.change_dob.title');\n }\n\n content() {\n return (\n <div className=\"Modal-body\">\n <div className=\"Form\">\n <div className=\"Form-group\">\n <label>{app.translator.trans('datlechin-birthdays.forum.change_dob.date_of_birth_text')}</label>\n <input type=\"date\" name=\"birthday\" className=\"FormControl\" bidi={this.birthday} disabled={this.loading} />\n </div>\n <div className=\"Form-group\">\n {Button.component(\n {\n className: 'Button Button--primary',\n type: 'submit',\n loading: this.loading,\n },\n app.translator.trans('datlechin-birthdays.forum.change_dob.submit_button')\n )}\n </div>\n </div>\n </div>\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (this.birthday() === app.session.user.birthday() && this.birthday() !== null) {\n this.hide();\n return;\n }\n\n this.loading = true;\n this.alertAttrs = null;\n\n app.session.user\n .save({ birthday: this.birthday() }, { errorHandler: this.onerror.bind(this) })\n .then(() => {\n this.success = true;\n this.hide();\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n onerror(error) {\n super.onerror(error);\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import Page from 'flarum/common/components/Page';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport listItems from 'flarum/common/helpers/listItems';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport Link from 'flarum/common/components/Link';\n\nexport default class BirthdaysPage extends Page {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.loading = true;\n\n this.users = [];\n\n this.setResults(this.loadUsers());\n }\n\n view() {\n if (this.loading) {\n return <LoadingIndicator />;\n }\n\n return (\n <div className=\"BirthdaysPage\">\n {IndexPage.prototype.hero()}\n <div className=\"container\">\n <div className=\"sideNavContainer\">\n <nav className=\"IndexPage-nav sideNav\">\n <ul>{listItems(IndexPage.prototype.sidebarItems().toArray())}</ul>\n </nav>\n <div className=\"IndexPage-results sideNavOffset\">\n <div className=\"UserBirthdaysList\">\n <ul className=\"UserBirthdaysList-users\">\n {this.users.map((user) => (\n <li>\n <Link href={app.route.user(user)}>{avatar(user)}</Link>\n <div className=\"UserBirthdaysList-main\">\n <Link href={app.route.user(user)}>{username(user)}</Link>\n <ul className=\"UserStats\">\n <li>{app.translator.trans('datlechin-birthdays.forum.page.discussion_count', { count: user.discussionCount() })}</li>\n <li>{app.translator.trans('datlechin-birthdays.forum.page.post_count', { count: user.commentCount() })}</li>\n </ul>\n </div>\n </li>\n ))}\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n loadUsers() {\n const today = dayjs().format('YYYY-MM-DD');\n return app.store.find('users', {\n filter: {\n birthday: today,\n },\n });\n }\n\n setResults(results) {\n results.then((users) => {\n this.users = users;\n this.loading = false;\n m.redraw();\n });\n }\n}\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport User from 'flarum/common/models/User';\nimport Model from 'flarum/common/Model';\nimport SignUpModal from 'flarum/forum/components/SignUpModal';\nimport EditUserModal from 'flarum/common/components/EditUserModal';\nimport Button from 'flarum/common/components/Button';\nimport SettingsPage from 'flarum/forum/components/SettingsPage';\nimport FieldSet from 'flarum/common/components/FieldSet';\nimport Switch from 'flarum/common/components/Switch';\nimport Stream from 'flarum/common/utils/Stream';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport icon from 'flarum/common/helpers/icon';\nimport dayjs from 'dayjs';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\n\nimport 'dayjs/locale/vi';\nimport 'dayjs/locale/tr';\nimport 'dayjs/locale/nl';\nimport 'dayjs/locale/az';\nimport 'dayjs/locale/ml';\nimport 'dayjs/locale/ja';\nimport 'dayjs/locale/ta';\nimport 'dayjs/locale/de';\nimport 'dayjs/locale/hu';\nimport 'dayjs/locale/ru';\nimport 'dayjs/locale/it';\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/si';\nimport 'dayjs/locale/pt-br';\nimport 'dayjs/locale/pt';\nimport 'dayjs/locale/es';\nimport 'dayjs/locale/zh-hk';\nimport 'dayjs/locale/zh-tw';\nimport 'dayjs/locale/zh-cn';\nimport 'dayjs/locale/uz';\nimport 'dayjs/locale/th';\nimport 'dayjs/locale/hi';\nimport 'dayjs/locale/fi';\nimport 'dayjs/locale/ro';\nimport 'dayjs/locale/te';\nimport 'dayjs/locale/lt';\nimport 'dayjs/locale/sk';\nimport 'dayjs/locale/sv';\nimport 'dayjs/locale/fa';\n\nimport ChangeBirthdayModal from './components/ChangeBirthdayModal';\nimport calculateAge from './helpers/calculateAge';\nimport BirthdaysPage from './components/BirthdaysPage';\n\ndayjs.extend(LocalizedFormat);\n\napp.routes.birthdays = { path: '/birthdays', component: BirthdaysPage };\napp.initializers.add('datlechin/flarum-birthdays', () => {\n User.prototype.birthday = Model.attribute('birthday');\n User.prototype.showDobDate = Model.attribute('showDobDate');\n User.prototype.showDobYear = Model.attribute('showDobYear');\n User.prototype.canEditOwnBirthday = Model.attribute('canEditOwnBirthday');\n\n extend(UserCard.prototype, 'infoItems', function (items) {\n const user = this.attrs.user;\n const userLocale = user.preferences()?.locale || app.translator.formatter.locale;\n const dateFormat = app.forum.attribute('datlechin-birthdays.dateFormat') || 'LL';\n const dateNoneYearFormat = app.forum.attribute('datlechin-birthdays.dateNoneYearFormat') || 'DD MMMM';\n let birthday = user.birthday();\n const age = calculateAge(birthday);\n\n dayjs.locale(userLocale);\n\n if (birthday === null) return;\n\n if (user.showDobDate() && user.showDobYear()) birthday = dayjs(birthday).locale(userLocale).format(dateFormat);\n else if (user.showDobDate() === true && user.showDobYear() === false) birthday = dayjs(birthday).format(dateNoneYearFormat);\n else if (user.showDobDate() === false && user.showDobYear() === true) birthday = dayjs(birthday).locale(userLocale).format('YYYY');\n else return;\n\n items.add(\n 'birthday',\n <>\n {icon('fas fa-birthday-cake')}\n <span className=\"birthday\">{app.translator.trans('datlechin-birthdays.forum.user.birthday_text', { date: birthday })}</span>\n {user.showDobYear() ? <span className=\"age\">({app.translator.trans('datlechin-birthdays.forum.user.age_text', { age: age })})</span> : null}\n </>\n );\n });\n\n extend(EditUserModal.prototype, 'oninit', function () {\n this.birthday = Stream(this.attrs.user.birthday());\n });\n\n extend(EditUserModal.prototype, 'fields', function (items) {\n items.add(\n 'birthday',\n <div className=\"Form-group\">\n <label>{app.translator.trans('datlechin-birthdays.forum.edit_user.dob_heading')}</label>\n <input className=\"FormControl\" type=\"date\" bidi={this.birthday} />\n </div>,\n 30\n );\n });\n\n extend(EditUserModal.prototype, 'data', function (data) {\n data.birthday = this.birthday();\n });\n\n extend(SignUpModal.prototype, 'oninit', function () {\n if (app.forum.attribute('datlechin-birthdays.setBirthdayOnRegistration')) {\n this.birthday = Stream(this.attrs.birthday || '');\n }\n });\n\n extend(SignUpModal.prototype, 'fields', function (items) {\n if (app.forum.attribute('datlechin-birthdays.setBirthdayOnRegistration')) {\n items.add(\n 'birthday',\n <div className=\"Form-group\">\n <input\n className=\"FormControl birthday\"\n name=\"birthday\"\n type=\"text\"\n bidi={this.birthday}\n disabled={this.loading}\n placeholder={app.translator.trans('datlechin-birthdays.forum.sign_up.dob_placeholder')}\n onfocus={(e) => {\n e.target.type = 'date';\n }}\n />\n </div>,\n 20\n );\n }\n });\n\n extend(SignUpModal.prototype, 'submitData', function (data) {\n if (app.forum.attribute('datlechin-birthdays.setBirthdayOnRegistration')) {\n data.birthday = this.birthday();\n }\n });\n\n extend(SettingsPage.prototype, 'settingsItems', function (items) {\n if (this.user.canEditOwnBirthday()) {\n items.add(\n 'birthday',\n <FieldSet className=\"Settings-birthday\" label={app.translator.trans(`datlechin-birthdays.forum.settings.dob_heading`)}>\n <Switch\n state={this.user.showDobDate()}\n onchange={(value) => {\n this.showDobDateLoading = true;\n\n this.user.save({ showDobDate: value }).then(() => {\n this.showDobDateLoading = false;\n m.redraw();\n });\n }}\n loading={this.showDobDateLoading}\n >\n {app.translator.trans('datlechin-birthdays.forum.settings.show_dob_date_label')}\n </Switch>\n <Switch\n state={this.user.showDobYear()}\n onchange={(value) => {\n this.showDobYearLoading = true;\n\n this.user.save({ showDobYear: value }).then(() => {\n this.showDobYearLoading = false;\n m.redraw();\n });\n }}\n loading={this.showDobYearLoading}\n >\n {app.translator.trans('datlechin-birthdays.forum.settings.show_dob_year_label')}\n </Switch>\n <span className=\"helpText\">{app.translator.trans('datlechin-birthdays.forum.settings.show_dob_year_help')}</span>\n </FieldSet>\n );\n }\n });\n\n extend(SettingsPage.prototype, 'accountItems', function (items) {\n if (this.user.canEditOwnBirthday()) {\n items.add(\n 'changeBirthday',\n <Button className=\"Button\" onclick={() => app.modal.show(ChangeBirthdayModal)}>\n {app.translator.trans('datlechin-birthdays.forum.settings.change_dob_label')}\n </Button>\n );\n }\n });\n\n extend(IndexPage.prototype, 'navItems', (items) => {\n const user = app.session.user;\n\n if (user || app.forum.attribute('canSearchUsers')) {\n items.add(\n 'birthdays',\n LinkButton.component(\n {\n icon: 'fas fa-birthday-cake',\n href: app.route('birthdays'),\n },\n app.translator.trans('datlechin-birthdays.forum.nav.nav_item')\n )\n );\n }\n });\n});\n","export default function calculateAge(birthday) {\n let today = new Date();\n let birthDate = new Date(birthday);\n let age = today.getFullYear() - birthDate.getFullYear();\n let m = today.getMonth() - birthDate.getMonth();\n if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\n age--;\n }\n return age;\n}\n","var inProgress = {};\nvar dataWebpackPrefix = \"module.exports:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n 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 function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return {\n value: void 0,\n done: !0\n };\n }\n for (context.method = method, context.arg = arg;;) {\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 if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable || \"\" === iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n throw new TypeError(_typeof(iterable) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"chunk~\" + \"swiper\" + \".js?ver=\" + \"f3973a8200b5c2017413\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t315: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmodule_exports\"] = self[\"webpackChunkmodule_exports\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\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 if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\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 function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ComposerPostPreview'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/ReplyPlaceholder'];","import app from 'flarum/forum/app';\nimport { extend, override } from 'flarum/common/extend';\nimport CommentPost from 'flarum/forum/components/CommentPost';\n\nimport type SwiperType from 'swiper';\nimport { SwiperModule, SwiperOptions } from 'swiper/types';\n\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport ComposerPostPreview from 'flarum/forum/components/ComposerPostPreview';\nimport ReplyPlaceholder from 'flarum/forum/components/ReplyPlaceholder';\n\nimport getSwiper from './Swiper';\n\nconst swiperOptions: SwiperOptions = {\n centeredSlides: true,\n centeredSlidesBounds: true,\n spaceBetween: 30,\n zoom: true,\n\n pagination: {\n el: '.swiper-pagination',\n type: 'fraction',\n },\n\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n};\nlet loadedSwiperCSS = false;\n\nconst obtainSwiper = async () => {\n if (!loadedSwiperCSS) {\n document.head.innerHTML += '<link\\n' + ' rel=\"stylesheet\"\\n' + ' href=\"https://unpkg.com/swiper@10/swiper-bundle.min.css\"\\n' + '/>';\n loadedSwiperCSS = true;\n }\n\n try {\n return await getSwiper();\n } catch (err) {\n console.error('Failed to load Swiper.', err);\n }\n\n return null;\n};\n\nconst createGalleries = async ($container: JQuery<HTMLElement>, galleries: SwiperType[]) => {\n const $elements = $container.find('img:not(.emoji) + br + img:last-of-type, a:has(img:not(.emoji)) + br + a:has(img:not(.emoji)):last-of-type');\n\n if (!$elements.length) return;\n\n const useZoom = app.forum.attribute('useSwiperZoom');\n\n const { Swiper, Navigation, Pagination, Zoom } = (await obtainSwiper()) || {};\n\n if (!Swiper) return;\n\n const opts = {\n modules: [Navigation, Pagination, useZoom && Zoom].filter(Boolean) as SwiperModule[],\n ...swiperOptions,\n };\n\n $elements.each(function (this: HTMLElement) {\n if (this.hasAttribute('data-flarum-post-gallery')) return;\n\n this.setAttribute('data-flarum-post-gallery', '');\n\n const images = $(this).siblings('img:not(.emoji), a:has(img:not(.emoji))').add(this);\n\n $(images).siblings('br').remove();\n\n images.wrapAll($('<div/>').addClass('swiper-wrapper')).wrap($('<div/>').addClass('swiper-slide'));\n\n if (useZoom) {\n images.wrap($('<div/>').addClass('swiper-zoom-container'));\n }\n\n const swiperWrapper = $(this).closest('.swiper-wrapper')[0]!;\n\n $(swiperWrapper).wrap($('<div/>').addClass('swiper'));\n\n const swiperEl = swiperWrapper.parentElement!;\n\n $(swiperEl)\n .append($('<div/>').addClass('swiper-pagination'))\n .append($('<div/>').addClass('swiper-button-prev'))\n .append($('<div/>').addClass('swiper-button-next'));\n\n galleries.push(new Swiper(swiperEl, opts));\n });\n};\n\nconst destroyGalleries = (galleries: SwiperType[]) => {\n galleries?.forEach((gallery) => gallery.destroy());\n return [];\n};\n\nconst registerDestroy = (prototype: any) => {\n extend(prototype, 'onremove', function () {\n this.galleries = destroyGalleries(this.galleries);\n });\n};\n\nconst register = (prototype: any, selector?: string) => {\n extend(prototype, ['oncreate', 'onupdate'], function () {\n const $container = this.$(selector);\n\n if ($container.length) {\n this.galleries = destroyGalleries(this.imageGallery);\n\n createGalleries($container, this.galleries);\n }\n });\n\n registerDestroy(prototype);\n};\n\napp.initializers.add('datitisev/flarum-post-galleries', () => {\n register(CommentPost.prototype, '.Post-body');\n register(DiscussionListItem.prototype, '.DiscussionListItem-info');\n\n extend(ComposerPostPreview.prototype, 'oncreate', function (this: any) {\n override(this.attrs, 'surround', (orig, ...args) => {\n orig(...args);\n\n this.galleries = destroyGalleries(this.galleries);\n\n createGalleries(this.$(), this.galleries);\n });\n });\n\n extend(ComposerPostPreview.prototype, 'onremove', function (this: any) {\n this.galleries = destroyGalleries(this.galleries);\n });\n\n extend(ReplyPlaceholder.prototype, 'anchorPreview', function (this: any) {\n this.galleries = destroyGalleries(this.galleries);\n\n createGalleries(this.$('.Post-body'), this.galleries);\n });\n\n registerDestroy(ComposerPostPreview.prototype);\n registerDestroy(ReplyPlaceholder.prototype);\n});\n","import app from 'flarum/forum/app';\n\nexport default () => {\n __webpack_public_path__ = `${app.forum.attribute('baseUrl')}/assets/extensions/datitisev-post-galleries/`;\n\n return import(/* webpackChunkName: 'swiper' */ './external/Swiper');\n};\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/AvatarEditor'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","import app from 'flarum/forum/app';\nimport Modal, {IInternalModalAttrs} from 'flarum/common/components/Modal';\nimport User from 'flarum/common/models/User';\n\ninterface AvatarModalAttrs extends IInternalModalAttrs {\n user: User\n}\n\nexport default class AvatarModal extends Modal<AvatarModalAttrs> {\n className() {\n return 'SetPredefinedAvatarModal';\n }\n\n title() {\n return app.translator.trans('clarkwinkelmann-predefined-avatars.forum.modal.title');\n }\n\n content() {\n const avatars = app.forum.attribute('predefinedAvatars') as string[];\n\n return m('.Modal-body', avatars.map(avatar => m('a.Avatar.Avatar--predefined', {\n onclick: () => {\n this.attrs.user.save({\n predefinedAvatar: avatar,\n }).then(() => {\n this.hide();\n });\n },\n }, m('img', {\n src: app.forum.attribute('predefinedAvatarsPrefix') + avatar,\n alt: app.translator.trans('clarkwinkelmann-predefined-avatars.forum.modal.imageAlt'),\n }))));\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import app from 'flarum/forum/app';\nimport {extend, override} from 'flarum/common/extend';\nimport User from 'flarum/common/models/User';\nimport AvatarEditor from 'flarum/forum/components/AvatarEditor';\nimport Button from 'flarum/common/components/Button';\nimport AvatarModal from './components/AvatarModal';\n\napp.initializers.add('clarkwinkelmann-predefined-avatars', () => {\n extend(AvatarEditor.prototype, 'controlItems', function (items) {\n // @ts-ignore attrs is protected\n const user = this.attrs.user as User;\n\n // Hide the \"remove\" button when we open the dropdown despite being no avatar\n if ((!user.avatarUrl() || app.forum.attribute('cannotRemoveAvatar')) && items.has('remove')) {\n items.remove('remove');\n }\n\n if (app.forum.attribute('cannotSetCustomAvatar') && items.has('upload')) {\n items.remove('upload');\n }\n\n if (app.forum.attribute('canSetPredefinedAvatar')) {\n items.add('predefined-avatars', Button.component({\n icon: 'fas fa-user-circle',\n onclick: () => {\n app.modal.show(AvatarModal, {\n user,\n });\n },\n }, app.translator.trans('clarkwinkelmann-predefined-avatars.forum.editor.setPredefinedAvatar')));\n }\n });\n\n override(AvatarEditor.prototype, 'quickUpload', function (this: AvatarEditor, original: any, event: Event) {\n if (!app.forum.attribute('canSetPredefinedAvatar')) {\n return original(event);\n }\n\n // @ts-ignore attrs is protected\n const user = this.attrs.user as User;\n\n // If user can use predefined but not custom, open predefined modal right away\n if (\n app.forum.attribute('cannotSetCustomAvatar') &&\n (!user.avatarUrl() || app.forum.attribute('cannotRemoveAvatar'))) {\n // Do not open dropdown\n event.preventDefault();\n event.stopPropagation();\n\n app.modal.show(AvatarModal, {\n user,\n });\n\n return;\n }\n\n // Do nothing. This will always open the dropdown\n });\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/utils/UserControls'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SessionDropdown'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Modal'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Switch'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Group'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/KeyboardNavigatable'];","import app from 'flarum/forum/app';\nimport Modal, {IInternalModalAttrs} from 'flarum/common/components/Modal';\nimport icon from 'flarum/common/helpers/icon';\n\ninterface SentModalAttrs extends IInternalModalAttrs {\n recipientsCount: number\n}\n\nexport default class SentModal extends Modal<SentModalAttrs> {\n className() {\n return 'KilowhatMailingSentModal Modal--small';\n }\n\n title() {\n return app.translator.trans('clarkwinkelmann-mailing.forum.modal_sent.title_text');\n }\n\n content() {\n return [\n m('.MailingShipping', icon('fas fa-shipping-fast')),\n m('.Modal-body', [\n m('h1', app.translator.trans('clarkwinkelmann-mailing.forum.modal_sent.on_its_way', {\n recipientsCount: this.attrs.recipientsCount,\n })),\n ]),\n ];\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Model from 'flarum/common/Model';\n\nexport default class Email extends Model {\n email = Model.attribute<string>('email');\n}\n","import {Vnode} from 'mithril';\nimport app from 'flarum/forum/app';\nimport Modal, {IInternalModalAttrs} from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport Switch from 'flarum/common/components/Switch';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport Group from 'flarum/common/models/Group';\nimport User from 'flarum/common/models/User';\nimport username from 'flarum/common/helpers/username';\nimport icon from 'flarum/common/helpers/icon';\nimport KeyboardNavigatable from 'flarum/common/utils/KeyboardNavigatable';\nimport SentModal from './SentModal';\nimport Email from '../models/Email';\n\nconst EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;\n\ninterface EmailUserModalAttrs extends IInternalModalAttrs {\n user?: User\n forAll?: boolean\n}\n\ntype Recipient = Group | User | Email;\n\nexport default class EmailUserModal extends Modal<EmailUserModalAttrs> {\n sending: boolean = false\n recipients: Recipient[] = []\n subject: string = ''\n messageText: string = ''\n asHtml: boolean = false\n searchIndex: number = 0\n navigator: KeyboardNavigatable = new KeyboardNavigatable()\n filter: string = ''\n focused: boolean = false\n loadingResults: boolean = false\n searchResults: any[] = []\n searchTimeout: number = -1\n\n oninit(vnode: Vnode) {\n super.oninit(vnode);\n\n this.recipients = [];\n\n if (this.attrs.user) {\n this.recipients.push(this.attrs.user);\n }\n\n if (this.attrs.forAll) {\n const membersGroup = app.store.getById<Group>('groups', Group.MEMBER_ID)!;\n\n this.recipients.push(membersGroup);\n }\n\n this.navigator\n .when(event => {\n // Do not handle keyboard when TAB is pressed and there's nothing in field\n // Without this it's impossible to TAB out of the field\n return event.key !== 'Tab' || !!this.filter;\n })\n .onUp(() => {\n if (this.searchIndex > 0) {\n this.searchIndex--;\n m.redraw();\n }\n })\n .onDown(() => {\n if (this.searchIndex < this.searchResults.length - 1) {\n this.searchIndex++;\n m.redraw();\n }\n })\n .onSelect(() => {\n this.selectResult(this.searchResults[this.searchIndex]);\n })\n .onRemove(() => {\n this.recipients.pop();\n });\n }\n\n className() {\n return 'KilowhatMailingModal Modal--large';\n }\n\n title() {\n return app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.title_text');\n }\n\n onready() {\n // Override the default autofocus method to focus the title field instead of the first field of the modal\n this.$('form').find('.js-focus-on-load').first().focus().select();\n }\n\n recipientLabel(recipient: Recipient) {\n switch (recipient.data.type) {\n case 'users':\n return m('.RecipientLabel', username(recipient as User));\n case 'groups':\n const group = recipient as Group;\n return m('.RecipientLabel', group.color() ? {\n className: 'colored',\n style: {\n backgroundColor: group.color(),\n },\n } : {}, [\n group.icon() ? [\n icon(group.icon()!),\n ' ',\n ] : null,\n group.namePlural(),\n ]);\n case 'clarkwinkelmann-mailing-emails':\n return m('.RecipientLabel', (recipient as Email).email());\n }\n\n return '[unknown]';\n }\n\n searchResultKind(recipient: Recipient) {\n switch (recipient.data.type) {\n case 'users':\n return app.translator.trans('clarkwinkelmann-mailing.forum.recipient_kinds.user');\n case 'groups':\n return app.translator.trans('clarkwinkelmann-mailing.forum.recipient_kinds.group');\n case 'clarkwinkelmann-mailing-emails':\n return app.translator.trans('clarkwinkelmann-mailing.forum.recipient_kinds.email');\n }\n\n return '[unknown]';\n }\n\n selectResult(result: Recipient | null) {\n if (!result) {\n return;\n }\n\n this.recipients.push(result);\n this.filter = '';\n this.searchResults = [];\n }\n\n content() {\n return m('.Modal-body', m('form.Form', {\n onsubmit: this.onsubmit.bind(this),\n }, [\n m('.Form-group', [\n m('label', app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.recipients_label')),\n m('.RecipientsInput.FormControl', {\n className: this.focused ? 'focus' : '',\n }, [\n m('span.RecipientsInput-selected', this.recipients.map((recipient, index) => m('span.RecipientsInput-recipient', {\n onclick: () => {\n this.recipients.splice(index, 1);\n },\n title: this.searchResultKind(recipient),\n }, this.recipientLabel(recipient)))),\n m('input.FormControl', {\n placeholder: app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.recipients_placeholder'),\n value: this.filter,\n oninput: (event: InputEvent) => {\n this.filter = (event.target as HTMLInputElement).value;\n this.performNewSearch();\n },\n onkeydown: this.navigator.navigate.bind(this.navigator),\n onfocus: () => {\n this.focused = true;\n },\n onblur: () => {\n this.focused = false;\n },\n disabled: this.sending,\n }),\n this.loadingResults ? LoadingIndicator.component({\n size: 'small',\n }) : null,\n this.searchResults.length ? m('ul.Dropdown-menu', this.searchResults.map(\n (result, index) => m('li', {\n className: this.searchIndex === index ? 'active' : '',\n onclick: () => {\n this.selectResult(result);\n },\n }, m('button[type=button]', [\n m('span.SearchResultKind', this.searchResultKind(result)),\n this.recipientLabel(result),\n ]))\n )) : null,\n ]),\n ]),\n m('.Form-group', [\n m('label', app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.subject_label')),\n m('input[type=text].FormControl.js-focus-on-load', {\n value: this.subject,\n oninput: (event: InputEvent) => {\n this.subject = (event.target as HTMLInputElement).value;\n },\n placeholder: app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.default_subject'),\n disabled: this.sending,\n }),\n ]),\n m('.Form-group', [\n m('label', app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.message_label')),\n m('textarea.FormControl', {\n rows: 10,\n value: this.messageText,\n oninput: (event: InputEvent) => {\n this.messageText = (event.target as HTMLInputElement).value;\n },\n disabled: this.sending,\n }),\n ]),\n m('.Form-group', [\n Switch.component({\n state: this.asHtml,\n onchange: (value: boolean) => {\n this.asHtml = value;\n },\n disabled: this.sending,\n }, app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.as_html_label')),\n ]),\n m('.Form-group', [\n Button.component({\n type: 'submit',\n className: 'Button Button--primary EditContactModal-save',\n loading: this.sending,\n disabled: this.recipients.length === 0 || this.messageText === '',\n }, app.translator.trans('clarkwinkelmann-mailing.forum.modal_mail.submit_button')),\n ]),\n ]));\n }\n\n performNewSearch() {\n this.searchIndex = 0;\n\n const query = this.filter.toLowerCase();\n\n this.buildSearchResults(query);\n\n clearTimeout(this.searchTimeout);\n if (query.length >= 3) {\n this.searchTimeout = setTimeout(() => {\n this.loadingResults = true;\n m.redraw();\n\n app.store.find('users', {\n filter: {q: query},\n page: {limit: 5}\n }).then(() => {\n this.loadingResults = false;\n this.buildSearchResults(query);\n m.redraw();\n });\n }, 250) as any;\n }\n }\n\n buildSearchResults(query: string) {\n if (!query) {\n this.searchResults = [];\n return;\n }\n\n const results: Recipient[] = [];\n\n if (app.forum.kilowhatMailingCanMailAll()) {\n app.store.all<Group>('groups').forEach(group => {\n // Do not allow Guest group as it wouldn't do anything\n if (group.id() === Group.GUEST_ID) {\n return;\n }\n\n if (group.nameSingular().toLowerCase().indexOf(query) !== -1 || group.namePlural().toLowerCase().indexOf(query) !== -1) {\n results.push(group);\n }\n });\n }\n\n app.store.all<User>('users').forEach(user => {\n if (user.username().toLowerCase().indexOf(query) !== -1) {\n results.push(user);\n }\n });\n\n if (EMAIL_REGEXP.test(this.filter)) {\n results.push(app.store.createRecord('clarkwinkelmann-mailing-emails', {\n attributes: {\n email: this.filter,\n },\n }));\n }\n\n this.searchResults = results.filter(result => {\n if (result instanceof Email) {\n return !this.recipients.some(\n recipient => (recipient instanceof Email) && recipient.email() === result.email()\n );\n }\n\n return !this.recipients.some(\n recipient => recipient.data.type === result.data.type && recipient.id() === result.id()\n );\n });\n\n m.redraw();\n }\n\n onsubmit(event: SubmitEvent) {\n event.preventDefault();\n\n this.sending = true;\n\n app.request<any>({\n method: 'POST',\n url: app.forum.attribute('apiUrl') + '/admin-mail',\n body: {\n data: {\n recipients: this.recipients.map(recipient => {\n if (recipient instanceof Email) {\n return {\n type: recipient.data.type,\n attributes: {\n email: recipient.email(),\n },\n };\n }\n\n return {\n type: recipient.data.type,\n id: recipient.id(),\n };\n }),\n subject: this.subject,\n text: this.messageText,\n asHtml: this.asHtml,\n },\n },\n }).then(\n response => {\n app.modal.show(SentModal, {\n recipientsCount: response.recipientsCount,\n });\n },\n response => {\n this.sending = false;\n this.onerror(response);\n }\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extenders'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/models/Forum'];","import Extend from 'flarum/common/extenders';\nimport Forum from 'flarum/common/models/Forum';\nimport Email from './models/Email';\n\nexport default [\n new Extend.Store()\n .add('clarkwinkelmann-mailing-emails', Email),\n new Extend.Model(Forum)\n .attribute('kilowhatMailingCanMailAll')\n .attribute('kilowhatMailingCanMailIndividual'),\n];\n","import app from 'flarum/forum/app';\nimport addMailingLinks from './addMailingLinks';\n\nexport {default as extend} from './extend';\n\napp.initializers.add('clarkwinkelmann-mailing', () => {\n addMailingLinks();\n});\n","import {extend} from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport UserControls from 'flarum/forum/utils/UserControls';\nimport SessionDropdown from 'flarum/forum/components/SessionDropdown';\nimport EmailUserModal from './components/EmailUserModal';\n\nexport default function () {\n extend(UserControls, 'moderationControls', (items, user) => {\n if (app.forum.kilowhatMailingCanMailIndividual()) {\n items.add('clarkwinkelmann-mailing', Button.component({\n icon: 'fas fa-envelope',\n onclick() {\n app.modal.show(EmailUserModal, {\n user,\n });\n },\n }, app.translator.trans('clarkwinkelmann-mailing.forum.links.mail_individual')));\n }\n });\n\n extend(SessionDropdown.prototype, 'items', items => {\n if (app.forum.kilowhatMailingCanMailAll()) {\n items.add('clarkwinkelmann-mailing', Button.component({\n icon: 'fas fa-envelope',\n onclick() {\n app.modal.show(EmailUserModal, {\n forAll: true,\n });\n },\n }, app.translator.trans('clarkwinkelmann-mailing.forum.links.mail_all')));\n }\n });\n\n const userDirectory = flarum.extensions['fof-user-directory'];\n if (userDirectory && userDirectory.UserDirectoryPage) {\n extend(userDirectory.UserDirectoryPage.prototype, 'actionItems', items => {\n if (app.forum.kilowhatMailingCanMailAll()) {\n items.add('clarkwinkelmann-mailing', Button.component({\n className: 'Button',\n icon: 'fas fa-envelope',\n onclick() {\n app.modal.show(EmailUserModal, {\n forAll: true,\n });\n },\n }, app.translator.trans('clarkwinkelmann-mailing.forum.links.mail_all')), 10);\n }\n });\n }\n}\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","import {extend} from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport icon from 'flarum/common/helpers/icon';\n\napp.initializers.add('clarkwinkelmann-likes-received', () => {\n extend(UserCard.prototype, 'infoItems', function (items) {\n const likes = this.attrs.user.attribute('likesReceived');\n\n if (Number.isInteger(likes)) {\n items.add('likesReceived', m('span.UserCard-likesReceived', [\n icon('far fa-thumbs-up'),\n ' ',\n app.translator.trans('clarkwinkelmann-likes-received.forum.user-card.likes', {\n likes,\n }),\n ]));\n }\n });\n});\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","module.exports = flarum.core.compat['forum/app'];","module.exports = flarum.core.compat['common/components/TextEditor'];","module.exports = flarum.core.compat['common/extend'];","module.exports = flarum.core.compat['common/components/Button'];","import {extend} from 'flarum/common/extend';\nimport app from 'flarum/forum/app';\nimport Button from 'flarum/common/components/Button';\nimport TextEditor from 'flarum/common/components/TextEditor';\n\n/* global m, $ */\n\nconst translationPrefix = 'clarkwinkelmann-emojionearea.forum.';\n\nlet emojioneAreaLoaded = false;\n\nfunction loadEmojioneArea() {\n if (emojioneAreaLoaded) {\n return Promise.resolve();\n }\n\n emojioneAreaLoaded = true;\n\n return new Promise(resolve => {\n const style = document.createElement('link');\n style.rel = 'stylesheet';\n style.crossOrigin = 'anonymous';\n style.integrity = 'sha256-LKawN9UgfpZuYSE2HiCxxDxDgLOVDx2R4ogilBI52oc=';\n style.href = 'https://cdn.jsdelivr.net/npm/emojionearea@3.4.2/dist/emojionearea.min.css';\n document.head.appendChild(style);\n\n const script = document.createElement('script');\n script.crossOrigin = 'anonymous';\n script.integrity = 'sha256-ImIFrmJd7ymGlVw2MbtI96BNPW4NfcKqM3d1Go665Ig=';\n script.src = 'https://cdn.jsdelivr.net/npm/emojionearea@3.4.2/dist/emojionearea.min.js';\n script.onload = resolve;\n document.body.appendChild(script);\n });\n}\n\napp.initializers.add('clarkwinkelmann-emojionearea', () => {\n TextEditor.prototype.emojioneAreaClickedOutside = function (event) {\n // If a click is triggered before the picker is ready, do not do anything\n if (!this.emojioneArea || !this.emojioneArea.isReady) {\n return;\n }\n\n const $target = $(event.target);\n\n // If we clicked on the popup or the editor button we don't do anything\n if ($target.is('.emojionearea') || $target.parents('.emojionearea').length || $target.parents('.Button-emojionearea').length) {\n return;\n }\n\n this.emojioneArea.hidePicker();\n }\n\n TextEditor.prototype.configureEmojioneArea = function () {\n if (this.emojioneArea) {\n return Promise.resolve();\n }\n\n const $container = $('<div class=\"ComposerBody-emojioneareaContainer\"/>');\n this.$('.TextEditor-controls').before($container);\n\n return new Promise(resolve => {\n const area = $('<div />').emojioneArea({\n standalone: true, // Popup only mode\n search: app.forum.attribute('emojioneAreaEnableSearch'),\n searchPlaceholder: app.translator.trans(translationPrefix + 'search_placeholder'),\n buttonTitle: app.translator.trans(translationPrefix + 'picker_button'),\n recentEmojis: app.forum.attribute('emojioneAreaEnableRecent'),\n filtersPosition: app.forum.attribute('emojioneAreaFiltersPositionBottom') ? 'bottom' : 'top',\n searchPosition: app.forum.attribute('emojioneAreaSearchPositionBottom') ? 'bottom' : 'top',\n container: $container,\n tones: app.forum.attribute('emojioneAreaEnableTones'),\n autocomplete: false, // Do not try to provide autocomplete - will prevent the textcomplete lib from being included\n sprite: false, // Undocumented setting, but disabling it removes an unnecessary CSS file load\n events: { // Listen for clicks to sync with Flarum editor\n emojibtn_click: () => {\n // To get the unicode value, we need to pull it from the invisible insert area\n this.attrs.composer.editor.insertAtCursor(this.emojioneArea.getText());\n },\n ready: resolve,\n },\n });\n\n this.emojioneArea = area.data('emojioneArea');\n });\n }\n\n extend(TextEditor.prototype, 'oncreate', function () {\n this.emojioneArea = null;\n this.emojioneAreaLoading = false;\n\n document.addEventListener('click', this.emojioneAreaClickedOutside.bind(this));\n });\n\n extend(TextEditor.prototype, 'onremove', function () {\n document.removeEventListener('click', this.emojioneAreaClickedOutside);\n });\n\n extend(TextEditor.prototype, 'toolbarItems', function (items) {\n // Not using the TextEditorButton component because the tooltip apparently won't go away once the picker is open\n items.add('clarkwinkelmann-emojionearea', Button.component({\n onclick: () => {\n // Prevent double-clicks while the library is loading\n if (this.emojioneAreaLoading) {\n return;\n }\n\n if (this.emojioneArea && this.emojioneArea.button.is('.active')) {\n this.emojioneArea.hidePicker();\n } else {\n this.emojioneAreaLoading = true;\n\n loadEmojioneArea().then(() => {\n this.configureEmojioneArea().then(() => {\n const position = this.$('.Button-emojionearea').position();\n this.$('.emojionearea-picker').css('left', position.left - 290);\n this.emojioneArea.showPicker();\n\n // Focus EmojiOneArea search bar after opening\n $('.emojionearea-search input').focus();\n\n this.emojioneAreaLoading = false;\n m.redraw();\n });\n });\n }\n },\n className: 'Button Button--icon Button--link Button-emojionearea',\n icon: this.emojioneAreaLoading ? 'fas fa-spinner fa-pulse' : 'far fa-smile-beam',\n title: app.translator.trans(translationPrefix + 'picker_button'),\n }));\n });\n});\n\napp.initializers.add('clarkwinkelmann-emojionearea-after', () => {\n extend(TextEditor.prototype, 'toolbarItems', function (items) {\n if (app.forum.attribute('emojioneAreaHideFlarumButton') && items.has('emoji')) {\n items.remove('emoji');\n }\n });\n}, -100); // Since flarum/emoji does not run with any special priority, any negative value should work\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/models/Tag'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/classList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/utils/sortTags'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/helpers/tagLabel'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","import Component from 'flarum/common/Component';\nimport icon from 'flarum/common/helpers/icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport classList from 'flarum/common/utils/classList';\nimport app from 'flarum/forum/app';\n\nimport type Mithril from 'mithril';\n\ninterface Attrs {\n count: number;\n icon: string;\n label: Mithril.Children;\n}\n\nexport default class StatWidget extends Component<Attrs> {\n view() {\n return (\n <div class={classList('StatWidget', { 'Categories-compactMobileModeEnabled': !!app.forum.attribute('categories.compactMobile') })}>\n {this.content().toArray()}\n </div>\n );\n }\n\n content() {\n const items = new ItemList();\n\n items.add('count', <div class=\"StatWidget-count\">{this.attrs.count}</div>, 100);\n items.add(\n 'label',\n <div class=\"StatWidget-label\">\n <span className=\"Categories-showOnMobile\">{icon(this.attrs.icon)}</span>\n <span className=\"Categories-hideOnMobile\">{this.attrs.label}</span>\n </div>,\n 80\n );\n\n return items;\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/username'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","import app from 'flarum/forum/app';\nimport Component from 'flarum/common/Component';\nimport avatar from 'flarum/common/helpers/avatar';\nimport username from 'flarum/common/helpers/username';\nimport humanTime from 'flarum/common/helpers/humanTime';\nimport { truncate } from 'flarum/common/utils/string';\nimport Link from 'flarum/common/components/Link';\nimport UserCard from 'flarum/forum/components/UserCard';\nimport type Discussion from 'flarum/common/models/Discussion';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\nimport type Mithril from 'mithril';\n\ninterface Attrs {\n discussion: Discussion;\n}\n\nexport default class LastDiscussionWidget extends Component<Attrs> {\n /**\n * Whether or not the user hover card is visible.\n */\n cardVisible!: boolean;\n\n oninit(vnode) {\n super.oninit(vnode);\n\n this.cardVisible = false;\n }\n\n view() {\n const discussion = this.attrs.discussion;\n\n if (!discussion) {\n return <div class=\"LastDiscussion\">{app.translator.trans('askvortsov-categories.forum.last_discussion_widget.no_discussions')}</div>;\n }\n\n const user = discussion.lastPostedUser();\n\n return (\n <Link class=\"LastDiscussion\" href={app.route.discussion(discussion, discussion.lastPostNumber() ?? 0)}>\n {this.content().toArray()}\n </Link>\n );\n }\n\n content() {\n const items = new ItemList();\n\n const discussion = this.attrs.discussion;\n const user = discussion.lastPostedUser();\n\n items.add(\n 'avatar',\n <Link className=\"LastDiscussion-avatar\" href={user ? app.route.user(user) : '#'} aria-label={extractText(username(user))}>\n {!!user && avatar(user)}\n </Link>,\n 100\n );\n\n items.add(\n 'mainContent',\n <div class=\"LastDiscussion-content\">\n <div class=\"LastDiscussion-bottomRow\">\n {humanTime(discussion.lastPostedAt()!)}{' '}\n <Link className=\"LastDiscussion-usernameLink\" href={user ? app.route.user(user) : '#'}>\n <span style={{ display: 'inline', margin: '0 4px' }} role=\"presentation\">\n |\n </span>\n {username(user)}\n </Link>\n </div>\n <div class=\"LastDiscussion-topRow\">{truncate(discussion.title(), 26)}</div>\n </div>,\n 50\n );\n\n let card: Mithril.Children = null;\n\n if (user && this.cardVisible) {\n card = UserCard.component({\n user,\n className: 'UserCard--popover',\n controlsButtonClassName: 'Button Button--icon Button--flat',\n });\n }\n\n items.add('card', <div class=\"LastDiscussion-userCardContainer\">{card}</div>, 10);\n\n return items;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n let timeout: number;\n\n this.$()\n .on('mouseover', '.LastDiscussion-avatar, .LastDiscussion-usernameLinkUserCard, .username, .UserCard', () => {\n clearTimeout(timeout);\n timeout = window.setTimeout(this.showCard.bind(this), 300);\n })\n .on('mouseout', '.LastDiscussion-avatar, .LastDiscussion-usernameLinkUserCard, .username, .UserCard', () => {\n clearTimeout(timeout);\n timeout = window.setTimeout(this.hideCard.bind(this), 150);\n });\n }\n\n onremove(vnode): void {\n super.onremove(vnode);\n\n this.$().off('mouseover mouseout');\n }\n\n /**\n * Show the user card.\n */\n showCard() {\n this.cardVisible = true;\n\n m.redraw();\n\n setTimeout(() => this.$('.UserCard').addClass('in'));\n }\n\n /**\n * Hide the user card.\n */\n hideCard() {\n $('.UserCard').removeClass('in');\n this.cardVisible = false;\n m.redraw();\n }\n}\n","import Component from 'flarum/common/Component';\nimport Link from 'flarum/common/components/Link';\n\nimport icon from 'flarum/common/helpers/icon';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport sortTags from 'flarum/tags/utils/sortTags';\n\nimport StatWidget from './StatWidget';\nimport LastDiscussionWidget from './LastDiscussionWidget';\nimport app from 'flarum/forum/app';\nimport classList from 'flarum/common/utils/classList';\n\nimport type Mithril from 'mithril';\n\ninterface Attrs {\n model: any;\n parent: any;\n}\n\n/*\n * Provide compatibility for Flarum Tag Passwords extension, this is to ensure that locked tag with Password or Group permission has view restriction on latest discussion.\n * To know if a tag is protected, there is an isUnlocked variable that is specific for this extension.\n * https://github.com/datlechin/flarum-tag-passwords\n * \n */\ninterface TagLocked {\n icon: icon;\n text: string;\n isVisible: boolean;\n}\n\nexport default class Category extends Component<Attrs> {\n tag!: any;\n isChild!: boolean;\n collapsed!: boolean;\n compactMobileMode!: boolean;\n tagLocked!: TagLocked;\n\n oninit(vnode) {\n super.oninit(vnode);\n\n this.tag = this.attrs.model;\n\n this.isChild = this.attrs.parent != null && this.attrs.parent != undefined;\n\n this.collapsed = false;\n\n // Identify if the tag has been Goup or Password protected with flarum-tag-passwords extension.\n if (typeof this.tag.isUnlocked == 'function') {\n if ((this.tag.isGroupProtected() || this.tag.isPasswordProtected()) && !this.tag.isUnlocked()) {\n this.tagLocked = {\n icon: this.tag.isPasswordProtected() ? icon('fas fa-lock') : icon('fas fa-user-lock'),\n text: this.tag.isPasswordProtected() ? app.translator.trans('datlechin-tag-passwords.forum.tags_page.password_protected') : app.translator.trans('datlechin-tag-passwords.forum.tags_page.group_protected'),\n isVisible: this.tag.isProtectedTagDisplayedForTagsPage() == true\n };\n }\n }\n\n window.addEventListener('resize', function () {\n m.redraw();\n });\n }\n\n view() {\n const tag = this.tag;\n\n if (!tag) {\n return null;\n } else if (this.tagLocked && !this.tagLocked.isVisible) {\n // Hide the navigation when protected Tag in 'Tag Passwords > Display protected Tag in Tags page navigation' is disabled\n return null;\n }\n\n this.compactMobileMode = !!app.forum.attribute('categories.compactMobile');\n\n return (\n <li\n className={classList('TagCategory', `TagCategory-${tag.slug()}`, {\n SubCategory: this.isChild,\n ParentCategory: !this.isChild,\n compactMobile: this.compactMobileMode,\n })}\n >\n {this.categoryItems().toArray()}\n </li>\n );\n }\n\n categoryItems() {\n const items = new ItemList();\n const tag = this.tag;\n\n const children = this.isChild ? [] : sortTags(tag.children() || []);\n\n items.add(\n 'link',\n <Link\n className={`TagCategory-content ${app.forum.attribute('categories.compactMobile')? 'compactMobile' : '' } TagCategory-content-${tag.slug()}`}\n style={this.isChild ? {} : { backgroundColor: tag.color() }}\n href={app.route.tag(tag)}\n >\n {this.contentItems().toArray()}\n </Link>,\n 100\n );\n\n if (!this.compactMobileMode && !this.isChild) {\n items.add(\n 'children',\n <ol className=\"TagCategory-subTagList\">{children.map((child) => [Category.component({ model: child, parent: this })])}</ol>,\n 10\n );\n }\n\n return items;\n }\n\n contentItems() {\n const items = new ItemList();\n\n const tag = this.tag;\n const children = this.isChild ? [] : sortTags(tag.children() || []);\n\n items.add('alignStart', <div className=\"TagCategory-alignStart\">{this.alignStartItems().toArray()}</div>, 100);\n\n items.add('alignEnd', <div className=\"TagCategory-alignEnd\">{this.alignEndItems().toArray()}</div>, 50);\n\n const childrenInContent = !this.isChild && this.compactMobileMode;\n\n if (childrenInContent && !this.collapsed) {\n items.add(\n 'children',\n <ol className=\"TagCategory-subTagList\">{children.map((child) => [Category.component({ model: child, parent: this })])}</ol>,\n 10\n );\n }\n\n return items;\n }\n\n alignStartItems() {\n const items = new ItemList();\n\n const tag = this.tag;\n const children = this.isChild ? [] : sortTags(tag.children() || []);\n\n items.add('icon', <span className=\"TagCategory-icon\">{this.iconItems().toArray()}</span>, 100);\n\n items.add('main', <div className=\"TagCategory-main\">{this.mainItems().toArray()}</div>, 50);\n\n if (!!children.length) {\n items.add(\n 'toggleArrow',\n <button\n className=\"TagCategory-toggleArrow Button--ua-reset\"\n onclick={(e: MouseEvent) => {\n this.toggleArrow(e);\n }}\n >\n {icon(this.collapsed ? 'fas fa-caret-down' : 'fas fa-caret-up')}\n </button>,\n 10\n );\n }\n\n return items;\n }\n\n alignEndItems() {\n const items = new ItemList();\n\n if (this.tagLocked) {\n items.add('locked', <div className=\"TagCategory-locked\">{this.lockedItems().toArray()}</div>, 100);\n return items;\n }\n\n const tag = this.tag;\n\n items.add('stats', <div className=\"TagCategory-stats StatWidgetList\">{this.statItems().toArray()}</div>, 100);\n\n items.add(\n 'lastDiscussion',\n <div className={classList('TagCategory-lastDiscussion', { empty: !tag.lastPostedDiscussion() })}>{this.lastDiscussionItems().toArray()}</div>,\n 50\n );\n\n return items;\n }\n\n lockedItems() {\n const items = new ItemList();\n const classes = this.compactMobileMode ? 'fa-stack fa-1x' : 'fa-stack fa-2x';\n items.add(\n 'icon',\n <span className={classes}>\n {\n <i className=\"fa-stack-2x\" style={{ color: this.tag.color() }}></i>\n }\n {this.tagLocked.icon}\n </span>,\n 10\n );\n items.add(\n 'LockedText',\n <div className={classList('TagCategory-lockedText')}>{this.tagLocked.text}</div>,\n 50\n );\n return items;\n }\n\n iconItems() {\n const items = new ItemList();\n\n if (this.tag.icon() && this.isChild) {\n const style: Record<string, unknown> = {};\n\n let iconClasses = 'fa-stack-1x CategoryIcon';\n\n if (app.forum.attribute('categories.childBareIcon')) {\n iconClasses += ' NoBackgroundCategoryIcon';\n style.color = '#fafafa';\n } else {\n style.color = this.tag.color();\n }\n\n const classes = this.compactMobileMode ? 'fa-stack fa-1x' : 'fa-stack fa-2x';\n\n items.add(\n 'icon',\n <span className={classes}>\n {!!app.forum.attribute('categories.childBareIcon') && (\n <i className=\"fa fa-circle fa-stack-2x icon-background\" style={{ color: this.tag.color() }}></i>\n )}\n {icon(this.tag.icon(), { className: iconClasses, style: style })}\n </span>,\n 10\n );\n } else if (this.tag.icon() && !app.forum.attribute('categories.parentRemoveIcon')) {\n const classes = this.compactMobileMode ? 'fa-stack fa-2x' : 'fa-stack fa-3x';\n\n items.add('icon', <span className={classes}>{icon(this.tag.icon(), { className: 'fa-stack-1x CategoryIcon' })}</span>, 10);\n }\n\n return items;\n }\n\n mainItems() {\n const items = new ItemList();\n\n items.add('name', <h4 className=\"TagCategory-name\">{this.tag.name()}</h4>, 15);\n\n if (this.tag.description() && (this.isChild || !app.forum.attribute('categories.parentRemoveDescription'))) {\n items.add('description', <div className=\"TagCategory-description\">{this.tag.description()}</div>, 10);\n }\n\n return items;\n }\n\n statItems() {\n const items = new ItemList();\n\n if (this.isChild || !app.forum.attribute('categories.parentRemoveStats')) {\n items.add(\n 'discussionCount',\n StatWidget.component({\n count: Intl.NumberFormat().format(this.tag.discussionCount()),\n label: app.translator.trans('askvortsov-categories.forum.stat-widgets.discussion_label'),\n icon: 'fas fa-file-alt',\n }),\n 15\n );\n\n items.add(\n 'postCount',\n StatWidget.component({\n count: Intl.NumberFormat().format(this.tag.postCount()),\n label: app.translator.trans('askvortsov-categories.forum.stat-widgets.post_label'),\n icon: 'fas fa-comment',\n }),\n 10\n );\n }\n\n return items;\n }\n\n lastDiscussionItems() {\n const items = new ItemList();\n\n if (this.isChild || !app.forum.attribute('categories.parentRemoveLastDiscussion')) {\n items.add(\n 'lastDiscussion',\n LastDiscussionWidget.component({\n discussion: this.tag.lastPostedDiscussion(),\n }),\n 10\n );\n }\n\n return items;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n this.$('.TagCategory-content,.TagCategory-toggleArrow').on('mouseenter', function (e) {\n $(this).addClass('hover');\n if ($(this).parent().hasClass('SubCategory') || $(this).hasClass('TagCategory-toggleArrow')) {\n $(this).closest('.ParentCategory').children('.TagCategory-content').removeClass('hover');\n }\n });\n\n this.$('.TagCategory-content,.TagCategory-toggleArrow').on('mouseleave', function (e) {\n $(this).removeClass('hover');\n if ($(this).parent().hasClass('SubCategory') || $(this).hasClass('TagCategory-toggleArrow')) {\n $(this).closest('.ParentCategory').children('.TagCategory-content').addClass('hover');\n }\n });\n }\n\n onremove(vnode: Mithril.VnodeDOM<Attrs, this>): void {\n super.onremove(vnode);\n\n this.$('.TagCategory-content,.TagCategory-toggleArrow').off('mouseenter');\n this.$('.TagCategory-content,.TagCategory-toggleArrow').off('mouseleave');\n }\n\n toggleArrow(e: MouseEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.collapsed = !this.collapsed;\n m.redraw();\n }\n}\n","import app from 'flarum/forum/app';\nimport Page from 'flarum/common/components/Page';\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport listItems from 'flarum/common/helpers/listItems';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport extractText from 'flarum/common/utils/extractText';\nimport classList from 'flarum/common/utils/classList';\n\nimport sortTags from 'flarum/tags/utils/sortTags';\nimport tagLabel from 'flarum/tags/helpers/tagLabel';\n\nimport Category from './Category';\n\nexport default class CategoriesPage extends Page {\n tags!: any[];\n loading!: boolean;\n\n oninit(vnode) {\n super.oninit(vnode);\n\n app.history.push('categories', extractText(app.translator.trans('askvortsov-category.forum.header.back_to_categories_tooltip')));\n\n this.tags = [];\n\n const preloaded = app.preloadedApiDocument<any>();\n\n if (preloaded) {\n this.tags = sortTags(preloaded.filter((tag: any) => !tag.isChild()));\n return;\n }\n\n this.loading = true;\n\n app.tagList.load(['parent', 'children', 'lastPostedDiscussion', 'lastPostedDiscussion.lastPostedUser']).then(() => {\n this.tags = sortTags(app.store.all('tags').filter((tag) => !tag.isChild()));\n\n this.loading = false;\n\n m.redraw();\n });\n }\n\n view() {\n if (this.loading) {\n return <LoadingIndicator />;\n }\n\n const classes = ['CategoriesPage'];\n\n return <div className={classList(classes)}>{this.pageItems().toArray()}</div>;\n }\n\n pageItems() {\n const items = new ItemList();\n\n items.add('hero', IndexPage.prototype.hero(), 100);\n\n items.add(\n 'container',\n <div className={app.forum.attribute('categories.fullPageDesktop') ? 'container topNavContainer' : 'container sideNavContainer'}>\n {this.containerItems().toArray()}\n </div>,\n 50\n );\n\n return items;\n }\n\n containerItems() {\n const items = new ItemList();\n\n const pinned = this.tags.filter((tag) => tag.position() !== null);\n const cloud = this.tags.filter((tag) => tag.position() === null);\n\n items.add(\n 'sideNav',\n <nav className={app.forum.attribute('categories.fullPageDesktop') ? 'CategoriesPage-nav IndexPage-nav topNav' : 'CategoriesPage-nav IndexPage-nav sideNav'}>\n <ul>{listItems(IndexPage.prototype.sidebarItems().toArray())}</ul>\n </nav>,\n 100\n );\n\n items.add(\n 'categoriesList',\n <div className=\"CategoriesPage-content sideNavOffset\">\n <ol className=\"TagCategoryList\">\n {pinned.map((tag) => {\n return Category.component({ model: tag });\n })}\n </ol>\n\n {cloud.length ? <div className=\"TagCloud\">{cloud.map((tag) => [tagLabel(tag, { link: true }), ' '])}</div> : ''}\n </div>,\n 50\n );\n\n return items;\n }\n\n oncreate(vnode) {\n super.oncreate(vnode);\n\n app.setTitle(extractText(app.translator.trans('askvortsov-categories.forum.all_categories.meta_title_text')));\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/forum/components/TagsPage'];","import { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport Model from 'flarum/common/Model';\nimport Tag from 'flarum/tags/models/Tag';\nimport CategoriesPage from './components/CategoriesPage';\nimport TagsPage from 'flarum/tags/forum/components/TagsPage';\nimport Category from './components/Category';\nimport LastDiscussionWidget from './components/LastDiscussionWidget';\nimport StatWidget from './components/StatWidget';\n\nfunction pruneIndexNav(items, func) {\n const isTagsPageVisible = app.forum.attribute('categories.keepTagsNav');\n\n const isCustomTagsHidden = (app.current.matches(CategoriesPage) || app.current.matches(TagsPage));\n for (const item in items.items) {\n if (func(item)) {\n if(item == 'tags') {\n /*\n * Tags must be visible on the navibation bar, when the User has selected to keep Tags within the Extension Settings.\n * Finding all items that begins with 'tag' will also load 'tags', due to custom tag are labelled 'tag1', 'tag2' and so-on\n */\n if (!isTagsPageVisible) {\n items.remove(item);\n }\n } else {\n /*\n * This is for custom tags, where they should not be visible within CategoriesPage and TagsPage\n */\n if (isCustomTagsHidden) {\n items.remove(item);\n }\n }\n }\n }\n}\n\napp.initializers.add('askvortsov/flarum-categories', () => {\n app.routes.categories = {\n path: '/categories',\n component: CategoriesPage,\n };\n\n Tag.prototype.postCount = Model.attribute('postCount');\n\n extend(IndexPage.prototype, 'navItems', function (items) {\n items.add(\n 'categories',\n <LinkButton icon=\"fas fa-th-list\" href={app.route('categories')}>\n {app.translator.trans('askvortsov-categories.forum.index.categories_link')}\n </LinkButton>,\n -9.5\n );\n\n if (items.has('moreTags')) {\n items.replace('moreTags', <LinkButton href={app.route('categories')}>{app.translator.trans('flarum-tags.forum.index.more_link')}</LinkButton>);\n }\n\n pruneIndexNav(items, (item) => item.startsWith('tag'));\n\n return items;\n });\n\n extend(IndexPage.prototype, 'sidebarItems', function (items) {\n pruneIndexNav(items, (item) => item !== 'newDiscussion' && item !== 'nav');\n return items;\n });\n});\n\nexport default {\n 'components/CategoriesPage': CategoriesPage,\n 'components/Category': Category,\n 'components/LastDiscussionWidget': LastDiscussionWidget,\n 'components/StatWidget': StatWidget,\n};\n"," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/extend/Widgets'];","module.exports = flarum.core.compat['common/app'];","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/utils/classList'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['extensions/afrux-forum-widgets-core/common/components/Widget'];","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 type Mithril from 'mithril';\nimport app from 'flarum/common/app';\nimport icon from 'flarum/common/helpers/icon';\nimport classList from 'flarum/common/utils/classList';\nimport Stream from 'flarum/common/utils/Stream';\n\nimport Widget, { WidgetAttrs } from 'flarum/extensions/afrux-forum-widgets-core/common/components/Widget';\n\nexport default class NewsWidget<T extends WidgetAttrs> extends Widget<T> {\n private newslines!: string[];\n private line!: CallableFunction;\n private switching!: boolean;\n\n oninit(vnode: Mithril.Vnode<T, this>) {\n super.oninit(vnode);\n\n this.newslines = app.forum.attribute('afrux-news-widget.lines');\n this.line = Stream({ index: 0, text: this.newslines[0] });\n this.switching = false;\n }\n\n className() {\n return 'Afrux-NewsWidget';\n }\n\n icon() {\n return 'fas fa-bullhorn';\n }\n\n title() {\n return '';\n }\n\n content(): Mithril.Children {\n if (this.newslines.length > 1 && !this.switching) {\n this.switching = true;\n\n setTimeout(() => {\n const newLineIndex = (this.line().index + 1) % this.newslines.length;\n\n this.switching = false;\n this.line({ index: newLineIndex, text: this.newslines[newLineIndex] });\n m.redraw();\n }, 7000);\n }\n\n let prevLine: string;\n\n if (this.newslines.length > 1) {\n prevLine = this.newslines[(this.line().index - 1 + this.newslines.length) % this.newslines.length];\n }\n\n return (\n <div className=\"Afrux-NewsWidget-content\">\n <div className=\"Afrux-NewsWidget-icon\">{icon('fas fa-bullhorn')}</div>\n <div className=\"Afrux-NewsWidget-line-container\">\n {this.newslines.map((line, index) => (\n <div\n className={classList([\n 'Afrux-NewsWidget-line',\n this.line().index === index ? 'Afrux-NewsWidget-line--current' : '',\n prevLine === line ? 'Afrux-NewsWidget-line--previous' : '',\n ])}\n key={index}\n >\n {m.trust(line)}\n </div>\n ))}\n </div>\n </div>\n );\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import type Application from 'flarum/common/Application';\nimport Widgets from 'flarum/extensions/afrux-forum-widgets-core/common/extend/Widgets';\n\nimport NewsWidget from './components/NewsWidget';\n\nexport default function (app: Application) {\n new Widgets()\n .add({\n key: 'news',\n component: NewsWidget,\n isDisabled: () => !app.forum.attribute('afrux-news-widget.lines').length,\n isUnique: true,\n placement: 'top',\n position: 1,\n })\n .extend(app, 'afrux-news-widget');\n}\n","import registerWidget from '../common/registerWidget';\n\napp.initializers.add('afrux/news-widget', () => {\n registerWidget(app);\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Link'];","import Component from \"flarum/common/Component\";\nimport Link from \"flarum/common/components/Link\";\n\nexport default class Footer extends Component {\n view() {\n if (!this.hasLinks() && !this.hasDescription() && !this.hasBottomLine()) {\n return \"\";\n }\n\n return (\n <div className=\"ThemeBaseFooter\">\n {this.separator()}\n <div className=\"ThemeBaseFooter-container container\">\n {this.upper()}\n {(app.forum.attribute(\"afrux-theme-base.footerBottomLine\") &&\n this.lower()) ||\n \"\"}\n </div>\n </div>\n );\n }\n\n separator() {\n // ...\n }\n\n upper() {\n const links = (app.forum.attribute(\"afrux-theme-base.footerLinks\") || [])\n .filter((item) => item !== null)\n .map((item) => {\n if (item.links) item.links = item.links.filter((item) => item !== null);\n\n return item;\n });\n\n return (\n <div className=\"ThemeBaseFooter-upper\">\n <div\n className={[\n \"ThemeBaseFooter-about\",\n this.hasLinks() ? \"\" : \"ThemeBaseFooter-about--large\",\n ].join(\" \")}\n >\n <div\n className={[\n \"ThemeBaseFooter-logo\",\n this.hasDescription() ? \"\" : \"ThemeBaseFooter-logo--large\",\n ].join(\" \")}\n >\n {app.forum.attribute(\"logoUrl\") ? (\n <img src={app.forum.attribute(\"logoUrl\")} alt=\"logo\" />\n ) : (\n <h1 className=\"ThemeBaseFooter-title\">\n {app.forum.attribute(\"title\")}\n </h1>\n )}\n </div>\n {this.hasDescription() ? (\n <p className=\"ThemeBaseFooter-logo-description\">\n {app.forum.attribute(\"afrux-theme-base.footerDescription\")}\n </p>\n ) : (\n \"\"\n )}\n </div>\n {this.hasLinks() ? (\n <div className=\"ThemeBaseFooter-links\">\n {links.map((group) => (\n <div className=\"ThemeBaseFooter-linkGroup\">\n <h6 className=\"ThemeBaseFooter-linkGroup-title\">\n {group.title}\n </h6>\n <ul>\n {group.links.map((link) => (\n <li className=\"ThemeBaseFooter-links-item\">\n <a href={link.url} rel=\"noopener\">\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n ) : (\n \"\"\n )}\n </div>\n );\n }\n\n lower() {\n return (\n <div className=\"ThemeBaseFooter-lower\">\n <p className=\"ThemeBaseFooter-bottomLine\">\n {app.forum.attribute(\"afrux-theme-base.footerBottomLine\")}\n </p>\n </div>\n );\n }\n\n hasLinks() {\n return (\n app.forum.attribute(\"afrux-theme-base.footerLinks\") &&\n app.forum.attribute(\"afrux-theme-base.footerLinks\").length\n );\n }\n\n hasDescription() {\n return Boolean(app.forum.attribute(\"afrux-theme-base.footerDescription\"));\n }\n\n hasBottomLine() {\n return Boolean(app.forum.attribute(\"afrux-theme-base.footerBottomLine\"));\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/ForumApplication'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/WelcomeHero'];","import Footer from \"./components/Footer\";\n\nexport default {\n \"extensions/afrux-theme-base/forum/components/Footer\": Footer,\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core;","import { extend } from \"flarum/common/extend\";\nimport Footer from \"./components/Footer\";\nimport ForumApplication from \"flarum/forum/ForumApplication\";\nimport WelcomeHero from \"flarum/forum/components/WelcomeHero\";\n\napp.initializers.add(\"afrux-theme-base\", () => {\n extend(ForumApplication.prototype, \"mount\", () => {\n if (app.forum.attribute(\"afrux-theme-base.footerHooked\"))\n m.mount(document.getElementById(\"footer\"), Footer);\n });\n\n extend(WelcomeHero.prototype, \"view\", function (vdom) {\n if (\n !app.forum.attribute(\"afruxHeroBanner\") ||\n !(vdom && typeof vdom === \"object\" && \"attrs\" in vdom)\n )\n return;\n\n vdom.attrs.className += \" Hero--banner\";\n vdom.attrs.style = vdom.attrs.style || {};\n vdom.attrs.style[\"--banner-url\"] = `url(\"${app.forum.attribute(\n \"afruxHeroBanner\"\n )}\")`;\n\n if (app.forum.attribute(\"afruxHeroBannerPosition\")) {\n vdom.attrs.style[\"--banner-position\"] = app.forum.attribute(\n \"afruxHeroBannerPosition\"\n );\n }\n });\n});\n\n// Expose compat API\nimport customCompat from \"./compat\";\nimport { compat } from \"@flarum/core/forum\";\n\nObject.assign(compat, customCompat);\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","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}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/DiscussionListItem'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/components/TagsPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/IndexPage'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/Link'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/humanTime'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/common/helpers/tagIcon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/common/helpers/tagLabel'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['tags/common/utils/sortTags'];","import IndexPage from 'flarum/components/IndexPage';\nimport Link from 'flarum/components/Link';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport listItems from 'flarum/helpers/listItems';\nimport humanTime from 'flarum/helpers/humanTime';\n\nimport tagIcon from 'flarum/tags/common/helpers/tagIcon';\nimport tagLabel from 'flarum/tags/common/helpers/tagLabel';\nimport sortTags from 'flarum/tags/common/utils/sortTags';\n\nexport default class TagsPage {\n view() {\n if (this.loading) {\n return <LoadingIndicator />;\n }\n\n const pinned = this.tags.filter((tag) => tag.position() !== null);\n const cloud = this.tags.filter((tag) => tag.position() === null);\n\n return (\n <div className=\"Asirem-TagsPage\">\n {IndexPage.prototype.hero()}\n <div className=\"sideNavContainer container\">\n <nav className=\"TagsPage-nav IndexPage-nav sideNav\">\n <ul>{listItems(IndexPage.prototype.sidebarItems().toArray())}</ul>\n </nav>\n\n <div className=\"TagsPage-content sideNavOffset\">\n <ul className=\"Asirem-TagTiles\">\n {pinned.map((tag) => {\n const lastPostedDiscussion = tag.lastPostedDiscussion();\n const children = sortTags(tag.children() || []);\n const tagIconNode = tagIcon(tag, {}, { useColor: false });\n\n if (tagIconNode.attrs.style && tagIconNode.attrs.style.backgroundColor) {\n delete tagIconNode.attrs.style.backgroundColor;\n }\n\n return (\n <li className={'Asirem-TagTile ' + (tag.color() ? 'colored' : '')} style={{ '--tag-bg': tag.color() }}>\n <Link className=\"Asirem-TagTile-info\" href={app.route.tag(tag)}>\n <div className=\"Asirem-TagTile-icon\">{tagIconNode}</div>\n <div className=\"Asirem-TagTile-content\">\n <h3 className=\"Asirem-TagTile-name\">{tag.name()}</h3>\n <p className=\"Asirem-TagTile-description\">{tag.description()}</p>\n {children && children.length ? (\n <div className=\"Asirem-TagTile-children\">\n {children.map((child) => [\n <Link href={app.route.tag(child)} className=\"TagLabel\">\n {child.name()}\n </Link>,\n ' ',\n ])}\n </div>\n ) : (\n ''\n )}\n {lastPostedDiscussion ? (\n <Link\n className=\"Asirem-TagTile-lastPostedDiscussion\"\n href={app.route.discussion(lastPostedDiscussion, lastPostedDiscussion.lastPostNumber())}\n >\n <span className=\"Asirem-TagTile-lastPostedDiscussion-title\">{lastPostedDiscussion.title()}</span>\n {humanTime(lastPostedDiscussion.lastPostedAt())}\n </Link>\n ) : (\n <span className=\"Asirem-TagTile-lastPostedDiscussion\" />\n )}\n </div>\n </Link>\n </li>\n );\n })}\n </ul>\n\n {cloud.length ? <div className=\"Asirem-TagCloud\">{cloud.map((tag) => [tagLabel(tag, { link: true }), ' '])}</div> : ''}\n </div>\n </div>\n </div>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['utils/string'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['extensions/afrux-theme-base/forum/components/Footer'];","import { extend, override } from 'flarum/common/extend';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport TagsPage from 'flarum/tags/components/TagsPage';\nimport AsiremTagsPage from './components/TagsPage';\nimport { truncate } from 'flarum/utils/string';\n\nimport Footer from 'flarum/extensions/afrux-theme-base/forum/components/Footer';\n\napp.initializers.add('afrux-asirem', () => {\n extend(DiscussionListItem.prototype, 'view', function (vnode) {\n const discussionListItemContent = vnode.children.find(\n (e) => e && e.tag === 'div' && e.attrs && e.attrs.className.includes('DiscussionListItem-content')\n );\n\n discussionListItemContent.children[0] = (\n <div className=\"DiscussionListItem-author-container\">{[discussionListItemContent.children[0], discussionListItemContent.children[1]]}</div>\n );\n\n delete discussionListItemContent.children[1];\n\n discussionListItemContent.children[3] = <div className=\"DiscussionListItem-stats\">{discussionListItemContent.children[3]}</div>;\n\n if (this.attrs.discussion.tags() && this.attrs.discussion.tags()[0] && this.attrs.discussion.tags()[0].color()) {\n vnode.attrs.style = { '--tag-color': this.attrs.discussion.tags()[0].color(), ...(vnode.attrs.style || {}) };\n }\n\n if (this.attrs.discussion.isUnread()) {\n vnode.attrs.className += ' DiscussionListItem--unread';\n }\n });\n\n extend(DiscussionListItem.prototype, 'infoItems', function (items) {\n if (!items.has('excerpt')) {\n const firstPost = this.attrs.discussion.firstPost();\n\n if (firstPost) {\n const excerpt = truncate(firstPost.contentPlain(), 175);\n\n items.add('excerpt', <div>{excerpt}</div>, -100);\n }\n }\n });\n\n override(Footer.prototype, 'separator', function () {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1440\" height=\"288\" className=\"Asirem-footerWaves\">\n <path\n fill-opacity=\"1\"\n d=\"M0,224L18.5,186.7C36.9,149,74,75,111,58.7C147.7,43,185,85,222,112C258.5,139,295,149,332,154.7C369.2,160,406,160,443,149.3C480,139,517,117,554,101.3C590.8,85,628,75,665,96C701.5,117,738,171,775,165.3C812.3,160,849,96,886,101.3C923.1,107,960,181,997,218.7C1033.8,256,1071,256,1108,250.7C1144.6,245,1182,235,1218,202.7C1255.4,171,1292,117,1329,117.3C1366.2,117,1403,171,1422,197.3L1440,224L1440,320L1421.5,320C1403.1,320,1366,320,1329,320C1292.3,320,1255,320,1218,320C1181.5,320,1145,320,1108,320C1070.8,320,1034,320,997,320C960,320,923,320,886,320C849.2,320,812,320,775,320C738.5,320,702,320,665,320C627.7,320,591,320,554,320C516.9,320,480,320,443,320C406.2,320,369,320,332,320C295.4,320,258,320,222,320C184.6,320,148,320,111,320C73.8,320,37,320,18,320L0,320Z\"\n ></path>\n </svg>\n );\n });\n\n override(TagsPage.prototype, 'view', AsiremTagsPage.prototype.view);\n});\n","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Application'];","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/LogInModal'];","import type { Children, Vnode } from 'mithril';\nimport type { ComponentAttrs } from 'flarum/common/Component';\nimport Component from 'flarum/common/Component';\nimport LinkButton from 'flarum/common/components/LinkButton';\n\ninterface MobileTabItemAttrs extends ComponentAttrs {\n route: string;\n icon: string;\n label: string;\n}\n\nexport default class MobileTabItem extends Component<MobileTabItemAttrs> {\n view(vnode: Vnode<MobileTabItemAttrs, this>): Children {\n const { route, icon, label } = this.attrs;\n return (\n <LinkButton href={route} icon={icon} title={label}>\n {label}\n </LinkButton>\n );\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/SessionDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/avatar'];","import app from 'flarum/forum/app';\nimport SessionDropdown from 'flarum/forum/components/SessionDropdown';\nimport avatar from 'flarum/common/helpers/avatar';\n\nexport default class MobileTabSessionDropdown extends SessionDropdown {\n getButtonContent() {\n const user = app.session.user;\n\n // The username can be long, so it is better to display \"Profile\"\n return [avatar(user), ' ', <span className=\"Button-label\">{app.translator.trans('acpl-mobile-tab.forum.profile')}</span>];\n }\n}\n","// External dependencies\nimport type { Children, Vnode } from 'mithril';\nimport app from 'flarum/forum/app';\nimport type { ComponentAttrs } from 'flarum/common/Component';\nimport Component from 'flarum/common/Component';\nimport listItems from 'flarum/common/helpers/listItems';\nimport ItemList from 'flarum/common/utils/ItemList';\nimport LinkButton from 'flarum/common/components/LinkButton';\nimport Button from 'flarum/common/components/Button';\nimport LogInModal from 'flarum/forum/components/LogInModal';\n\n// Internal dependencies\nimport MobileTabItem from './MobileTabItem';\nimport MobileTabSessionDropdown from './MobileTabSessionDropdown';\n\nexport default class MobileTab extends Component {\n view(vnode: Vnode<ComponentAttrs, this>): Children {\n return (\n <nav className=\"MobileTab\">\n <ul className=\"MobileTab-items\">{listItems(this.items().toArray())}</ul>\n </nav>\n );\n }\n\n items(): ItemList<Children> {\n const items = new ItemList<Children>();\n\n items.add('home', <MobileTabItem route=\"/\" icon=\"fas fa-home\" label={app.translator.trans('acpl-mobile-tab.forum.home')} />, 100);\n\n if (app.routes.index.path === '/all') {\n items.add(\n 'all',\n <MobileTabItem route={app.route('index')} icon=\"fas fa-comments\" label={app.translator.trans('acpl-mobile-tab.forum.all_discussions')} />,\n 90\n );\n } else if ('askvortsov-categories' in flarum.extensions) {\n items.add(\n 'categories',\n <MobileTabItem route={app.route('categories')} icon=\"fas fa-th-list\" label={app.translator.trans('acpl-mobile-tab.forum.categories')} />,\n 90\n );\n } else if ('flarum-tags' in flarum.extensions) {\n items.add(\n 'tags',\n <MobileTabItem route={app.route('tags')} icon=\"fas fa-tags\" label={app.translator.trans('acpl-mobile-tab.forum.tags')} />,\n 90\n );\n }\n\n if (app.session.user) {\n const unread = app.session.user.unreadNotificationCount();\n // The default Flarum component opens as a dropdown on mobile if the drawer is not open\n items.add(\n 'notifications',\n <LinkButton\n href={app.route('notifications')}\n icon=\"fas fa-bell\"\n title={app.translator.trans('acpl-mobile-tab.forum.notifications')}\n className=\"Dropdown NotificationsDropdown\"\n >\n {unread ? <span className=\"NotificationsDropdown-unread\">{unread}</span> : ''}\n {app.translator.trans('acpl-mobile-tab.forum.notifications')}\n </LinkButton>,\n 80\n );\n\n items.add('session', <MobileTabSessionDropdown />, 70);\n } else {\n items.add(\n 'logIn',\n <Button icon=\"fas fa-user\" className=\"Button Button--link\" onclick={() => app.modal.show(LogInModal, {})}>\n {app.translator.trans('acpl-mobile-tab.forum.log_in')}\n </Button>,\n 70\n );\n }\n\n return items;\n }\n}\n","import MobileTab from './MobileTab';\nimport MobileTabItem from './MobileTabItem';\nimport MobileTabSessionDropdown from './MobileTabSessionDropdown';\n\nexport const components = {\n MobileTab,\n MobileTabItem,\n MobileTabSessionDropdown,\n};\n","import app from 'flarum/forum/app';\nimport { extend } from 'flarum/common/extend';\nimport Application from 'flarum/common/Application';\n\nimport MobileTab from './components/MobileTab';\n\napp.initializers.add('acpl/mobile-tab', () => {\n //@ts-ignore - missing 'mount' types\n extend(Application.prototype, 'mount', () => {\n const mTab = document.createElement('div');\n m.mount(document.body.appendChild(mTab), MobileTab);\n });\n});\n\nexport * from './components';\n"]}